[
  {
    "path": ".gitattributes",
    "content": "###############################################################################\n# Set default behavior to automatically normalize line endings.\n###############################################################################\n* text=auto\n\n###############################################################################\n# Set default behavior for command prompt diff.\n#\n# This is need for earlier builds of msysgit that does not have it on by\n# default for csharp files.\n# Note: This is only used by command line\n###############################################################################\n#*.cs     diff=csharp\n\n###############################################################################\n# Set the merge driver for project and solution files\n#\n# Merging from the command prompt will add diff markers to the files if there\n# are conflicts (Merging from VS is not affected by the settings below, in VS\n# the diff markers are never inserted). Diff markers may cause the following \n# file extensions to fail to load in VS. An alternative would be to treat\n# these files as binary and thus will always conflict and require user\n# intervention with every merge. To do so, just uncomment the entries below\n###############################################################################\n#*.sln       merge=binary\n#*.csproj    merge=binary\n#*.vbproj    merge=binary\n#*.vcxproj   merge=binary\n#*.vcproj    merge=binary\n#*.dbproj    merge=binary\n#*.fsproj    merge=binary\n#*.lsproj    merge=binary\n#*.wixproj   merge=binary\n#*.modelproj merge=binary\n#*.sqlproj   merge=binary\n#*.wwaproj   merge=binary\n\n###############################################################################\n# behavior for image files\n#\n# image files are treated as binary by default.\n###############################################################################\n#*.jpg   binary\n#*.png   binary\n#*.gif   binary\n\n###############################################################################\n# diff behavior for common document formats\n# \n# Convert binary document formats to text before diffing them. This feature\n# is only available from the command line. Turn it on by uncommenting the \n# entries below.\n###############################################################################\n#*.doc   diff=astextplain\n#*.DOC   diff=astextplain\n#*.docx  diff=astextplain\n#*.DOCX  diff=astextplain\n#*.dot   diff=astextplain\n#*.DOT   diff=astextplain\n#*.pdf   diff=astextplain\n#*.PDF   diff=astextplain\n#*.rtf   diff=astextplain\n#*.RTF   diff=astextplain\n"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbuild/\nbld/\n[Bb]in/\n[Oo]bj/\n\n# Visual Studo 2015 cache/options directory\n.vs/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n*.cachefile\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding addin-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# TODO: Comment the next line if you want to checkin your web deploy settings \n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n# **/packages/*\n# except build/, which is used as an MSBuild target.\n!**/packages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/packages/repositories.config\n\n# Windows Azure Build Output\ncsx/\n*.build.csdef\n\n# Windows Store app package directory\nAppPackages/\n\n# Others\n*.[Cc]ache\nClientBin/\n[Ss]tyle[Cc]op.*\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.pfx\n*.publishsettings\nnode_modules/\nbower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\n*.mdf\n*.ldf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.classpath\n.settings/\n.loadpath\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# PDT-specific\n.buildpath\n\n\n#################\n## Visual Studio\n#################\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n\n[Dd]ebug/\n[Rr]elease/\nx64/\nbuild/\n[Bb]in/\n[Oo]bj/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n*_i.c\n*_p.c\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.log\n*.scc\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n*.cachefile\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# NCrunch\n*.ncrunch*\n.*crunch*.local.xml\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.Publish.xml\n*.pubxml\n*.publishproj\n\n# NuGet Packages Directory\n## TODO: If you have NuGet Package Restore enabled, uncomment the next line\n#packages/\n\n# Windows Azure Build Output\ncsx\n*.build.csdef\n\n# Windows Store app package directory\nAppPackages/\n\n# Others\nsql/\n*.Cache\nClientBin/\n[Ss]tyle[Cc]op.*\n~$*\n*~\n*.dbmdl\n*.[Pp]ublish.xml\n*.pfx\n*.publishsettings\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\nApp_Data/*.mdf\nApp_Data/*.ldf\n\n#############\n## Windows detritus\n#############\n\n# Windows image file caches\nThumbs.db\nehthumbs.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Mac crap\n.DS_Store\n\n\n#############\n## Python\n#############\n\n*.py[cod]\n\n# Packages\n*.egg\n*.egg-info\ndist/\nbuild/\neggs/\nparts/\nvar/\nsdist/\ndevelop-eggs/\n.installed.cfg\n\n# Installer logs\npip-log.txt\n\n# Unit test / coverage reports\n.coverage\n.tox\n\n#Translations\n*.mo\n\n#Mr Developer\n.mr.developer.cfg\n**/packages/\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/ActionCenterDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ActionCenterDemo</RootNamespace>\n    <AssemblyName>ActionCenterDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Template10_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\ApplicationBase.cs\" />\n    <Compile Include=\"Common\\MVVM.cs\" />\n    <Compile Include=\"Converters\\BoolToColorConverter.cs\" />\n    <Compile Include=\"Converters\\CountToVisibilityConverter.cs\" />\n    <Compile Include=\"Models\\MessageItem.cs\" />\n    <Compile Include=\"Models\\ToastParams.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\MessageItemRepository.cs\" />\n    <Compile Include=\"Services\\DispatcherService.cs\" />\n    <Compile Include=\"Services\\NavigationService.cs\" />\n    <Compile Include=\"Services\\TileServices.cs\" />\n    <Compile Include=\"ViewModels\\DetailPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"Views\\DetailPage.xaml.cs\">\n      <DependentUpon>DetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"Template10_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Hen-01.scale-100.png\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"GalaSoft.MvvmLight\">\n      <HintPath>..\\packages\\MvvmLightLibs.5.0.2.0\\lib\\netcore451\\GalaSoft.MvvmLight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"GalaSoft.MvvmLight.Extras\">\n      <HintPath>..\\packages\\MvvmLightLibs.5.0.2.0\\lib\\netcore451\\GalaSoft.MvvmLight.Extras.dll</HintPath>\n    </Reference>\n    <Reference Include=\"GalaSoft.MvvmLight.Platform\">\n      <HintPath>..\\packages\\MvvmLightLibs.5.0.2.0\\lib\\netcore451\\GalaSoft.MvvmLight.Platform.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Practices.ServiceLocation\">\n      <HintPath>..\\packages\\CommonServiceLocator.1.3\\lib\\portable-net4+sl5+netcore45+wpa81+wp8\\Microsoft.Practices.ServiceLocation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"Styles\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"Views\\DetailPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\ActionCenterHistoryChangedTask\\ActionCenterHistoryChangedTask.csproj\">\n      <Project>{5680fb19-c161-46d2-a1ae-115954e020cf}</Project>\n      <Name>ActionCenterHistoryChangedTask</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/App.xaml",
    "content": "<common:ApplicationBase \n    x:Class=\"ActionCenterDemo.App\" \n    xmlns:common=\"using:ActionCenterDemo.Common\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n    xmlns:local=\"using:ActionCenterDemo\" \n    xmlns:converters =\"using:ActionCenterDemo.Converters\"\n    RequestedTheme=\"Dark\">\n\n    <Application.Resources>\n        <ResourceDictionary>\n            <converters:BoolToColorConverter x:Key=\"BoolToColorConverter\"/>\n            <converters:CountToVisibilityConverter x:Key=\"CountToVisibilityConverter\"/>\n        </ResourceDictionary>\n    </Application.Resources>\n\n</common:ApplicationBase>"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/App.xaml.cs",
    "content": "﻿using System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace ActionCenterDemo\n{\n    sealed partial class App : Common.ApplicationBase\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        protected override Task OnLaunchedAsync(LaunchActivatedEventArgs e)\n        {\n            // first launch navigation\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n\n            return base.OnLaunchedAsync(e);\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Common/ApplicationBase.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace ActionCenterDemo.Common\n{\n  // ApplicationBase is a drop-in replacement of Application\n  // - OnInitializeAsync is the first in the pipeline, if launching\n  // - OnLaunched[*]Async is required, and second in the pipeline\n  // - OnActivated[*]Async is first in the pipeline, if activating\n  // - NavigationService is an automatic property of this class\n  public abstract partial class ApplicationBase : Application\n  {\n    public ApplicationBase()\n    {\n      this.Resuming += (s, e) => HandleResuming(s, e);\n      this.Suspending += async (s, e) =>\n      {\n        var deferral = e.SuspendingOperation.GetDeferral();\n        this.NavigationService.Suspending();\n        await HandleSuspendingAsync(s, e);\n        deferral.Complete();\n      };\n    }\n\n    public Services.NavigationService NavigationService { get; private set; }\n\n    protected virtual void HandleResuming(object s, object e) { }\n    protected virtual Task HandleSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n    public Frame RootFrame { get; set; }\n    protected Func<SplashScreen, Page> SplashFactory { get; set; }\n    protected virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n\n    protected virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnActivatedByProtocolAsync(ProtocolActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnActivatedByPrimaryTileAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnActivatedBySecondaryTileAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnActivatedByToastNotificationAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n\n    protected override async void OnActivated(IActivatedEventArgs e)\n    {\n      switch (e.Kind)\n      {\n        // See http://go.microsoft.com/fwlink/?LinkID=288842\n        case ActivationKind.Launch:\n          var args = e as LaunchActivatedEventArgs;\n          if (args.TileId == \"App\" && !args.Arguments.Any())\n          { await OnActivatedByPrimaryTileAsync(args); }\n          else if (args.TileId == \"App\" && args.Arguments.Any())\n          { await OnActivatedBySecondaryTileAsync(args); }\n          else\n          { await OnActivatedByToastNotificationAsync(args); }\n          break;\n        case ActivationKind.Protocol:\n        case ActivationKind.ProtocolForResults:\n          await OnActivatedByProtocolAsync(e as ProtocolActivatedEventArgs);\n          break;\n        default:\n          break;\n      }\n      // this is to handle any other type of activation\n      await this.OnActivatedAsync(e);\n      Window.Current.Activate();\n    }\n\n    protected virtual Task OnLaunchedAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnLaunchedByProtocolAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnLaunchedByPrimaryTileAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnLaunchedBySecondaryTileAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n    protected virtual Task OnLaunchedByToastNotificationAsync(LaunchActivatedEventArgs e) { return Task.FromResult<object>(null); }\n\n    protected override async void OnLaunched(LaunchActivatedEventArgs e)\n    {\n      if (this.SplashFactory != null)\n      {\n        Window.Current.Content = this.SplashFactory(e.SplashScreen);\n        Window.Current.Activate();\n        Window.Current.Content = null;\n      }\n\n      this.RootFrame = this.RootFrame ?? new Frame();\n      this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n      this.NavigationService = new Services.NavigationService(this.RootFrame);\n\n      // the user may override to set custom content\n      await OnInitializeAsync();\n\n      // if the user didn't set custom content, use frame\n      if (Window.Current.Content == null)\n      { Window.Current.Content = this.RootFrame; }\n\n      if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n      {\n        try { /* TODO: restore state */ }\n        catch { /* TODO: handle fail */ }\n      }\n      else\n      {\n        switch (e.Kind)\n        {\n          // See http://go.microsoft.com/fwlink/?LinkID=288842\n          case ActivationKind.Launch:\n            if (e.TileId == \"App\" && !e.Arguments.Any())\n            { await OnLaunchedByPrimaryTileAsync(e); }\n            else if (e.TileId == \"App\" && e.Arguments.Any())\n            { await OnLaunchedByToastNotificationAsync(e); }\n            else\n            { await OnLaunchedBySecondaryTileAsync(e); }\n            break;\n          case ActivationKind.ProtocolForResults:\n          case ActivationKind.Protocol:\n            await OnLaunchedByProtocolAsync(e);\n            break;\n          default:\n            break;\n        }\n        // this is to handle any other type of launch\n        await this.OnLaunchedAsync(e);\n      }\n      Window.Current.Activate();\n    }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Common/MVVM.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ActionCenterDemo.Common\n{\n  // this is an MVVM abstraction, allowing for any MVVM framework to be used\n  // the default implementation is MVVM light, but it is not required\n\n  // command is an implementation ICommand for buttons\n  public class Command\n      : GalaSoft.MvvmLight.Command.RelayCommand\n  {\n    public Command(Action execute) : base(execute) { }\n    public Command(Action execute, Func<bool> canExecute) : base(execute, canExecute) { }\n  }\n\n  // command<T> is an implementation of ICommand with parameters for buttons\n  public class Command<T>\n      : GalaSoft.MvvmLight.Command.RelayCommand<T>\n  {\n    public Command(Action<T> execute) : base(execute) { }\n    public Command(Action<T> execute, Func<T, bool> canExecute) : base(execute, canExecute) { }\n  }\n\n  // viewmodelbase enables To/From, called by NavigationService\n  public abstract class ViewModelBase\n      : GalaSoft.MvvmLight.ViewModelBase\n  {\n    public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { }\n    public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { }\n  }\n\n  // imessage is what messenger sends\n  public interface IMessage { }\n\n  // message is a generic implementation of imessage\n  public class Message<T>\n      : IMessage\n  { public T Payload { get; set; } }\n\n  // use messenger to communicate between viewmodels\n  public class Messenger : GalaSoft.MvvmLight.Messaging.Messenger\n  {\n    public void Subscribe<T>(object recipient, Action<T> action)\n        where T : IMessage\n    { base.Register<T>(recipient, action); }\n\n    public void Unsubscribe<T>(object recipient)\n        where T : IMessage\n    { base.Unregister<T>(recipient); }\n\n    public void Publish<T>(T message)\n        where T : IMessage\n    { base.Send<T>(message); }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Converters/BoolToColorConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI;\nusing Windows.UI.Xaml.Data;\n\nnamespace ActionCenterDemo.Converters\n{\n    public class BoolToColorConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Boolean)\n            {\n                return (bool)value ? Colors.Blue : Colors.Red;\n            };\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Converters/CountToVisibilityConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace ActionCenterDemo.Converters\n{\n    public class CountToVisibilityConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            return (int)value == 0 ? Visibility.Collapsed : Visibility.Visible;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Models/MessageItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ActionCenterDemo.Models\n{\n  public sealed class MessageItem\n  {\n    public string ID { get; set; }\n    public string Title { get; set; }\n    public string Body { get; set; }\n    public bool IsRead { get; set; }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Models/ToastParams.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ActionCenterDemo\n{\n    class ToastParams\n    {\n        public string type { get; set; }\n        public string param1 { get; set; }\n        public string param2 { get; set; }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"6661385f-3d00-499d-8a85-165a46aba674\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"6661385f-3d00-499d-8a85-165a46aba674\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Template10</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.10069\" MaxVersionTested=\"10.0.0.10069\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Template10.App\">\n      <uap:VisualElements\n        DisplayName=\"Action Center Demo\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Action Center Demo\"\n        BackgroundColor=\"teal\"\n        ToastCapable=\"true\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        <uap:LockScreen Notification=\"badge\" BadgeLogo=\"Assets\\SmallLogo.png\"/>\n      </uap:VisualElements>\n      <Extensions>\n        <Extension Category=\"windows.backgroundTasks\" EntryPoint=\"ActionCenterHistoryChangedTask.ActionCenterChangedBackgroundTask\">\n          <BackgroundTasks>\n            <Task Type=\"systemEvent\" />\n          </BackgroundTasks>\n        </Extension>\n        <!--This next bg task definition is temporary until Run on Lock Screen requirement goes away-->\n        <Extension Category=\"windows.backgroundTasks\" EntryPoint=\"WindowsRuntimeComponent1.Class1\">\n          <BackgroundTasks>\n            <Task Type=\"pushNotification\" />\n          </BackgroundTasks>\n        </Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ActionCenterDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ActionCenterDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Repositories/MessageItemRepository.cs",
    "content": "﻿using ActionCenterDemo.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Storage;\n\nnamespace ActionCenterDemo.Repositories\n{\n    class MessageItemRepository\n    {\n        private List<MessageItem> _messageItems;\n\n        private MessageItemRepository()\n        {\n            LoadData();\n        }\n\n        public void LoadData()\n        {\n            if (!ApplicationData.Current.LocalSettings.Values.ContainsKey(\"data\"))\n            {\n                ApplicationData.Current.LocalSettings.Values[\"data\"] =\n                    Newtonsoft.Json.JsonConvert.SerializeObject(new List<MessageItem>());\n            }\n            var data = ApplicationData.Current.LocalSettings.Values[\"data\"] as string;\n            _messageItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageItem>>(data);\n        }\n\n        private static MessageItemRepository _instance;\n\n        public static MessageItemRepository GetInstance()\n        {\n            if (_instance == null)\n            {\n                _instance = new MessageItemRepository();\n            }\n            return _instance;\n        }\n\n        public IEnumerable<Models.MessageItem> GetAllMessageItems()\n        {\n            return _messageItems;\n        }\n\n        public async Task AddAsync(MessageItem messageItem)\n        {\n            _messageItems.Add(messageItem);\n            await PersistAsync();\n        }\n        public async Task RemoveAsync(string iD)\n        {\n            var target = (from m in _messageItems\n                          where m.ID == iD\n                          select m).FirstOrDefault();\n            if (target != null) _messageItems.Remove(target);\n            await PersistAsync();\n        }\n\n        public async Task UpdateAsync(MessageItem messageItem)\n        {\n            var target = (from m in _messageItems\n                          where m.ID == messageItem.ID\n                          select m).FirstOrDefault();\n            if (target != null)\n            {\n                int idx = _messageItems.IndexOf(target);\n                _messageItems.Remove(target);\n                _messageItems.Insert(idx, messageItem);\n            }\n            await PersistAsync();\n        }\n\n        public IEnumerable<MessageItem> Find(Func<MessageItem, bool> predicate)\n        {\n            return _messageItems.Where(predicate);\n        }\n\n        private async Task PersistAsync()\n        {\n            ApplicationData.Current.LocalSettings.Values[\"data\"] = Newtonsoft.Json.JsonConvert.SerializeObject(_messageItems);\n        }\n\n        public void SaveChanges()\n        {\n            ApplicationData.Current.LocalSettings.Values[\"data\"] = Newtonsoft.Json.JsonConvert.SerializeObject(_messageItems);\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Services/DispatcherService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ActionCenterDemo.Services\n{\n    public static class DispatchService\n    {\n        public static async void InvokeAsync(Action action)\n        {\n            var dispatchObject = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;\n            if (dispatchObject == null || dispatchObject.HasThreadAccess)\n            {\n                action();\n            }\n            else\n            {\n                await dispatchObject.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,\n                    () => action.Invoke());\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Services/NavigationService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ActionCenterDemo.Services\n{\n  public class NavigationService\n  {\n    NavigationFacade _frame;\n\n    string LastNavigationParameter { get; set; /* TODO: persist */ }\n\n    string LastNavigationType { get; set; /* TODO: persist */ }\n\n    public NavigationService(Frame frame)\n    {\n      _frame = new NavigationFacade(frame);\n      _frame.Navigating += (s, e) => NavigateFrom(false);\n      _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n    }\n\n    void NavigateFrom(bool suspending)\n    {\n      var page = _frame.Content as FrameworkElement;\n      if (page != null)\n      {\n        var viewmodel = page.DataContext as Common.ViewModelBase;\n        if (viewmodel != null)\n        {\n          // TODO: get existing state\n          viewmodel.OnNavigatedFrom(null, suspending);\n        }\n      }\n    }\n\n    void NavigateTo(NavigationMode mode, string parameter)\n    {\n      LastNavigationParameter = parameter;\n      LastNavigationType = _frame.Content.GetType().FullName;\n\n      if (mode == NavigationMode.New)\n      {\n        // TODO: clear existing state\n      }\n\n      var page = _frame.Content as FrameworkElement;\n      if (page != null)\n      {\n        var viewmodel = page.DataContext as Common.ViewModelBase;\n        if (viewmodel != null)\n        {\n          // TODO: fetch state\n          viewmodel.OnNavigatedTo(parameter, mode, null);\n        }\n      }\n    }\n\n    public bool Navigate(Type page, string parameter = null)\n    {\n      if (page == null)\n        throw new ArgumentNullException(\"page\");\n      if (page.FullName.Equals(LastNavigationType) && parameter == LastNavigationParameter)\n        return false;\n      return _frame.Navigate(page, parameter);\n    }\n\n    public void RestoreSavedNavigation() { /* TODO */ }\n\n    public void GoBack() { _frame.GoBack(); }\n\n    public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n    public void GoForward() { _frame.GoForward(); }\n\n    public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n    public void ClearHistory() { _frame.SetNavigationState(\"1,0\"); }\n\n    public void Suspending() { NavigateFrom(true); }\n\n    public void Show(SettingsFlyout flyout, string parameter = null)\n    {\n      if (flyout == null)\n        throw new ArgumentNullException(\"flyout\");\n      var viewmodel = flyout.DataContext as Common.ViewModelBase;\n      if (viewmodel != null)\n        viewmodel.OnNavigatedTo(parameter, NavigationMode.New, null);\n      flyout.Show();\n    }\n\n    public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n    public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n  }\n\n  public class NavigationFacade\n  {\n    public NavigationFacade(Frame frame)\n    {\n      _frame = frame;\n      _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n    }\n\n    #region frame facade\n\n    readonly Frame _frame;\n\n    public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n    public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n    public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n    public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n    public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n    public void GoBack() { _frame.GoBack(); }\n\n    public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n    public void GoForward() { _frame.GoForward(); }\n\n    public object Content { get { return _frame.Content; } }\n\n    public Type CurrentPageType { get; internal set; }\n\n    public string CurrentPageParam { get; internal set; }\n\n    public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n    public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n    public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n    #endregion\n\n    readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n    public event EventHandler<NavigationEventArgs> Navigated\n    {\n      add\n      {\n        if (!_navigatedEventHandlers.Contains(value))\n        {\n          _navigatedEventHandlers.Add(value);\n          if (_navigatedEventHandlers.Count == 1)\n            _frame.Navigated += FacadeNavigatedEventHandler;\n        }\n      }\n\n      remove\n      {\n        if (_navigatedEventHandlers.Contains(value))\n        {\n          _navigatedEventHandlers.Remove(value);\n          if (_navigatedEventHandlers.Count == 0)\n            _frame.Navigated -= FacadeNavigatedEventHandler;\n        }\n      }\n    }\n\n    void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n    {\n      foreach (var handler in _navigatedEventHandlers)\n      {\n        var args = new NavigationEventArgs()\n        {\n          NavigationMode = e.NavigationMode,\n          Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n        };\n        handler(this, args);\n      }\n      this.CurrentPageType = e.SourcePageType;\n      this.CurrentPageParam = e.Parameter as String;\n    }\n\n    readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n    public event EventHandler Navigating\n    {\n      add\n      {\n        if (!_navigatingEventHandlers.Contains(value))\n        {\n          _navigatingEventHandlers.Add(value);\n          if (_navigatingEventHandlers.Count == 1)\n            _frame.Navigating += FacadeNavigatingCancelEventHandler;\n        }\n      }\n      remove\n      {\n        if (_navigatingEventHandlers.Contains(value))\n        {\n          _navigatingEventHandlers.Remove(value);\n          if (_navigatingEventHandlers.Count == 0)\n            _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n        }\n      }\n    }\n\n    private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n    {\n      foreach (var handler in _navigatingEventHandlers)\n      {\n        handler(this, new EventArgs());\n      }\n    }\n  }\n\n  public class NavigationEventArgs : EventArgs\n  {\n    public NavigationMode NavigationMode { get; set; }\n\n    public string Parameter { get; set; }\n  }\n}\n\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Services/TileServices.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Data.Xml.Dom;\nusing Windows.UI.Notifications;\n\nnamespace ActionCenterDemo.Services\n{\n    public class TileServices\n    {\n        static public void SetBadgeCountOnTile(int count)\n        {\n            // Update the badge on the real tile\n            XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);\n\n            XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode(\"/badge\");\n            badgeElement.SetAttribute(\"value\", count.ToString());\n\n            BadgeNotification badge = new BadgeNotification(badgeXml);\n            BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/ViewModels/DetailPageViewModel.cs",
    "content": "﻿using System;\nusing ActionCenterDemo.Common;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI;\nusing Windows.UI.Xaml.Navigation;\nusing Windows.UI.Xaml.Media;\nusing System.Diagnostics;\nusing Windows.UI.Notifications;\nusing ActionCenterDemo.Services;\n\nnamespace ActionCenterDemo.ViewModels\n{\n    public class DetailPageViewModel : Common.ViewModelBase\n    {\n        private Repositories.MessageItemRepository _repository;\n\n        public DetailPageViewModel()\n        {\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n                LoadDesignData();\n        }\n\n        public override async void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            Debug.WriteLine(\"In DetailPageViewModel OnNavigatedTo\");\n            _repository = Repositories.MessageItemRepository.GetInstance();\n            await LoadRuntimeDataAsync(parameter);\n\n            // Since we are viewing this item, set its status to 'Read'\n            this.MessageItem.IsRead = true;\n            await _repository.UpdateAsync(this.MessageItem);\n\n            #region Remove corresponding item from Action Center\n            // Also remove it from the Action Center if it is there\n            //ToastNotificationManager.History.Remove(parameter);\n            #endregion\n\n            #region Sync Tile badge count with unread toasts count from Action Center \n            //// Set the Badge count on the tile\n            //var toasts = ToastNotificationManager.History.GetHistory();\n            //if (toasts != null)\n            //{\n            //    var count = toasts.Count();\n            //    // Sync up the count on the tile\n            //    TileServices.SetBadgeCountOnTile(count);\n            //}\n            #endregion\n        }\n\n        private void LoadDesignData()\n        {\n            this.MessageItem = new Models.MessageItem { ID = \"1\", Body = \"Design Data Body\", Title = \"Design Title\", IsRead = false };\n        }\n\n        private async Task LoadRuntimeDataAsync(string parameter)\n        {\n            _repository.GetAllMessageItems();\n            this.MessageItem = _repository.Find(m => m.ID == parameter).FirstOrDefault();\n        }\n\n        private Models.MessageItem _messageItem;\n        public Models.MessageItem MessageItem\n        {\n            get { return _messageItem; }\n            set\n            {\n                Set(ref _messageItem, value);\n            }\n        }\n\n        public Common.Command GoBackCommand\n        {\n            get { return new Common.Command(() => { (App.Current as Common.ApplicationBase).NavigationService.GoBack(); }); }\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/ViewModels/MainPageViewModel.cs",
    "content": "﻿using ActionCenterDemo.Models;\nusing ActionCenterDemo.Services;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\nusing Windows.ApplicationModel.Core;\nusing Windows.Data.Xml.Dom;\nusing Windows.UI.Core;\nusing Windows.UI.Notifications;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ActionCenterDemo.ViewModels\n{\n    class MainPageViewModel : Common.ViewModelBase\n    {\n        public MainPageViewModel()\n        {\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                LoadDesigntimeData();\n            }\n            else\n            {\n                this.PropertyChanged += (s, e) => { this.RefreshCommand.RaiseCanExecuteChanged(); };\n            }\n        }\n\n        public override async void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            Debug.WriteLine(\"In MainPageViewModel OnNavigatedTo\");\n            await LoadRuntimeDataAsync();\n            IsTaskRegistered();\n        }\n\n        private void LoadDesigntimeData()\n        {\n            this.MessageItems.Clear();\n            this.MessageItems.Add(new Models.MessageItem { ID = \"1\", Body = \"Design Data Body\", Title = \"Design Title\", IsRead = false });\n            this.MessageItems.Add(new Models.MessageItem { ID = \"2\", Body = \"Design Data Body 2\", Title = \"Design Title 2\", IsRead = true });\n            this.MessageItems.Add(new Models.MessageItem { ID = \"3\", Body = \"Design Data Body 3\", Title = \"Design Title 3\", IsRead = false });\n            this.MessageItems.Add(new Models.MessageItem { ID = \"4\", Body = \"Design Data Body 4\", Title = \"Design Title 4\", IsRead = true });\n\n            this.Selected = (this.MessageItems.Any()) ? MessageItems.First() : default(Models.MessageItem);\n        }\n\n        private Repositories.MessageItemRepository _repository;\n\n        private async Task LoadRuntimeDataAsync()\n        {\n            _repository = Repositories.MessageItemRepository.GetInstance();\n            _repository.LoadData();\n            this.MessageItems.Clear();\n            foreach (var messageItem in _repository.GetAllMessageItems())\n            {\n                this.MessageItems.Add(messageItem);\n            }\n\n            // Set the count on the simulated tile \n            int unreadCount = (from m in this.MessageItems\n                                where !m.IsRead\n                                select m).Count();\n            this.TileSimulationBadgeCount = unreadCount;\n        }\n\n        private Models.MessageItem _selected;\n        public Models.MessageItem Selected\n        {\n            get { return _selected; }\n            set\n            {\n                Set(ref _selected, value);\n                if (value != null)\n                {\n                    this.Selected = null;\n                    // navigate to details page\n                    if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n                    {\n                        var nav = (App.Current as App).NavigationService;\n                        nav.Navigate(typeof(Views.DetailPage), value.ID);\n                    }\n                }\n            }\n        }\n\n        public ObservableCollection<Models.MessageItem> MessageItems { get; } = new ObservableCollection<Models.MessageItem>();\n\n        private bool _busy;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private int _tileSimulationBadgeCount;\n        public int TileSimulationBadgeCount { get { return _tileSimulationBadgeCount; } set { Set(ref _tileSimulationBadgeCount, value); } }\n\n        private Common.Command _refreshCommand;\n        public Common.Command RefreshCommand\n        {\n            get\n            {\n                return _refreshCommand ?? (_refreshCommand = new Common.Command(async () =>\n                {\n                    this.Busy = true;\n                    await LoadRuntimeDataAsync();\n                    this.Busy = false;\n                }, () => { return !this.Busy; }));\n            }\n        }\n\n        private Common.Command _deliverToastCommand;\n        public Common.Command DeliverToastCommand\n        {\n            get\n            {\n                return _deliverToastCommand ?? (_deliverToastCommand = new Common.Command(async () =>\n                {\n                    this.Busy = true;\n                    // Generate a new message data item - this \n                    // Simulates a toast coming in from your cloud backend\n                    var msgItem = new MessageItem()\n                    {\n                        ID = Guid.NewGuid().ToString().Split('-')[0].ToString(),\n                        Title = \"Hello Msg #\" + System.Environment.TickCount,\n                        Body = \"This is a new message created at \" + System.DateTime.Now.ToString(\"t\"),\n                        IsRead = false\n                    };\n\n                    // Send a toast notification to alert the user of the new item\n                    DeliverToast(msgItem);\n                    // Update the Main Tile\n                    SetBadgeCountOnTileandSim();\n\n                    // Save the new messageItem to our local storage\n                    await _repository.AddAsync(msgItem);\n\n                    // Update our list of MessageItems shown on our UI\n                    await LoadRuntimeDataAsync();\n\n                    this.Busy = false;\n                }, () => { return !this.Busy; }));\n            }\n        }\n\n        private void DeliverToast(MessageItem msgItem)\n        {\n            // Send the Toast Notification informing the user of a new message\n            ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;\n            XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);\n\n            XmlNodeList toastTextElements = toastXml.GetElementsByTagName(\"text\");\n            toastTextElements[0].AppendChild(toastXml.CreateTextNode(msgItem.Title));\n\n            IXmlNode toastNode = toastXml.SelectSingleNode(\"/toast\");\n\n            ((XmlElement)toastNode).SetAttribute(\"launch\", \"{\\\"type\\\":\\\"toast\\\",\\\"param1\\\":\\\"\" + msgItem.ID + \"\\\",\\\"param2\\\":\\\"0\\\"}\");\n\n            ToastNotification toast = new ToastNotification(toastXml);\n\n            // Tag the Toast with the data item ID\n            // Note that Toasts sent from servers set the Tag through an HTTP Header\n            toast.Tag = msgItem.ID;\n\n            ToastNotificationManager.CreateToastNotifier().Show(toast);\n        }\n\n        private Common.Command _resetAllCountsCommand;\n\n        /// <summary>\n        /// Gets the ToastNotificationManager History and ensures the badge count\n        /// on the Tile simulation on the UI and on the actual Tile matches\n        /// the true count of unread notifications in Action Center \n        /// </summary>\n        public Common.Command ResetAllCountsCommand\n        {\n            get\n            {\n                return _resetAllCountsCommand ?? (_resetAllCountsCommand = new Common.Command(async () =>\n                {\n                    this.Busy = true;\n\n                    // Set count on Tile and on our Simulation\n                    SetBadgeCountOnTileandSim();\n\n                    // Set 'Read' status of local data items to match unactioned Notifications\n                    foreach (var item in MessageItems)\n                    {\n                        item.IsRead = true;\n                    }\n                    var toasts = ToastNotificationManager.History.GetHistory();\n                    if (toasts != null)\n                    {\n                        foreach (var item in toasts)\n                        {\n                            var launchAttr = item.Content.SelectSingleNode(\"/toast/@launch\").NodeValue.ToString();\n                            dynamic d = Newtonsoft.Json.Linq.JObject.Parse(launchAttr);\n                            var msgID = (string)d.param1;\n                            var dataItem = MessageItems.Where(p => p.ID == msgID).SingleOrDefault();\n                            if (dataItem != null)\n                            {\n                                dataItem.IsRead = false;\n                            }\n                        }\n                    }\n                    await LoadRuntimeDataAsync();\n                    this.Busy = false;\n                }, () => { return !this.Busy; }));\n            }\n        }\n\n        private void SetBadgeCountOnTileandSim()\n        {\n            // Get the toast history from Notification Center\n            var toasts = ToastNotificationManager.History.GetHistory();\n            if (toasts != null)\n            {\n                var count = toasts.Count();\n\n                // Sync up the count on the tile\n                TileServices.SetBadgeCountOnTile(count);\n\n                //...and on our simulation on the UI\n                this.TileSimulationBadgeCount = count;\n            }\n        }\n\n        #region REGISTER_BG_TASK\n        private Common.Command _registerBGTaskCommand;\n\n        public Common.Command RegisterBGTaskCommand\n        {\n            get\n            {\n                return _registerBGTaskCommand ?? (_registerBGTaskCommand = new Common.Command(async () =>\n                {\n                    this.Busy = true;\n                    await Register();\n                    this.Busy = false;\n                }, () => { return !this.Busy; }));\n            }\n        }\n\n        private readonly string ActionCenterHistoryChangedTaskName = \"ActionCenterHistoryChangedTask\";\n        public async Task Register()\n        {\n            if (!IsTaskRegistered())\n            {\n                var builder = new BackgroundTaskBuilder();\n\n                builder.Name = ActionCenterHistoryChangedTaskName;\n                builder.TaskEntryPoint = \"ActionCenterHistoryChangedTask.ActionCenterChangedBackgroundTask\";\n                builder.SetTrigger(new ToastNotificationHistoryChangedTrigger());\n\n                BackgroundExecutionManager.RemoveAccess();\n                BackgroundAccessStatus x = await BackgroundExecutionManager.RequestAccessAsync();\n                BackgroundTaskRegistration mytask = builder.Register();\n                mytask.Completed += Mytask_Completed;\n            }\n        }\n\n        private async void Mytask_Completed(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args)\n        {\n            // Background task has completed - refresh our data\n            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(\n                CoreDispatcherPriority.Normal, \n                async () => await LoadRuntimeDataAsync()\n                );\n        }\n\n        public bool IsTaskRegistered()\n        {\n            var taskRegistered = false;\n            var entry = BackgroundTaskRegistration.AllTasks.FirstOrDefault(\n                kvp => kvp.Value.Name == ActionCenterHistoryChangedTaskName);\n\n            if (entry.Value != null)\n            {\n                taskRegistered = true;\n\n                // Hook up the completed event handler again\n                entry.Value.Completed += Mytask_Completed;\n            }\n\n            return taskRegistered;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Views/DetailPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ActionCenterDemo.Views.DetailPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ActionCenterDemo.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewmodels=\"using:ActionCenterDemo.ViewModels\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <viewmodels:DetailPageViewModel />\n    </Page.DataContext>\n\n    <Grid Background=\"Black\">\n\n        <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Top\" Margin=\"12,12,0,0\">\n            <Button Style=\"{StaticResource NavigationBackButtonNormalStyle}\" VerticalAlignment=\"Center\" Command=\"{Binding GoBackCommand}\" />\n            <TextBlock Style=\"{StaticResource HeaderTextBlockStyle}\" Text=\"{Binding MessageItem.Title, FallbackValue='Not found'}\" Margin=\"20,0\" />\n        </StackPanel>\n      \n        <TextBlock Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"20\" Text=\"{Binding MessageItem.Body}\" Margin=\"60, 100\" />\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Views/DetailPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace ActionCenterDemo.Views\n{\n  public sealed partial class DetailPage : Page\n  {\n    public DetailPage()\n    {\n      this.InitializeComponent();\n    }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ActionCenterDemo.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ActionCenterDemo.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:ActionCenterDemo.ViewModels\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Dark\">\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <RelativePanel>\n\n            <TextBlock x:Name=\"InfoTextBlock\" HorizontalAlignment=\"Left\" Height=\"50\" Margin=\"20,20,0,0\" TextWrapping=\"Wrap\" \n                   Text=\"What the tile should look like on Start right now\" VerticalAlignment=\"Top\" \n                   Width=\"140\" FontSize=\"12\" TextAlignment=\"Center\"/>\n            <Canvas x:Name=\"BadgeCanvas\" Margin=\"10,60,0,0\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"150\">\n                <Rectangle Fill=\"#FF03AEAE\" HorizontalAlignment=\"Left\" Height=\"150\" Stroke=\"Black\" VerticalAlignment=\"Top\" Width=\"150\"/>\n                <Image HorizontalAlignment=\"Left\" Height=\"134\" VerticalAlignment=\"Top\" Width=\"150\" Source=\"ms-appx:///Assets/Hen-01.png\" Canvas.Top=\"16\"/>\n                <Ellipse x:Name=\"circle\" Fill=\"Black\" HorizontalAlignment=\"Left\" Height=\"29\" Stroke=\"Black\" \n                     VerticalAlignment=\"Top\" Width=\"29\" Canvas.Left=\"107\" Canvas.Top=\"13\" \n                     Visibility=\"{Binding TileSimulationBadgeCount, Converter={StaticResource CountToVisibilityConverter}}\"/>\n                <TextBlock x:Name=\"BadgeCount\" HorizontalAlignment=\"Center\" Height=\"16\" \n                       TextWrapping=\"Wrap\" Text=\"{Binding TileSimulationBadgeCount}\" Foreground=\"White\"\n                       VerticalAlignment=\"Center\" Width=\"29\" FontSize=\"16\" TextAlignment=\"Center\" \n                       Canvas.Left=\"106\" Canvas.Top=\"19\" \n                       Visibility=\"{Binding TileSimulationBadgeCount, Converter={StaticResource CountToVisibilityConverter}}\"/>\n            </Canvas>\n\n            <StackPanel Orientation=\"Vertical\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" \n                    RelativePanel.RightOf=\"BadgeCanvas\" Margin=\"4,60,0,0\">\n                <Button x:Name=\"DeliverToastButton\" Content=\"Send a toast\" \n                    HorizontalAlignment=\"Center\" VerticalAlignment=\"Top\" Width=\"140\" Height=\"40\" FontSize=\"12\"\n                    Command=\"{Binding DeliverToastCommand}\" />\n                <Button x:Name=\"button1\" Content=\"Reset all\" \n                    HorizontalAlignment=\"Center\" Margin=\"0,10,0,0\" VerticalAlignment=\"Top\" Width=\"140\" Height=\"40\" FontSize=\"12\"\n                    Command=\"{Binding ResetAllCountsCommand}\"/>\n                <Button x:Name=\"button3\" Content=\"Register Action Center &#xA;Changed Task\" \n                    HorizontalAlignment=\"Center\" Margin=\"0,10,0,0\" VerticalAlignment=\"Top\" Width=\"140\" FontSize=\"12\"\n                    Command=\"{Binding RegisterBGTaskCommand}\"/>\n            </StackPanel>\n        </RelativePanel>\n\n        <GridView ItemsSource=\"{Binding MessageItems}\"\n              SelectedItem=\"{Binding Selected, Mode=TwoWay}\"\n              Margin=\"0,220,0,0\" Padding=\"10,0,0,0\">\n            <GridView.ItemTemplate>\n                <DataTemplate >\n                    <Grid Height=\"80\" Width=\"240\" >\n                        <StackPanel VerticalAlignment=\"Bottom\">\n                            <StackPanel.Background>\n                                <SolidColorBrush Color=\"{Binding IsRead, Converter={StaticResource BoolToColorConverter}}\" Opacity=\".5\" />\n                            </StackPanel.Background>\n                            <TextBlock Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"12\"\n                           Margin=\"5\" MaxLines=\"1\" TextTrimming=\"CharacterEllipsis\"\n                           Foreground=\"White\" Text=\"{Binding ID}\" />\n                            <TextBlock Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"12\" \n                           Margin=\"5\" MaxLines=\"1\" TextTrimming=\"CharacterEllipsis\"\n                           Foreground=\"White\" Text=\"{Binding Title}\" />\n                            <TextBlock Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"12\" \n                           Margin=\"5\" MaxLines=\"1\" TextTrimming=\"CharacterEllipsis\"\n                           Foreground=\"White\" Text=\"{Binding Body}\" />\n                        </StackPanel>\n                    </Grid>\n                </DataTemplate>\n            </GridView.ItemTemplate>\n        </GridView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Data.Xml.Dom;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Notifications;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ActionCenterDemo.Views\n{\n  /// <summary>\n  /// An empty page that can be used on its own or navigated to within a Frame.\n  /// </summary>\n  public sealed partial class MainPage : Page\n  {\n    public MainPage()\n    {\n      this.InitializeComponent();\n    }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"CommonServiceLocator\" version=\"1.3\" targetFramework=\"win453\" />\n  <package id=\"MvvmLight\" version=\"5.0.2.0\" targetFramework=\"win453\" />\n  <package id=\"MvvmLightLibs\" version=\"5.0.2.0\" targetFramework=\"win453\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win453\" />\n</packages>"
  },
  {
    "path": "ActionCenterDemo/ActionCenterDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ActionCenterDemo\", \"ActionCenterDemo\\ActionCenterDemo.csproj\", \"{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ActionCenterHistoryChangedTask\", \"ActionCenterHistoryChangedTask\\ActionCenterHistoryChangedTask.csproj\", \"{5680FB19-C161-46D2-A1AE-115954E020CF}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x64.Build.0 = Debug|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x86.Build.0 = Debug|x86\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|ARM.Build.0 = Release|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x64.ActiveCfg = Release|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x64.Build.0 = Release|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x64.Deploy.0 = Release|x64\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x86.ActiveCfg = Release|x86\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x86.Build.0 = Release|x86\n\t\t{ED4B4052-AE0D-44FA-B8C2-FE47919E9A90}.Release|x86.Deploy.0 = Release|x86\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|x64.Build.0 = Debug|x64\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Debug|x86.Build.0 = Debug|x86\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|ARM.Build.0 = Release|ARM\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|x64.ActiveCfg = Release|x64\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|x64.Build.0 = Release|x64\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|x86.ActiveCfg = Release|x86\n\t\t{5680FB19-C161-46D2-A1AE-115954E020CF}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/ActionCenterChangedBackgroundTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.UI.Notifications;\n\nnamespace ActionCenterHistoryChangedTask\n{\n    // Background task for a ToastNotificationHistoryChangedTrigger\n    public sealed class ActionCenterChangedBackgroundTask : IBackgroundTask\n    {\n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            var toasts = ToastNotificationManager.History.GetHistory();\n            if (toasts != null)\n            {\n                var count = toasts.Count();\n\n                XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);\n                XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode(\"/badge\");\n                badgeElement.SetAttribute(\"value\", count.ToString());\n\n                BadgeNotification badge = new BadgeNotification(badgeXml);\n                BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);\n\n                // Update the app data\n                UpdateAppData(toasts);\n\n                taskInstance.Progress = 100;\n            }\n        }\n\n        private static void UpdateAppData(IReadOnlyList<ToastNotification> toasts)\n        {\n            // Update the apps data as well\n            var messageItemRepository = ActionCenterDemo.Repositories.MessageItemRepository.GetInstance();\n            // Set all to 'Read' initially\n            foreach (var messageItem in messageItemRepository.GetAllMessageItems())\n            {\n                messageItem.IsRead = true;\n            }\n            // Then reset each one still in the list to 'Unread'\n            foreach (var item in toasts)\n            {\n                var launchAttr = item.Content.SelectSingleNode(\"/toast/@launch\").NodeValue.ToString();\n                var toastParams = Newtonsoft.Json.JsonConvert.DeserializeObject<ToastParams>(launchAttr);\n                var msgID = toastParams.param1;\n\n                var messageItem = messageItemRepository.Find(p => p.ID == msgID).FirstOrDefault();\n                if (messageItem != null)\n                {\n                    messageItem.IsRead = false;\n                }\n            }\n\n            // Store changes\n            messageItemRepository.SaveChanges();\n        }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/ActionCenterHistoryChangedTask.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{5680FB19-C161-46D2-A1AE-115954E020CF}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ActionCenterHistoryChangedTask</RootNamespace>\n    <AssemblyName>ActionCenterHistoryChangedTask</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\ActionCenterDemo\\Repositories\\MessageItemRepository.cs\">\n      <Link>MessageItemRepository.cs</Link>\n    </Compile>\n    <Compile Include=\"ActionCenterChangedBackgroundTask.cs\" />\n    <Compile Include=\"MessageItem.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ToastParams.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/MessageItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ActionCenterDemo.Models\n{\n  class MessageItem\n  {\n    public string ID { get; set; }\n    public string Title { get; set; }\n    public string Body { get; set; }\n    public bool IsRead { get; set; }\n  }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ActionCenterHistoryChangedTask\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ActionCenterHistoryChangedTask\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/ToastParams.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ActionCenterHistoryChangedTask\n{\n    class ToastParams\n    {\n        public string type { get; set; }\n        public string param1 { get; set; }\n        public string param2 { get; set; }\n    }\n}\n"
  },
  {
    "path": "ActionCenterDemo/ActionCenterHistoryChangedTask/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "Adaptive UI/Blank10/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Blank10.Views.MainPage\"\n    xmlns:local=\"using:Blank10.Views\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Blank10.ViewModels\"\n    mc:Ignorable=\"d\">\n\n    <RelativePanel Background=\"{StaticResource ApplicationPageBackgroundThemeBrush}\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup x:Name=\"VisualStateGroup\">\n                <VisualState x:Name=\"VisualState000min\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"0\" />\n                    </VisualState.StateTriggers>\n<VisualState.Setters>\n    <Setter Target=\"MyText01.FontSize\" Value=\"24\" />\n    <Setter Target=\"MyImage.Stretch\" Value=\"UniformToFill\" />\n    <Setter Target=\"MyImage.Height\" Value=\"150\" />\n</VisualState.Setters>\n                </VisualState>\n                <VisualState x:Name=\"VisualState500min\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"501\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"MyText01.FontSize\" Value=\"24\" />\n                        <Setter Target=\"MyText02.FontSize\" Value=\"11\" />\n                        <Setter Target=\"MyImage.Width\" Value=\"150\" />\n                    </VisualState.Setters>\n                </VisualState>\n                <VisualState x:Name=\"VisualState800min\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"800\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n                <VisualState x:Name=\"VisualState1000min\">\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"1000\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"MyImage.Width\" Value=\"350\" />\n                    </VisualState.Setters>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n\n        <TextBlock x:Name=\"Text00\" Margin=\"12,12,12,0\" \n                   Foreground=\"SteelBlue\" Text=\"Screen size\" />\n\n        <Image Source=\"ms-appx:///Images/cat.jpg\" Margin=\"12,12,0,0\"\n               x:Name=\"MyImage\" Stretch=\"Uniform\" \n               RelativePanel.Below=\"Text00\" Width=\"225\"\n               RelativePanel.AlignLeftWith=\"Text00\" />\n\n        <TextBlock FontSize=\"32\" TextWrapping=\"Wrap\"\n                   Foreground=\"Goldenrod\" x:Name=\"MyText01\"\n                   RelativePanel.RightOf=\"MyImage\" Margin=\"12,12,12,0\"\n                   RelativePanel.AlignTopWith=\"MyImage\">\n            Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium\n        </TextBlock>\n\n        <ScrollViewer x:Name=\"MyText02\"\n                      VerticalScrollBarVisibility=\"Auto\"\n                      RelativePanel.Below=\"MyText01\" Margin=\"12\"\n                      RelativePanel.AlignLeftWith=\"MyText01\">\n            <RichTextBlock FontSize=\"18\" TextWrapping=\"Wrap\" Foreground=\"DimGray\">\n                <Paragraph LineStackingStrategy=\"MaxHeight\">\n                    <InlineUIContainer>\n                        <Grid Height=\"50\" Width=\"50\" Margin=\"0,0,12,0\" Background=\"SteelBlue\">\n                            <TextBlock VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Foreground=\"White\" FontSize=\"28\">L</TextBlock>\n                        </Grid>\n                    </InlineUIContainer>\n                    <Run>\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut \n                    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris \n                    nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate \n                    velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, \n                    sunt in culpa qui officia deserunt mollit anim id est laborum.\n                    </Run>\n                </Paragraph>\n                <Paragraph/>\n                <Paragraph Margin=\"12,0,0,0\" x:Name=\"SnappointText\">\n                    <Run Text=\"Snappoints\" FontWeight=\"Black\" />\n                    <LineBreak />\n                    <Run Text=\"&#x27A4; 0-500 epx\" />\n                    <LineBreak />\n                    <Run Text=\"&#x27A4; 500-800 epx\" />\n                    <LineBreak />\n                    <Run Text=\"&#x27A4; 800-1000 epx\" />\n                    <LineBreak />\n                    <Run Text=\"&#x27A4; 1000+ epx\" />\n                </Paragraph>\n                <Paragraph/>\n                <Paragraph>\n                    <Run>\n                        Sit voluptatem accusantium doloremque laudantium, \n                    totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae \n                    dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, \n                    sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam \n                    est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam \n                    eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad \n                    minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid \n                    ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse \n                    quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?\n                    </Run>\n                </Paragraph>\n            </RichTextBlock>\n        </ScrollViewer>\n\n    </RelativePanel>\n\n</Page>\n"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"VisibleBoundsDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:VisibleBoundsDemo\">\n\n</Application>"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=391641\n\nnamespace VisibleBoundsDemo\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    public sealed partial class App : Application\n    {\n        private TransitionCollection transitions;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += this.OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n#if DEBUG_EFRC\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                // TODO: change this value to a cache size that is appropriate for your application\n                rootFrame.CacheSize = 1;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    // TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // Removes the turnstile navigation for startup.\n                if (rootFrame.ContentTransitions != null)\n                {\n                    this.transitions = new TransitionCollection();\n                    foreach (var c in rootFrame.ContentTransitions)\n                    {\n                        this.transitions.Add(c);\n                    }\n                }\n\n                rootFrame.ContentTransitions = null;\n                rootFrame.Navigated += this.RootFrame_FirstNavigated;\n\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Restores the content transitions after the app has launched.\n        /// </summary>\n        /// <param name=\"sender\">The object where the handler is attached.</param>\n        /// <param name=\"e\">Details about the navigation event.</param>\n        private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)\n        {\n            var rootFrame = sender as Frame;\n            rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };\n            rootFrame.Navigated -= this.RootFrame_FirstNavigated;\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n\n            // TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"VisibleBoundsDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:VisibleBoundsDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:triggers=\"using:VisibleBoundsDemo.Triggers\"\n    mc:Ignorable=\"d\">\n    <Page.Background>\n        <SolidColorBrush Color=\"Green\"/>\n    </Page.Background>\n    <Page.BottomAppBar>\n        <CommandBar x:Name=\"commandBar\" >\n            <AppBarButton Icon=\"Accept\" Label=\"appbarbutton\"/>\n            <AppBarButton Icon=\"Cancel\" Label=\"appbarbutton\"/>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid Background=\"CadetBlue\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup>\n                <VisualState>\n                    <VisualState.StateTriggers>\n                        <triggers:DeviceFamilyTrigger DeviceFamily=\"Desktop\" />\n                    </VisualState.StateTriggers>\n                    <VisualState.Setters>\n                        <Setter Target=\"StatusBarControls.Visibility\" Value=\"Collapsed\"/>\n                    </VisualState.Setters>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n        <ListView>\n            <x:String>One</x:String>\n            <x:String>Two</x:String>\n            <x:String>Three</x:String>\n            <x:String>Four</x:String>\n            <x:String>Five</x:String>\n            <x:String>Six</x:String>\n            <x:String>Seven</x:String>\n            <x:String>Eight</x:String>\n            <x:String>Nine</x:String>\n            <x:String>Ten</x:String>\n            <x:String>Eleven</x:String>\n            <x:String>Twelve</x:String>\n            <x:String>Thirteen</x:String>\n            <x:String>Fourteen</x:String>\n            <x:String>Fifteen</x:String>\n            <x:String>Sixteen</x:String>\n            <x:String>Seventeen</x:String>\n            <x:String>Eighteen</x:String>\n            <x:String>Nineteen</x:String>\n            <x:String>Twenty</x:String>\n            <CheckBox Content=\"CheckBox\" Height=\"100\" Width=\"100\"/>\n        </ListView>\n        <Grid Margin=\"75,25,0,0\">\n            <TextBlock x:Name=\"BoundsHeader\" HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"Visible Bounds:\" VerticalAlignment=\"Top\"  FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"Top:\"   \n                       FontSize=\"{StaticResource TextStyleLargeFontSize}\"\n                       Margin=\"0,25,0,0\"/>\n            <TextBlock HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"Bottom:\" VerticalAlignment=\"Top\" \n                       Margin=\"0,50,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"Height:\" VerticalAlignment=\"Top\" \n                       Margin=\"0,75,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"Width:\" VerticalAlignment=\"Top\" \n                       Margin=\"0,100,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock x:Name=\"TopTextBox\" HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"0.0\" VerticalAlignment=\"Top\" Margin=\"100,25,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock x:Name=\"BottomTextBox\" HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"0.0\" VerticalAlignment=\"Top\" Margin=\"100,50,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock x:Name=\"HeightTextBox\" HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"0.0\" VerticalAlignment=\"Top\" Margin=\"100,75,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n            <TextBlock x:Name=\"WidthTextBox\" HorizontalAlignment=\"Left\"  TextWrapping=\"Wrap\" Text=\"0.0\" VerticalAlignment=\"Top\" Margin=\"100,100,0,0\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n        </Grid>\n        <StackPanel HorizontalAlignment=\"Left\" Margin=\"75,164,0,0\" VerticalAlignment=\"Top\" >\n            <RadioButton x:Name=\"ShowAppBarRadioButton\" Content=\"Show AppBar\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" IsChecked=\"True\" Checked=\"RadioButton_Checked\"/>\n            <RadioButton x:Name=\"ShowOpaqueAppBarRadioButton\" Content=\"Show Transparent AppBar\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Checked=\"RadioButton_Checked\"/>\n            <RadioButton x:Name=\"HideAppBarRadioButton\" Content=\"Hide AppBar\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Checked=\"RadioButton_Checked\"/>\n        </StackPanel>\n        <StackPanel Margin=\"75,274,0,0\">\n            <CheckBox x:Name=\"ExtendViewCheckBox\" Content=\"Extend View into TitleBar\" VerticalAlignment=\"Top\" \n                      Checked=\"ExtendViewButton_Checked\" Unchecked=\"ExtendViewButton_Checked\"/>\n            <CheckBox x:Name=\"ColourTitleBarButtonsCheckBox\" Content=\"Change TitleBar appearance\" VerticalAlignment=\"Top\" \n                      Checked=\"ColourTitleBarButtons_Checked\" Unchecked=\"ColourTitleBarButtons_Checked\"/>\n        </StackPanel>\n\n        <StackPanel x:Name=\"StatusBarControls\" Orientation=\"Vertical\" Margin=\"75,350,0,0\" Visibility=\"Visible\">\n            <CheckBox x:Name=\"StatusBarBackgroundCheckBox\" Content=\"Set StatusBar Background\" Checked=\"StatusBarBackgroundCheckBox_Checked\" Unchecked=\"StatusBarBackgroundCheckBox_Unchecked\"/>\n            <CheckBox x:Name=\"StatusBarHiddenCheckBox\" Content=\"Set StatusBar Hidden\"  Checked=\"StatusBarHiddenCheckBox_Checked\" Unchecked=\"StatusBarHiddenCheckBox_Unchecked\"/>            \n        </StackPanel>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace VisibleBoundsDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        private Color? DefaultTitleBarButtonsBGColor;\n        private Color? DefaultTitleBarBGColor;\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBoundsChanged += MainPage_VisibleBoundsChanged;\n\n            var viewTitleBar = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TitleBar;\n            DefaultTitleBarBGColor = viewTitleBar.BackgroundColor;\n            DefaultTitleBarButtonsBGColor = viewTitleBar.ButtonBackgroundColor;\n\n        }\n\n        void MainPage_VisibleBoundsChanged(Windows.UI.ViewManagement.ApplicationView sender, object args)\n        {\n            ReportVisibleBounds();\n        }\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.\n        /// This parameter is typically used to configure the page.</param>\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            ReportVisibleBounds();\n        }\n\n        private void ReportVisibleBounds()\n        {\n            var vb = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds;\n\n            TopTextBox.Text = String.Format(\"{0:0.000}\", vb.Top);\n            BottomTextBox.Text = String.Format(\"{0:0.000}\", vb.Bottom);\n            HeightTextBox.Text = String.Format(\"{0:0.000}\", vb.Height);\n            WidthTextBox.Text = String.Format(\"{0:0.000}\", vb.Width);\n        }\n\n        private void RadioButton_Checked(object sender, RoutedEventArgs e)\n        {\n            // Bottom AppBar shows on Desktop and Mobile\n            if (ShowAppBarRadioButton != null)\n            {\n                if (ShowAppBarRadioButton.IsChecked.HasValue && (ShowAppBarRadioButton.IsChecked.Value == true))\n                {\n                    commandBar.Visibility = Windows.UI.Xaml.Visibility.Visible;\n                    commandBar.Opacity = 1;\n                }\n                else\n                {\n                    commandBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;\n                }\n            }\n\n            if (ShowOpaqueAppBarRadioButton != null)\n            {\n                if (ShowOpaqueAppBarRadioButton.IsChecked.HasValue && (ShowOpaqueAppBarRadioButton.IsChecked.Value == true))\n                {\n                    commandBar.Visibility = Windows.UI.Xaml.Visibility.Visible;\n                    commandBar.Background.Opacity = 0;\n                }\n                else\n                {\n                    commandBar.Background.Opacity = 1;\n                }\n            }\n        }\n\n        private void StatusBarHiddenCheckBox_Checked(object sender, RoutedEventArgs e)\n        {\n            // StatusBar is Mobile only\n            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.UI.ViewManagement.StatusBar\"))\n            {\n                var ignore = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().HideAsync();\n            }\n        }\n\n        private void StatusBarHiddenCheckBox_Unchecked(object sender, RoutedEventArgs e)\n        {\n            // StatusBar is Mobile only\n            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.UI.ViewManagement.StatusBar\"))\n            {\n                var ignore = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().ShowAsync();\n            }\n        }\n\n        private void StatusBarBackgroundCheckBox_Checked(object sender, RoutedEventArgs e)\n        {\n            // StatusBar is Mobile only\n            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.UI.ViewManagement.StatusBar\"))\n            {\n                Windows.UI.ViewManagement.StatusBar.GetForCurrentView().BackgroundColor = Windows.UI.Colors.Blue;\n                Windows.UI.ViewManagement.StatusBar.GetForCurrentView().BackgroundOpacity = 1;\n            }\n        }\n\n        private void StatusBarBackgroundCheckBox_Unchecked(object sender, RoutedEventArgs e)\n        {\n            // StatusBar is Mobile only\n            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.UI.ViewManagement.StatusBar\"))\n            {\n                Windows.UI.ViewManagement.StatusBar.GetForCurrentView().BackgroundOpacity = 0;\n            }\n        }\n\n        private void ExtendViewButton_Checked(object sender, RoutedEventArgs e)\n        {\n            // You can extend your view into the TitleBar.\n            // Has no effect on Mobile or when FullScreen on tablet, but has effect when running windowed on Desktop\n            bool extendView = ExtendViewCheckBox.IsChecked.HasValue && (ExtendViewCheckBox.IsChecked.Value == true) ? true : false;\n            Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = extendView;\n        }\n\n        private void ColourTitleBarButtons_Checked(object sender, RoutedEventArgs e)\n        {\n            // You can change properties of the TitleBar.\n            // Has no effect on Mobile or when FullScreen on tablet since there is no TitleBar visible, \n            // but has effect when running windowed on Desktop\n            var viewTitleBar = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TitleBar;\n\n            if (ColourTitleBarButtonsCheckBox.IsChecked.HasValue && (ColourTitleBarButtonsCheckBox.IsChecked.Value == true))\n            {\n                viewTitleBar.ButtonBackgroundColor = Colors.Yellow;\n                viewTitleBar.BackgroundColor = Colors.Transparent;\n            }\n            else\n            {\n                viewTitleBar.ButtonBackgroundColor = DefaultTitleBarButtonsBGColor;\n                viewTitleBar.BackgroundColor = DefaultTitleBarBGColor;\n            }\n\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity Name=\"5dcb4604-c7a0-4bc9-97a1-3bde63a00001\"\n            Publisher=\"CN=Andy\"\n            Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"5dcb4604-c7a0-4bc9-97a1-3bde63a00001\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>VisibleBoundsDemo</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  \n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n        Executable=\"$targetnametoken$.exe\"\n        EntryPoint=\"VisibleBoundsDemo.App\">\n        <uap:VisualElements\n            DisplayName=\"VisibleBoundsDemo\"\n            Square150x150Logo=\"Assets\\Logo.png\"\n            Square44x44Logo=\"Assets\\SmallLogo.png\"\n            Description=\"VisibleBoundsDemo\"\n            \n            BackgroundColor=\"transparent\">\n            <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\"/>\n            <uap:SplashScreen Image=\"Assets\\SplashScreen.png\"/>\n            <uap:ApplicationView MinWidth=\"width320\"/> <!--Used in XAML Designer. DO NOT REMOVE-->\n        </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"VisibleBoundsDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"VisibleBoundsDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/Triggers/DeviceFamilyTrigger.cs",
    "content": "﻿using Windows.UI.Xaml;\n\nnamespace VisibleBoundsDemo.Triggers\n{\n    public class DeviceFamilyTrigger : StateTriggerBase\n    {\n        //private variables\n        private string _deviceFamily;\n \n        //Public property\n        public string DeviceFamily\n        {\n            get\n            {\n                return _deviceFamily;\n            }\n            set\n            {\n                _deviceFamily = value;\n                var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;\n                if (qualifiers.ContainsKey(\"DeviceFamily\"))\n                    SetActive(qualifiers[\"DeviceFamily\"] == _deviceFamily);\n                else\n                    SetActive(false);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo/VisibleBoundsDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{76EA5674-92ED-4330-892A-C99BF51E1E18}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>VisibleBoundsDemo</RootNamespace>\n    <AssemblyName>VisibleBoundsDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <SDKReference Include=\"WindowsDesktop, Version=10.0.10069.0\">\n      <Name>Microsoft Desktop Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n    <SDKReference Include=\"WindowsMobile, Version=10.0.0.1\">\n      <Name>Microsoft Mobile Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Triggers\\DeviceFamilyTrigger.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AdaptiveCode/VisibleBoundsDemo/VisibleBoundsDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"VisibleBoundsDemo\", \"VisibleBoundsDemo\\VisibleBoundsDemo.csproj\", \"{76EA5674-92ED-4330-892A-C99BF51E1E18}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|x86.Build.0 = Debug|x86\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|ARM.Build.0 = Release|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|x86.ActiveCfg = Release|x86\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|x86.Build.0 = Release|x86\n\t\t{76EA5674-92ED-4330-892A-C99BF51E1E18}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/AdaptiveUI-Blank.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AdaptiveUI</RootNamespace>\n    <AssemblyName>AdaptiveUI</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>AdaptiveUI_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\AutoNavButton.cs\" />\n    <Compile Include=\"Extensions\\WeakEvent.cs\" />\n    <Compile Include=\"Model\\SampleInfo.cs\" />\n    <Compile Include=\"Triggers\\InteractionModeTrigger.cs\" />\n    <Compile Include=\"Views\\ApiInformationPage.xaml.cs\">\n      <DependentUpon>ApiInformationPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Triggers\\ApiInformationTrigger.cs\" />\n    <Compile Include=\"Triggers\\ControlSizeTrigger.cs\" />\n    <Compile Include=\"Triggers\\DeviceFamilyTrigger.cs\" />\n    <Compile Include=\"Triggers\\InputTypeTrigger.cs\" />\n    <Compile Include=\"Triggers\\NetworkAvailableStateTrigger.cs\" />\n    <Compile Include=\"Triggers\\OrientationTrigger.cs\" />\n    <Compile Include=\"Views\\OrientationPage.xaml.cs\">\n      <DependentUpon>OrientationPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\WindowSizePage.xaml.cs\">\n      <DependentUpon>WindowSizePage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"AdaptiveUI_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\BirdsTall.jpg\" />\n    <Content Include=\"Assets\\BirdsWide.jpg\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Themes\\Generic.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\ApiInformationPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\OrientationPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\WindowSizePage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"WindowsMobile, Version=10.0.0.1\">\n      <Name>Microsoft Mobile Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/AdaptiveUI.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22609.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AdaptiveUI\", \"AdaptiveUI.csproj\", \"{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.Build.0 = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.Build.0 = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.Build.0 = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.ActiveCfg = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.Build.0 = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.Deploy.0 = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.ActiveCfg = Release|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.Build.0 = Release|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/App.xaml",
    "content": "﻿<Application\n    x:Class=\"AdaptiveUI.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AdaptiveUI\">\n\n</Application>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/App.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\nusing AdaptiveUI.Views;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace AdaptiveUI\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n                // rootFrame.Navigate(typeof(WindowSizePage), e.Arguments);\n                // rootFrame.Navigate(typeof(OrientationPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Controls/AutoNavButton.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation.Metadata;\nusing Windows.Phone.UI.Input;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Documents;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\n\n// The Templated Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234235\n\nnamespace Template10.Controls\n{\n    /// <summary>\n    /// Defines the possible modes of the <see cref=\"AutoNavButton\"/>.\n    /// </summary>\n    public enum AutoNavMode\n    {\n        /// <summary>\n        /// The nav button will go back one page (if possible).\n        /// </summary>\n        Back,\n        /// <summary>\n        /// The nav button will go forward one page (if possible).\n        /// </summary>\n        Forward,\n        /// <summary>\n        /// The nav button will go to the home page (if possible).\n        /// </summary>\n        Home\n    };\n\n    /// <summary>\n    /// A button that handles navigation automatically including graphically and using keyboard and mouse.\n    /// </summary>\n    public sealed class AutoNavButton : Control\n    {\n        #region Static Version\n        #region Constants\n        private const string DisabledStateName = \"Disabled\";\n        private const string EnabledStateName = \"Enabled\";\n        private const string HardwareButtonsType = \"Windows.Phone.UI.Input.HardwareButtons\";\n        private const string NavButtonName = \"NavButton\";\n        #endregion // Constants\n\n\n        #region Dependency Property Definitions\n        /// <summary>\n        /// Identifies the <see cref=\"Mode\"/> dependency property.\n        /// </summary>\n        static public readonly DependencyProperty ModeProperty = DependencyProperty.Register(\"Mode\", typeof(AutoNavMode), typeof(AutoNavButton), new PropertyMetadata(AutoNavMode.Back, OnModeChanged));\n        #endregion // Dependency Property Definitions\n\n        #region Dependency Property Change Forwards\n        private static void OnModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)\n        {\n            ((AutoNavButton)d).OnModeChanged(e);\n        }\n        #endregion // Dependency Property Change Forwards\n        #endregion // Static Version\n\n\n        #region Instance Version\n\n        #region Constructors\n        public AutoNavButton()\n        {\n            this.DefaultStyleKey = typeof(AutoNavButton);\n            this.Loaded += AutoNavButton_Loaded;\n            this.Unloaded += AutoNavButton_Unloaded;\n        }\n        #endregion // Constructors\n\n\n        #region Internal Methods\n        private void CalculateState()\n        {\n            // Switch the visual state to match the mode\n            VisualStateManager.GoToState(this, Mode.ToString(), true);\n\n            // If Mode is Back and this OS has a hardware back button, disable. Otherwise, disable if there is no back stack.\n            if ((Mode == AutoNavMode.Back) && (ApiInformation.IsTypePresent(HardwareButtonsType)))\n            {\n                SetEnabled(false);\n            }\n            // Enabled is calculated based on Mode\n            else\n            {\n                // Try to find the frame\n                var frame = FindFrame();\n\n                // If frame found, show or hide ourselves based on the ability to navigate\n                if (frame != null)\n                {\n                    switch (Mode)\n                    {\n                        case (AutoNavMode.Back):\n                        case (AutoNavMode.Home):\n                            if (frame.CanGoBack)\n                            {\n                                SetEnabled(true);\n                            }\n                            break;\n                        case (AutoNavMode.Forward):\n                            if (frame.CanGoForward)\n                            {\n                                SetEnabled(true);\n                            }\n                            break;\n\n                        default:\n                            // Unknown mode (shouldn't happen)\n                            SetEnabled(false);\n                            break;\n                    }\n                }\n            }\n        }\n\n        private Frame FindFrame()\n        {\n            // Look for a frame in the current window\n            // TODO: May need to get from NavigationService in template\n            return Window.Current.Content as Frame;\n        }\n\n        private void SetEnabled(bool enabled)\n        {\n            // The control has to be set to collapsed by default due to a bug in layout calculation\n            // When the control is collapsed, Load does not occur. Therefore when we go to enabled\n            // we need to make sure we're also visible.\n            if (enabled)\n            {\n                Visibility = Visibility.Visible;\n            }\n\n            // Which state?\n            var stateName = (enabled ? EnabledStateName : DisabledStateName);\n\n            // Go to the state\n            VisualStateManager.GoToState(this, EnabledStateName, true);\n        }\n\n        private bool TryNavigate()\n        {\n            // Get the frame\n            var frame = FindFrame();\n\n            // If frame is found and we can perform the operation\n            if (frame != null)\n            {\n                switch (Mode)\n                {\n                    case AutoNavMode.Back:\n                        if (frame.CanGoBack)\n                        {\n                            frame.GoBack();\n                            return true;\n                        }\n                        break;\n\n                    case AutoNavMode.Forward:\n                        if (frame.CanGoForward)\n                        {\n                            frame.GoForward();\n                            return true;\n                        }\n                        break;\n\n                    case AutoNavMode.Home:\n                        if (frame.CanGoBack)\n                        {\n                            while (frame.CanGoBack)\n                            {\n                                frame.GoBack();\n                            }\n                            return true;\n                        }\n                        break;\n                }\n\n                // Shouldn't get here but in case some other mode is added\n                return false;\n            }\n            else\n            {\n                return false;\n            }\n        }\n        #endregion // Internal Methods\n\n\n        #region Overrides / Event Handlers\n        private void AutoNavButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            // If hardware buttons are present, subscribe\n            if (ApiInformation.IsTypePresent(HardwareButtonsType))\n            {\n                HardwareButtons.BackPressed += HardwareButtons_BackPressed;\n            }\n\n            // Always calcualte state\n            CalculateState();\n        }\n\n        private void AutoNavButton_Unloaded(object sender, RoutedEventArgs e)\n        {\n            // If hardware buttons are present, unsubscribe\n            if (ApiInformation.IsTypePresent(HardwareButtonsType))\n            {\n                HardwareButtons.BackPressed -= HardwareButtons_BackPressed;\n            }\n        }\n\n        private void NavButton_Click(object sender, RoutedEventArgs e)\n        {\n            TryNavigate();\n        }\n\n        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)\n        {\n            // Only process if not already handled\n            if (!e.Handled)\n            {\n                // Only handle if our mode is back\n                if (Mode == AutoNavMode.Back)\n                {\n                    // We'll try to handle it, assuming we have a frame and can go back\n                    e.Handled = TryNavigate();\n                }\n            }\n        }\n\n        protected override void OnApplyTemplate()\n        {\n            // Pass to base first\n            base.OnApplyTemplate();\n\n            // Try to find the buton button\n            var NavButton = GetTemplateChild(AutoNavButton.NavButtonName) as Button;\n\n            // Try to subscribe to click event\n            if (NavButton != null)\n            {\n                NavButton.Click += NavButton_Click;\n            }\n            else\n            {\n                Debug.WriteLine(string.Format(\"WARNING: Could not find a button named '{0}' in the {1} template.\", AutoNavButton.NavButtonName, typeof(AutoNavButton).Name));\n            }\n\n            // Update state\n            CalculateState();\n        }\n\n        /// <summary>\n        /// Occurs when the value of the <see cref=\"Mode\"/> property has changed.\n        /// </summary>\n        /// <param name=\"e\">\n        /// A <see cref=\"DependencyPropertyChangedEventArgs\"/> containing event information.\n        /// </param>\n        private void OnModeChanged(DependencyPropertyChangedEventArgs e)\n        {\n            CalculateState();\n        }\n        #endregion // Overrides / Event Handlers\n\n\n        #region Public Properties\n        /// <summary>\n        /// Gets or sets the Mode of the <see cref=\"AutoNavButton\"/>. This is a dependency property.\n        /// </summary>\n        /// <value>\n        /// The Mode of the <see cref=\"AutoNavButton\"/>.\n        /// </value>\n        public AutoNavMode Mode\n        {\n            get\n            {\n                return (AutoNavMode)GetValue(ModeProperty);\n            }\n            set\n            {\n                SetValue(ModeProperty, value);\n            }\n        }\n        #endregion // Public Properties\n        #endregion // Instance Version\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Extensions/WeakEvent.cs",
    "content": "﻿// #define WEAK_LOGGING\nusing System;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing System.Runtime.InteropServices.WindowsRuntime;\n\nnamespace AdaptiveUI.Extensions\n{\n    /// <summary>\n    /// A base class that can monitor any event in a generic way.\n    /// </summary>\n    public class EventWatcher : IDisposable\n    {\n        #region Member Variables\n        private object source;\n        private EventInfo eventInfo;\n        private Delegate handler;\n        #endregion // Member Variables\n\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"EventWatcher\"/> instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        public EventWatcher(object source, string eventName)\n        {\n            Subscribe(source, eventName);\n        }\n        #endregion // Constructors\n\n\n        #region Internal Methods\n        /// <summary>\n        /// Dynamically creates a handler for any event.\n        /// </summary>\n        /// <param name=\"signature\">\n        /// The <see cref=\"Type\"/> that represents the event (or delegate) signature.\n        /// </param>\n        private void CreateHandlerDelegate(Type signature)\n        {\n            // Get the event delegate's parameters from its 'Invoke' method.\n            var invokeMethod = signature.GetTypeInfo().GetDeclaredMethod(\"Invoke\");\n\n            // Determine what parameters are passed into the handler\n            var parameters = invokeMethod.GetParameters()\n                .Select((p) => Expression.Parameter(p.ParameterType, p.Name)).ToArray();\n\n            // Create an expression to convert the individual parameters into a param array\n            var paramArray = Expression.NewArrayInit(typeof(object), parameters);\n\n            // Get a reference to the EventRaised method\n            var eventRaisedMethod = typeof(EventWatcher).GetTypeInfo().GetDeclaredMethod(nameof(OnEventRaised));\n\n            // Create an expression that calls the EventRaised method passing the parameter array\n            var body = Expression.Call(Expression.Constant(this), eventRaisedMethod, paramArray);\n\n            // Create a lambda from the body and parameters\n            var listener = Expression.Lambda(signature, body, parameters);\n\n            // Compile the lambda, converting it to a delegate\n            handler = listener.Compile();\n        }\n\n        /// <summary>\n        /// Subscribes to the named event on the specified object instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        private void Subscribe(object source, string eventName)\n        {\n            // Validate\n            if (source == null) throw new ArgumentNullException(\"target\");\n            if (string.IsNullOrEmpty(eventName)) throw new ArgumentException(\"eventName\");\n\n            // Store\n            this.source = source;\n\n            // Attempt to get the runtime event\n            eventInfo = source.GetType().GetRuntimeEvent(eventName);\n\n            // Make sure event was found\n            if (eventInfo == null)\n            {\n                throw new InvalidOperationException(string.Format(\"RuntimeEvent '{0}' was not found on type '{1}'\", eventName, source.GetType().Name));\n            }\n\n            // Get pointers to the add and remove methods\n            MethodInfo addMethod = eventInfo.AddMethod;\n            MethodInfo removeMethod = eventInfo.RemoveMethod;\n\n            // Get the parameter list from the add method\n            ParameterInfo[] addParameters = addMethod.GetParameters();\n\n            // The method signature for the event handler is the first parameter\n            Type delegateType = addParameters[0].ParameterType;\n\n            // Create a generic handler that matches the signature and forwards calls to our EventRaised method\n            CreateHandlerDelegate(delegateType);\n\n            // Use the RuntimeMarshaler to subscribe to the event\n            Func<object, EventRegistrationToken> add = a => (EventRegistrationToken)addMethod.Invoke(source, new object[] { handler });\n            Action<EventRegistrationToken> remove = t => removeMethod.Invoke(source, new object[] { t });\n            WindowsRuntimeMarshal.AddEventHandler(add, remove, handler);\n        }\n        #endregion // Internal Methods\n\n\n        #region IDisposable Members\n        void IDisposable.Dispose()\n        {\n            // Remove the event handler\n            if (handler != null)\n            {\n                eventInfo.RemoveEventHandler(source, handler);\n                handler = null;\n            }\n        }\n        #endregion // IDisposable Members\n\n        #region Overridables / Event Triggers\n        /// <summary>\n        /// Called when the event being watched is raised.\n        /// </summary>\n        /// <param name=\"parameters\">\n        /// The parameters of the event.\n        /// </param>\n        protected virtual void OnEventRaised(params object[] parameters)\n        {\n\n        }\n        #endregion // Overridables / Event Triggers\n    }\n\n    /// <summary>\n    /// Allows multiple subscriptions to an event without pinning subscribers in memory.\n    /// </summary>\n    public class WeakEvent : EventWatcher\n    {\n\n        #region Nested Types\n        private class WeakSubscription\n        {\n            public WeakSubscription(Delegate del)\n            {\n                Instance = new WeakReference(del.Target);\n                Method = del.GetMethodInfo();\n            }\n            public WeakReference Instance { get; set; }\n            public MethodInfo Method { get; set; }\n        }\n\n        private class SubscriberCollection : Collection<WeakSubscription> { }\n        #endregion // Nested Types\n\n        #region Static Version\n        #region Member Variables\n        static private Collection<WeakEvent> registrations = new Collection<WeakEvent>();\n        #endregion // Member Variables\n\n\n        #region Internal Methods\n        static private WeakEvent FindRegistration(object source, string eventName)\n        {\n            // Look for registration\n            WeakEvent reg = null;\n            for (int iReg = registrations.Count - 1; iReg >= 0; iReg--)\n            {\n                // Get the registration\n                reg = registrations[iReg];\n\n                // If the source is dead, remove the registration\n                if ((reg != null) && (!reg.source.IsAlive))\n                {\n                    registrations.RemoveAt(iReg);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing registration for event '{0}' due to expired object instance. New total registrations: {1}\", eventName, registrations.Count));\n                    #endif\n                    reg = null;\n                }\n\n                // If it's the right source, done searching\n                if ((reg.source.Target == source) && (reg.eventName == eventName))\n                {\n                    break;\n                }\n                else\n                {\n                    reg = null;\n                }\n            }\n\n            // Done searching\n            return reg;\n        }\n\n        static private void VerifyDelegate<THandler>() where THandler : class\n        {\n            // Verify handler type\n            if (!typeof(Delegate).GetTypeInfo().IsAssignableFrom(typeof(THandler).GetTypeInfo()))\n            {\n                throw new InvalidOperationException(string.Format(\"The type '{0}' is not a delegate and cannot be used for event subscriptions.\", typeof(THandler).Name));\n            }\n        }\n        #endregion // Internal Methods\n\n        #region Public Methods\n        /// <summary>\n        /// Adds a weak subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The object that is the source of the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event.\n        /// </param>\n        /// <param name=\"handler\">\n        /// The handler to subscribe.\n        /// </param>\n        static public void Subscribe<THandler>(object source, string eventName, THandler handler) where THandler : class\n        {\n            // Verify delegate type\n            VerifyDelegate<THandler>();\n\n            // Try to find existing\n            var reg = FindRegistration(source, eventName);\n\n            // If not found, create one and store it\n            if (reg == null)\n            {\n                reg = new WeakEvent(source, eventName);\n                registrations.Add(reg);\n                #if WEAK_LOGGING\n                Debug.WriteLine(string.Format(\"Creating new registration for event '{0}' and object ID {1}. Total registrations: {2}\", eventName, source.GetHashCode(), registrations.Count));\n                #endif\n            }\n            #if WEAK_LOGGING\n            else\n            {\n                Debug.WriteLine(string.Format(\"Reusing existing registration for event '{0}' and object ID {1}. Total registrations: {2}\", eventName, source.GetHashCode(), registrations.Count));\n            }\n            #endif\n\n            // Add the subscription\n            reg.Subscribe(handler as Delegate);\n        }\n\n        /// <summary>\n        /// Removes a subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The object that is the source of the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event.\n        /// </param>\n        /// <param name=\"handler\">\n        /// The handler to unsubscribe.\n        /// </param>\n        static public void Unsubscribe<THandler>(object source, string eventName, THandler handler) where THandler : class\n        {\n            // Verify delegate type\n            VerifyDelegate<THandler>();\n\n            // Try to find existing\n            var reg = FindRegistration(source, eventName);\n\n            // If found, unsubscribe\n            if (reg == null)\n            {\n                reg.Subscribe(handler as Delegate);\n            }\n        }\n        #endregion // Public Methods\n        #endregion // Static Version\n\n\n        #region Instance Version\n        #region Member Variables\n        private string eventName;\n        private WeakReference source;\n        private SubscriberCollection subscriptions = new SubscriberCollection();\n        #endregion // Member Variables\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"WeakEvent\"/> instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        private WeakEvent(object source, string eventName) : base(source, eventName)\n        {\n            // Store\n            this.source = new WeakReference(source);\n            this.eventName = eventName;\n        }\n        #endregion // Constructors\n\n        #region Internal Methods\n        private WeakSubscription FindSubscription(Delegate handler)\n        {\n            // Get the target\n            var target = handler.Target;\n\n            // Get the new info\n            var method = handler.GetMethodInfo();\n\n            // Make sure it's not already subscribed\n            for (int iSub = subscriptions.Count - 1; iSub >= 0; iSub--)\n            {\n                // Get the subscription\n                var sub = subscriptions[iSub];\n\n                // Subscriber still alive?\n                if (sub.Instance.IsAlive)\n                {\n                    // Already subscribed?\n                    if ((sub.Instance.Target == target) && (sub.Method == method)) { return sub; }\n                }\n                else\n                {\n                    // Reference dead. Might as well remove it.\n                    subscriptions.RemoveAt(iSub);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing expired registration for event '{0}' and object ID {1}. New total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n                    #endif\n                }\n            }\n\n            // Not found\n            return null;\n        }\n        #endregion // Internal Methods\n\n        #region Overrides / Event Handlers\n        protected override void OnEventRaised(params object[] parameters)\n        {\n            // Pass to base first\n            base.OnEventRaised(parameters);\n\n            #if WEAK_LOGGING\n            Debug.WriteLine(string.Format(\"Forwarding event for {0} subscribers.\", subscriptions.Count));\n            Debug.WriteLine(string.Format(\"Forwarding event '{0}' for object ID {1}. Total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n            #endif\n\n            // Do for all subscribers\n            for (int iSub = subscriptions.Count - 1; iSub >= 0; iSub--)\n            {\n                // Get the subscription\n                var sub = subscriptions[iSub];\n\n                // Alive?\n                if (sub.Instance.IsAlive)\n                {\n                    // Call the subscriber safely\n                    sub.Method.Invoke(sub.Instance.Target, parameters);\n                }\n                else\n                {\n                    // Reference dead. Might as well remove it.\n                    subscriptions.RemoveAt(iSub);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing expired registration for event '{0}' and object ID {1}. New total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n                    #endif\n                }\n            }\n        }\n        #endregion // Overrides / Event Handlers\n\n        #region Internal Methods\n        /// <summary>\n        /// Adds a weak subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"handler\">\n        /// The handler to subscribe.\n        /// </param>\n        private void Subscribe(Delegate handler)\n        {\n            // Try to find existing subscription\n            var existing = FindSubscription(handler);\n\n            // If not subscribed yet, subscribe\n            if (existing == null)\n            {\n                subscriptions.Add(new WeakSubscription(handler));\n            }\n        }\n\n        /// <summary>\n        /// Removes a subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"handler\">\n        /// The handler to unsubscribe.\n        /// </param>\n        private void Unsubscribe(Delegate handler)\n        {\n            // Try to find existing subscription\n            var existing = FindSubscription(handler);\n\n            // If found, remove it\n            if (existing != null)\n            {\n                subscriptions.Remove(existing);\n            }\n        }\n        #endregion // Internal Methods\n        #endregion // Instance Version\n    }\n\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Model/SampleInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Controls;\n\nnamespace AdaptiveUI.Model\n{\n    /// <summary>\n    /// An entity class for representing a sample.\n    /// </summary>\n    public class SampleInfo\n    {\n        /// <summary>\n        /// Gets or sets an icon for the sample.\n        /// </summary>\n        public IconElement Icon { get; set; }\n\n        /// <summary>\n        /// Gets or sets a title for the sample.\n        /// </summary>\n        public string Title { get; set; }\n\n        /// <summary>\n        /// Gets or sets the type of the sample\n        /// </summary>\n        public Type Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"a0441d97-4c5f-4433-80de-02cf19591a18\"\n    Publisher=\"CN=jbienz\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"a0441d97-4c5f-4433-80de-02cf19591a18\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>AdaptiveUI</DisplayName>\n    <PublisherDisplayName>jbienz</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"AdaptiveUI.App\">\n      <uap:VisualElements\n        DisplayName=\"AdaptiveUI\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"AdaptiveUI\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"AdaptiveUI\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"AdaptiveUI\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Themes/Generic.xaml",
    "content": "<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Template10.Controls\" xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"d\">\n\n    <Style TargetType=\"controls:AutoNavButton\">\n        <Setter Property=\"Visibility\" Value=\"Collapsed\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"controls:AutoNavButton\">\n                    <Grid\n\t\t\t\t\t\tBackground=\"{TemplateBinding Background}\"\n\t\t\t\t\t\tHeight=\"48\" Width=\"48\">\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"EnabledGroup\">\n                                <VisualState x:Name=\"Disabled\">\n                                    <VisualState.Setters>\n                                        <Setter Property=\"Visibility\" Value=\"Collapsed\" />\n                                    </VisualState.Setters>\n                                </VisualState>\n                                <VisualState x:Name=\"Enabled\">\n                                    <VisualState.Setters>\n                                        <Setter Property=\"Visibility\" Value=\"Visible\" />\n                                    </VisualState.Setters>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"ModeGroup\">\n                                <VisualState x:Name=\"Back\">\n                                    <VisualState.Setters>\n                                        <Setter Target=\"SymbolHolder.Symbol\" Value=\"Back\" />\n                                    </VisualState.Setters>\n                                </VisualState>\n                                <VisualState x:Name=\"Forward\">\n                                    <VisualState.Setters>\n                                        <Setter Target=\"SymbolHolder.Symbol\" Value=\"Forward\" />\n                                    </VisualState.Setters>\n                                </VisualState>\n                                <VisualState x:Name=\"Home\">\n                                    <VisualState.Setters>\n                                        <Setter Target=\"SymbolHolder.Symbol\" Value=\"Home\" />\n                                    </VisualState.Setters>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Button x:Name=\"NavButton\" Background=\"Transparent\" BorderBrush=\"Transparent\">\n                            <SymbolIcon x:Name=\"SymbolHolder\" Symbol=\"Back\" RequestedTheme=\"{TemplateBinding RequestedTheme}\" />\n                        </Button>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/ApiInformationTrigger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Foundation.Metadata;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Triggers\n{\n    /// <summary>\n    /// A trigger that can be used to check for available APIs.\n    /// </summary>\n    public class ApiInformationTrigger : StateTriggerBase\n    {\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"ApiInformationTrigger\"/> instance.\n        /// </summary>\n        public ApiInformationTrigger()\n        {\n            EvaluateTrigger();\n        }\n        #endregion // Constructors\n\n\n        #region Internal Methods\n        /// <summary>\n        /// Reevaluates the trigger value.\n        /// </summary>\n        private void EvaluateTrigger()\n        {\n            // Flags for evaluation\n            bool anySpecified = false;\n            bool anyMet = false;\n            bool allMet = true;\n\n            // Check type availability?\n            if (!string.IsNullOrEmpty(typeName))\n            {\n                anySpecified = true;\n                if (ApiInformation.IsTypePresent(typeName))\n                {\n                    anyMet = true;\n                }\n                else\n                {\n                    allMet = false;\n                }\n            }\n\n            // Check contract availability?\n            if (!string.IsNullOrEmpty(contractName))\n            {\n                anySpecified = true;\n\n                // Evaluate, using minor version if specified\n                bool contractMet = (contractMinorVersion.HasValue ? ApiInformation.IsApiContractPresent(contractName, (ushort)contractMajorVersion, (ushort)contractMinorVersion.Value) : ApiInformation.IsApiContractPresent(contractName, (ushort)contractMajorVersion));\n                if (contractMet)\n                {\n                    anyMet = true;\n                }\n                else\n                {\n                    allMet = false;\n                }\n            }\n\n            // We don't want to trigger if no APIs were specified at all\n            if (!anySpecified)\n            {\n                SetActive(false);\n            }\n            // Are all required?\n            else if (requireAll)\n            {\n                SetActive(allMet);\n            }\n            // Only one is required\n            else\n            {\n                SetActive(anyMet);\n            }\n        }\n        #endregion // Internal Methods\n\n\n        #region Public Properties\n        private int contractMajorVersion = 1;\n        /// <summary>\n        /// Gets or sets the major version of the contract that must be present to satisfy the trigger.\n        /// </summary>\n        /// <value>\n        /// The major version of the contract that must be present to satisfy the trigger. The default is 1.\n        /// </value>\n        public int ContractMajorVersion\n        {\n            get\n            {\n                return contractMajorVersion;\n            }\n            set\n            {\n                if (contractMajorVersion != value)\n                {\n                    // Validate range because the xaml value converter can't handle ushort. It can only int.\n                    if ((value < ushort.MinValue) || (value > ushort.MaxValue)) throw new ArgumentOutOfRangeException(\"value\");\n\n                    // Store\n                    contractMajorVersion = value;\n\n                    // Reevaluate\n                    EvaluateTrigger();\n                }\n            }\n        }\n\n        private int? contractMinorVersion = null;\n        /// <summary>\n        /// Gets or sets the minor version of the contract that must be present to satisfy the trigger.\n        /// </summary>\n        /// <value>\n        /// The minor version of the contract that must be present to satisfy the trigger or <see langword=\"null\"/> to not require a minor version. The default is null.\n        /// </value>\n        public int? ContractMinorVersion\n        {\n            get\n            {\n                return contractMinorVersion;\n            }\n            set\n            {\n                if (contractMinorVersion != value)\n                {\n                    // If there is a value, validate range because the xaml value converter can't handle ushort. It can only int.\n                    if (value.HasValue)\n                    {\n                        if ((value.Value < ushort.MinValue) || (value.Value > ushort.MaxValue)) throw new ArgumentOutOfRangeException(\"value\");\n                    }\n\n                    // Store\n                    contractMinorVersion = value;\n\n                    // Reevaluate\n                    EvaluateTrigger();\n                }\n            }\n        }\n\n        private string contractName;\n        /// <summary>\n        /// Gets or sets the name of the contract that will be tested with ApiInformation.IsApiContractPresent.\n        /// </summary>\n        /// <value>\n        /// The name of the contract that will be tested with ApiInformation.IsApiContractPresent.\n        /// </value>\n        /// <remarks>\n        /// An example value for this property is \"Windows.Devices.Scanners.ScannerDeviceContract\" which checks for the availability of a document scanner.\n        /// </remarks>\n        public string ContractName\n        {\n            get\n            {\n                return contractName;\n            }\n            set\n            {\n                if (contractName != value)\n                {\n                    contractName = value;\n                    EvaluateTrigger();\n                }\n            }\n        }\n\n        private bool requireAll = true;\n        /// <summary>\n        /// Gets or sets a value that indicates if all specified APIs must be present to satisfy the trigger.\n        /// </summary>\n        /// <value>\n        /// <c>true</c> if all specified APIs must be present to satisfy the trigger; otherwise <c>false</c>. The default is <c>true</c>.\n        /// </value>\n        public bool RequireAll\n        {\n            get\n            {\n                return requireAll;\n            }\n            set\n            {\n                if (requireAll != value)\n                {\n                    requireAll = value;\n                    EvaluateTrigger();\n                }\n            }\n        }\n\n        private string typeName;\n        /// <summary>\n        /// Gets or sets the name of the type that will be tested with ApiInformation.IsTypePresent.\n        /// </summary>\n        /// <value>\n        /// The name of the type that will be tested with ApiInformation.IsTypePresent.\n        /// </value>\n        /// <remarks>\n        /// An example value for this property is \"Windows.Phone.UI.Input.HardwareButtons\" which represents the hardware back button on phone devices.\n        /// </remarks>\n        public string TypeName\n        {\n            get\n            {\n                return typeName;\n            }\n            set\n            {\n                if (typeName != value)\n                {\n                    typeName = value;\n                    EvaluateTrigger();\n                }\n            }\n        }\n        #endregion // Public Properties\n\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/ControlSizeTrigger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Triggers\n{\n    public class ControlSizeTrigger : StateTriggerBase\n    {\n        //private variables\n        private double _minHeight, _minWidth = -1;\n        private FrameworkElement _targetElement;\n        private double _currentHeight, _currentWidth;\n        //public properties to set from XAML\n        public double MinHeight\n        {\n            get\n            {\n                return _minHeight;\n            }\n            set\n            {\n                _minHeight = value;\n            }\n        }\n        public double MinWidth\n        {\n            get\n            {\n                return _minWidth;\n            }\n            set\n            {\n                _minWidth = value;\n            }\n        }\n        public FrameworkElement TargetElement\n        {\n            get\n            {\n                return _targetElement;\n            }\n            set\n            {\n                _targetElement = value;\n                _targetElement.SizeChanged += _targetElement_SizeChanged;\n            }\n        }\n        //Handle event to get current values\n        private void _targetElement_SizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            _currentHeight = e.NewSize.Height;\n            _currentWidth = e.NewSize.Width;\n            UpdateTrigger();\n        }\n        //Logic to evaluate and apply trigger value\n        private void UpdateTrigger()\n        {\n            //if target is set and either minHeight or minWidth is set, proceed\n            if (_targetElement != null && (_minWidth > 0 || _minHeight > 0))\n            {\n                //if both minHeight and minWidth are set, then both conditions must be satisfied\n                if (_minHeight > 0 && _minWidth > 0)\n                {\n                    SetActive((_currentHeight >= _minHeight) && (_currentWidth >= _minWidth));\n                }\n                //if only one of them is set, then only that condition needs to be satisfied\n                else if (_minHeight > 0)\n                {\n                    SetActive(_currentHeight >= _minHeight);\n                }\n                else\n                {\n                    SetActive(_currentWidth >= _minWidth);\n                }\n            }\n            else\n            {\n                SetActive(false);\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/DeviceFamilyTrigger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Triggers\n{\n    public class DeviceFamilyTrigger : StateTriggerBase\n    {\n        private string _deviceFamily;\n        public string DeviceFamily\n        {\n            get { return _deviceFamily; }\n            set\n            {\n                var qualifiers = Windows.ApplicationModel.Resources.Core\n                    .ResourceContext.GetForCurrentView().QualifierValues;\n                if (qualifiers.ContainsKey(\"DeviceFamily\"))\n                    SetActive(qualifiers[\"DeviceFamily\"] == (_deviceFamily = value));\n                else\n                    SetActive(false);\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/InputTypeTrigger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Devices.Input;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Input;\n\nnamespace Template10.Triggers\n{\n    public class InputTypeTrigger : StateTriggerBase\n    {\n        //private variables\n        private FrameworkElement _targetElement;\n        private PointerDeviceType _lastPointerType, _triggerPointerType;\n        //public properties to set from XAML\n        public FrameworkElement TargetElement\n        {\n            get\n            {\n                return _targetElement;\n            }\n            set\n            {\n                _targetElement = value;\n                _targetElement.AddHandler(FrameworkElement.PointerPressedEvent, new PointerEventHandler(_targetElement_PointerPressed), true);\n            }\n        }\n        public PointerDeviceType PointerType\n        {\n            get\n            {\n                return _triggerPointerType;\n            }\n            set\n            {\n                _triggerPointerType = value;\n            }\n        }\n        //Handle event to get current values\n        private void _targetElement_PointerPressed(object sender, PointerRoutedEventArgs e)\n        {\n            _lastPointerType = e.Pointer.PointerDeviceType;\n            UpdateTrigger();\n        }\n        //Logic to evaluate and apply trigger value\n        public void UpdateTrigger()\n        {\n            SetActive(_triggerPointerType == _lastPointerType);\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/InteractionModeTrigger.cs",
    "content": "﻿using Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\n\nnamespace AdaptiveUI.Triggers\n{\n    class InteractionModeTrigger : StateTriggerBase\n    {\n        public InteractionModeTrigger()\n        {\n            Window.Current.SizeChanged += (s, e) => Update();\n        }\n\n        private UserInteractionMode _mode;\n        public UserInteractionMode Mode\n        {\n            get { return _mode; }\n            set { _mode = value; Update(); }\n        }\n\n        void Update()\n        {\n            var viewSettings = Windows.UI.ViewManagement.UIViewSettings.GetForCurrentView();\n            SetActive(viewSettings.UserInteractionMode.Equals(Mode));\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/NetworkAvailableStateTrigger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Networking.Connectivity;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Triggers\n{\n\tpublic class NetworkAvailableStateTrigger : StateTriggerBase\n    {\n        public NetworkAvailableStateTrigger()\n        {\n            NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;\n            UpdateState();\n        }\n\n        private async void NetworkInformation_NetworkStatusChanged(object sender)\n        {\n            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, UpdateState);\n        }\n\n        private void UpdateState()\n        {\n            bool isConnected = false;\n            var profile = NetworkInformation.GetInternetConnectionProfile();\n            // TODO: complete check\n            if (profile != null)\n                isConnected = profile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;\n            SetActive(\n                 isConnected && ConnectionState == ConnectionState.Connected ||\n                !isConnected && ConnectionState == ConnectionState.Disconnected);\n        }\n\n        public ConnectionState ConnectionState\n        {\n            get { return (ConnectionState)GetValue(ConnectionStateProperty); }\n            set { SetValue(ConnectionStateProperty, value); }\n        }\n\n        public static readonly DependencyProperty ConnectionStateProperty =\n            DependencyProperty.Register(\"ConnectionState\", typeof(ConnectionState), typeof(NetworkAvailableStateTrigger),\n            new PropertyMetadata(ConnectionState.Connected, OnConnectionStatePropertyChanged));\n\n        private static void OnConnectionStatePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)\n        {\n            var obj = (NetworkAvailableStateTrigger)d;\n            obj.UpdateState();\n        }\n    }\n\n    public enum ConnectionState\n    {\n        Connected,\n        Disconnected,\n    }\n\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Triggers/OrientationTrigger.cs",
    "content": "﻿using AdaptiveUI.Extensions;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Triggers\n{\n    /// <summary>\n    /// A trigger that changes state based on the orientation of the current window.\n    /// </summary>\n    public class OrientationTrigger : StateTriggerBase\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"OrientationTrigger\"/> instance.\n        /// </summary>\n        public OrientationTrigger()\n        {\n            // Get application main window\n            var win = Window.Current;\n\n            // Create a weak subscription to the SizeChanged event so that we don't pin the trigger or page in memory\n            WeakEvent.Subscribe<WindowSizeChangedEventHandler>(win, nameof(win.SizeChanged), Window_SizeChanged);\n\n            // Calculate the initial state\n            CalculateState();\n        }\n        #endregion // Constructors\n\n\n        #region Internal Methods\n        private void CalculateState()\n        {\n            var currentOrientation = ApplicationViewOrientation.Landscape;\n            var window = Window.Current;\n            if (window.Bounds.Width >= window.Bounds.Height)\n            {\n                currentOrientation = ApplicationViewOrientation.Landscape;\n            }\n            else\n            {\n                currentOrientation = ApplicationViewOrientation.Portrait;\n            }\n            SetActive(currentOrientation == orientation);\n        }\n        #endregion // Internal Methods\n\n        #region Overrides / Event Handlers\n        private void Window_SizeChanged(object sender, WindowSizeChangedEventArgs e)\n        {\n            // System.Diagnostics.Debug.WriteLine(string.Format(\"Size Changed {0}\", this.GetHashCode()));\n            CalculateState();\n        }\n        #endregion // Overrides / Event Handlers\n\n\n        #region Public Properties\n        private ApplicationViewOrientation orientation;\n        /// <summary>\n        /// Gets or sets the orientation that will satisfy the trigger.\n        /// </summary>\n        /// <value>\n        /// The orientation that will satisfy the trigger.\n        /// </value>\n        public ApplicationViewOrientation Orientation\n        {\n            get\n            {\n                return orientation;\n            }\n            set\n            {\n                if (orientation != value)\n                {\n                    orientation = value;\n                    CalculateState();\n                }\n            }\n        }\n        #endregion // Public Properties\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/ApiInformationPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AdaptiveUI.Views.ApiInformationPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AdaptiveUI.Views\"\n    xmlns:controls=\"using:Template10.Controls\"\n    xmlns:trig=\"using:Template10.Triggers\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Light\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup x:Name=\"ScannerGroup\">\n                <VisualState x:Name=\"scannerAvailableState\">\n                    <VisualState.Setters>\n                        <Setter Target=\"ScanButton.Visibility\" Value=\"Visible\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <trig:ApiInformationTrigger ContractName=\"Windows.Devices.Scanners.ScannerDeviceContract\" ContractMajorVersion=\"1\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n            </VisualStateGroup>\n            <VisualStateGroup x:Name=\"SettingsGroup\">\n                <VisualState x:Name=\"settingsAvailableState\">\n                    <VisualState.Setters>\n                        <Setter Target=\"SettingsButton.Visibility\" Value=\"Visible\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <trig:ApiInformationTrigger TypeName=\"Windows.UI.ApplicationSettings.SettingsPane\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <StackPanel Orientation=\"Horizontal\">\n            <controls:AutoNavButton Grid.Column=\"0\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Margin=\"24,0,0,0\"/>\n            <TextBlock  Grid.Column=\"1\" HorizontalAlignment=\"Left\" TextWrapping=\"NoWrap\" TextTrimming=\"CharacterEllipsis\" Text=\"API Information Trigger\" Style=\"{StaticResource HeaderTextBlockStyle}\" Margin=\"24,18\"/>\n        </StackPanel>\n        <Grid Grid.Row=\"1\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"130,130\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"150\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"50\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n            <RichTextBlock Grid.Row=\"0\" Grid.ColumnSpan=\"2\" FontSize=\"32\">\n                <Paragraph>\n                    <Run Text=\"This sample demonstrates the use of \"/>\n                    <Run FontWeight=\"Bold\" Text=\"ApiInformationTrigger\"/>\n                    <Run Text=\" to show and hide items:\"/>\n                </Paragraph>\n            </RichTextBlock>\n            <RichTextBlock Grid.Row=\"2\" FontSize=\"20\">\n                <Paragraph>\n                    <Run Text=\"If your device supports a scanner you will see a scanner button to the right.\"/>\n                </Paragraph>\n            </RichTextBlock>\n            <Button Grid.Row=\"2\" Grid.Column=\"1\"  x:Name=\"ScanButton\" Margin=\"24,18\" Visibility=\"Collapsed\">\n                <Button.RenderTransform>\n                    <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2\" ScaleY=\"2\" />\n                </Button.RenderTransform>\n                <SymbolIcon Symbol=\"Scan\" />\n            </Button>\n            <RichTextBlock Grid.Row=\"3\" FontSize=\"20\">\n                <Paragraph>\n                    <Run Text=\"If your device supports the settings pane you will see a settings button to the right.\"/>\n                </Paragraph>\n            </RichTextBlock>\n            <Button Grid.Row=\"3\" Grid.Column=\"1\"  x:Name=\"SettingsButton\" Margin=\"24,18\" Visibility=\"Collapsed\">\n                <Button.RenderTransform>\n                    <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2\" ScaleY=\"2\" />\n                </Button.RenderTransform>\n                <SymbolIcon Symbol=\"Setting\" />\n            </Button>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/ApiInformationPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace AdaptiveUI.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class ApiInformationPage : Page\n    {\n        public ApiInformationPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AdaptiveUI.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:views=\"using:AdaptiveUI.Views\"\n    xmlns:controls=\"using:Template10.Controls\"\n    xmlns:mod=\"using:AdaptiveUI.Model\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" d:DataContext=\"{d:DesignInstance Type=views:MainPage, IsDesignTimeCreatable=False}\" RequestedTheme=\"Light\">\n    \n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n            <controls:AutoNavButton VerticalAlignment=\"Center\" Margin=\"24,0,0,0\" />\n            <TextBlock Grid.Column=\"1\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Adaptive UI Samples\" Style=\"{StaticResource HeaderTextBlockStyle}\" Margin=\"24,18\"/>\n            <controls:AutoNavButton Grid.Column=\"2\" Mode=\"Forward\" VerticalAlignment=\"Center\" Margin=\"24,0,0,0\" />\n        </Grid>\n        \n        <GridView x:Name=\"SampleGrid\" Margin=\"40\" Grid.Row=\"1\" IsItemClickEnabled=\"True\" ItemClick=\"SampleGrid_ItemClick\">\n            <GridView.ItemTemplate>\n                <DataTemplate>\n                    <Grid Background=\"DarkCyan\" Margin=\"15\" Height=\"100\" Width=\"300\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"*\" />\n                        </Grid.ColumnDefinitions>\n                            <ContentControl Content=\"{Binding Icon}\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"30\" />\n                        <TextBlock Grid.Column=\"1\" Text=\"{Binding Title}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"20\" />\n                    </Grid>\n                </DataTemplate>\n            </GridView.ItemTemplate>\n            <mod:SampleInfo Title=\"API Information\" Type=\"views:ApiInformationPage\">\n                <mod:SampleInfo.Icon>\n                    <PathIcon RenderTransformOrigin=\"0.5,0.5\" Data=\"M13.3623971939087,2.79566884040833L20,7.71273326873779 20,10.2748641967773 13.3623971939087,15.1699247360229 13.3623971939087,12.5050811767578 17.707878112793,9.01392650604248 17.707878112793,8.97249794006348 13.3623971939087,5.48113632202148 13.3623971939087,2.79566884040833z M6.63854169845581,2.79566884040833L6.63854169845581,5.46168327331543 2.29386949539185,8.95281982421875 2.29386949539185,8.99310493469238 6.63854169845581,12.4855813980103 6.63854169845581,15.1699247360229 0,10.2542381286621 0,7.69191074371338 6.63854169845581,2.79566884040833z M10.60608959198,0L12.4042568206787,0.311282575130463 9.37306118011475,17.8980922698975 7.57605648040771,17.587963104248 10.60608959198,0z\">\n                        <PathIcon.RenderTransform>\n                            <ScaleTransform ScaleX=\"2\" ScaleY=\"2\" />\n                        </PathIcon.RenderTransform>\n                    </PathIcon>\n                </mod:SampleInfo.Icon>\n            </mod:SampleInfo>\n            <!--<mod:SampleInfo Title=\"Device Family\" Type=\"views:ApiInformationPage\">\n                <mod:SampleInfo.Icon>\n                    <PathIcon RenderTransformOrigin=\"0.5,0.5\" Data=\"M 6.7480469 3.265625 L 6.7480469 14.623047 L 33.326172 14.623047 L 33.326172 3.265625 L 6.7480469 3.265625 z M 8.2773438 4.7636719 L 31.796875 4.7636719 L 31.796875 13.123047 L 8.2773438 13.123047 L 8.2773438 9.7070312 L 20.253906 9.7070312 L 20.253906 8.1796875 L 8.2773438 8.1796875 L 8.2773438 4.7636719 z M 28.650391 7.5136719 C 27.820875 7.5136719 27.148438 8.1869511 27.148438 9.0175781 C 27.148438 9.8476491 27.820875 10.521484 28.650391 10.521484 C 29.481018 10.521484 30.154297 9.8476491 30.154297 9.0175781 C 30.154297 8.1875071 29.481573 7.5136719 28.650391 7.5136719 z M 28.650391 8.2148438 C 29.095132 8.2148438 29.453125 8.5739481 29.453125 9.0175781 C 29.453125 9.4617631 29.095132 9.8203125 28.650391 9.8203125 C 28.207872 9.8203125 27.849609 9.4617631 27.849609 9.0175781 C 27.849609 8.5739481 28.207872 8.2148438 28.650391 8.2148438 z M 0.005859375 19.533203 L 0.005859375 19.863281 C 0.005859375 25.377842 0.0094000035 30.891134 0 36.40625 C -0.000555 36.699971 0.07015775 36.779297 0.37109375 36.779297 C 7.7956508 36.769897 15.218576 36.769897 22.642578 36.779297 C 22.944628 36.779297 23.013672 36.699412 23.013672 36.40625 C 23.003172 30.891689 23.005859 25.377842 23.005859 19.863281 L 23.005859 19.533203 L 0.005859375 19.533203 z M 1.4667969 20.978516 L 21.544922 20.978516 L 21.544922 35.304688 L 1.4667969 35.304688 L 1.4667969 20.978516 z M 30.246094 21.138672 L 30.246094 36.779297 L 40 36.779297 L 40 21.138672 L 30.246094 21.138672 z M 31.207031 22.119141 L 39.037109 22.119141 L 39.037109 23.056641 L 31.207031 23.056641 L 31.207031 22.119141 z M 31.205078 24.068359 L 39.029297 24.068359 L 39.029297 31.873047 L 31.205078 31.873047 L 31.205078 24.068359 z M 10.769531 32.470703 L 10.769531 33.896484 L 12.248047 33.896484 L 12.248047 32.470703 L 10.769531 32.470703 z M 31.210938 32.886719 L 39.033203 32.886719 L 39.033203 35.810547 L 31.210938 35.810547 L 31.210938 32.886719 z M 34.615234 33.845703 L 34.615234 34.859375 L 35.621094 34.859375 L 35.621094 33.845703 L 34.615234 33.845703 z\">\n                        <PathIcon.RenderTransform>\n                            <ScaleTransform ScaleX=\"1.5\" ScaleY=\"1.5\" />\n                        </PathIcon.RenderTransform>\n                    </PathIcon>\n                </mod:SampleInfo.Icon>\n            </mod:SampleInfo>-->\n            <mod:SampleInfo Title=\"Orientation\" Type=\"views:OrientationPage\">\n                <mod:SampleInfo.Icon>\n                    <PathIcon RenderTransformOrigin=\"0.5,0.5\" Data=\"M 19.769531 5.8164062 C 19.414906 5.8158592 19.318359 5.8994307 19.318359 6.2617188 C 19.321144 8.4289821 19.316924 10.596368 19.318359 12.763672 L 0.095703125 12.763672 L 0.095703125 13.160156 C 0.095703125 19.800645 0.098830625 26.442401 0.087890625 33.083984 C 0.087343625 33.438611 0.17286725 33.535704 0.53515625 33.535156 C 9.4763383 33.523666 18.416787 33.523666 27.357422 33.535156 C 27.389865 33.535205 27.409395 33.528964 27.4375 33.527344 C 31.522515 33.525489 35.606518 33.521484 39.691406 33.521484 L 40.087891 33.521484 L 40.087891 5.8222656 C 39.945055 5.8222656 39.818918 5.8236717 39.691406 5.8242188 C 33.050917 5.8242188 26.411114 5.8278963 19.769531 5.8164062 z M 16.652344 6.765625 C 16.575724 6.845525 16.498105 6.9243926 16.416016 7.0097656 C 16.584573 7.1712086 16.752459 7.3326976 16.919922 7.4941406 C 16.131316 7.3272256 15.391337 7.4317933 14.71875 7.8789062 C 14.045617 8.3249252 13.644543 8.9568554 13.517578 9.7558594 C 13.413051 10.410385 13.558914 11.061413 13.886719 11.601562 L 14.134766 11.353516 C 13.707354 10.588443 13.718617 9.6044551 14.236328 8.8300781 C 14.925332 7.7995821 16.1573 7.5922816 16.990234 7.9003906 C 16.807449 8.0902906 16.630363 8.2726785 16.449219 8.4609375 C 16.530759 8.5391975 16.609317 8.6140064 16.691406 8.6933594 C 17.00444 8.3671914 17.319306 8.0414845 17.636719 7.7109375 C 17.310003 7.3968085 16.982891 7.083584 16.652344 6.765625 z M 21.091797 7.5820312 L 38.345703 7.5820312 L 38.345703 31.761719 L 27.804688 31.761719 C 27.795222 25.561422 27.794922 19.360453 27.794922 13.160156 L 27.794922 12.763672 L 21.091797 12.763672 L 21.091797 7.5820312 z M 1.8554688 14.505859 L 19.318359 14.505859 C 19.321207 20.257134 19.325019 26.008892 19.318359 31.759766 L 1.8554688 31.759766 L 1.8554688 14.505859 z M 21.091797 14.505859 L 26.035156 14.505859 L 26.035156 31.759766 L 21.091797 31.759766 L 21.091797 14.505859 z M 22.789062 18.785156 L 22.789062 20.566406 L 24.507812 20.566406 L 24.507812 18.785156 L 22.789062 18.785156 z M 13.058594 28.345703 L 13.058594 30.064453 L 14.839844 30.064453 L 14.839844 28.345703 L 13.058594 28.345703 z\">\n                        <PathIcon.RenderTransform>\n                            <ScaleTransform ScaleX=\"1.5\" ScaleY=\"1.5\" />\n                        </PathIcon.RenderTransform>\n                    </PathIcon>\n                </mod:SampleInfo.Icon>\n            </mod:SampleInfo>\n            <mod:SampleInfo Title=\"Window Size\" Type=\"views:WindowSizePage\">\n                <mod:SampleInfo.Icon>\n                    <PathIcon RenderTransformOrigin=\"0.5,0.5\" Data=\"M 2 3 C 0.89546875 3 0 3.8954688 0 5 L 0 26 C 0 27.104453 0.89546875 28 2 28 L 17 28 L 17 33 L 13 33 C 11.895469 33 11 33.895547 11 35 L 11 37 L 29 37 L 29 35 C 29 33.895547 28.104531 33 27 33 L 23 33 L 23 28 L 38 28 C 39.104453 28 40 27.104453 40 26 L 40 5 C 40 3.8954687 39.104453 3 38 3 L 2 3 z M 3 6 L 37 6 L 37 25 L 3 25 L 3 6 z M 11 7 L 11 24 L 16 24 L 24 24 L 29 24 L 29 7 L 24 7 L 16 7 L 11 7 z M 13.5 8 C 14.328594 8 15 8.671875 15 9.5 C 15 10.328672 14.328594 11 13.5 11 C 12.671406 11 12 10.328594 12 9.5 C 12 8.671875 12.671406 8 13.5 8 z M 16 8 L 24 8 L 24 15 L 16 15 L 16 8 z M 26.5 8 C 27.328125 8 28 8.671875 28 9.5 C 28 10.328594 27.328125 11 26.5 11 C 25.671875 11 25 10.328594 25 9.5 C 25 8.671875 25.671875 8 26.5 8 z M 13.5 12 C 14.328594 12 15 12.671875 15 13.5 C 15 14.328125 14.328594 15 13.5 15 C 12.671406 15 12 14.328125 12 13.5 C 12 12.671875 12.671406 12 13.5 12 z M 26.5 12 C 27.328125 12 28 12.671875 28 13.5 C 28 14.328047 27.328125 15 26.5 15 C 25.671875 15 25 14.328125 25 13.5 C 25 12.671875 25.671797 12 26.5 12 z M 13.5 16 C 14.328594 16 15 16.671953 15 17.5 C 15 18.328125 14.328594 19 13.5 19 C 12.671406 19 12 18.328203 12 17.5 C 12 16.671953 12.671406 16 13.5 16 z M 16 16 L 24 16 L 24 23 L 16 23 L 16 16 z M 26.5 16 C 27.328125 16 28 16.671875 28 17.5 C 28 18.328594 27.328125 19 26.5 19 C 25.671875 19 25 18.328594 25 17.5 C 25 16.671875 25.671875 16 26.5 16 z M 13.5 20 C 14.328594 20 15 20.671875 15 21.5 C 15 22.328125 14.328594 23 13.5 23 C 12.671406 23 12 22.328203 12 21.5 C 12 20.671953 12.671406 20 13.5 20 z M 26.5 20 C 27.328125 20 28 20.671875 28 21.5 C 28 22.328125 27.328125 23 26.5 23 C 25.671875 23 25 22.328203 25 21.5 C 25 20.671953 25.671797 20 26.5 20 z\" />\n                </mod:SampleInfo.Icon>\n            </mod:SampleInfo>\n        </GridView>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/MainPage.xaml.cs",
    "content": "﻿using AdaptiveUI.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\nusing Windows.UI.Xaml.Shapes;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace AdaptiveUI.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private void SampleGrid_ItemClick(object sender, ItemClickEventArgs e)\n        {\n            //var \n            //await Windows.Graphics.Printing.PrintManager.ShowPrintUIAsync();\n\n            // Which sample?\n            var sample = (SampleInfo)e.ClickedItem;\n\n            // Go!\n            Frame.Navigate(sample.Type);\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/OrientationPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AdaptiveUI.Views.OrientationPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AdaptiveUI.Views\"\n    xmlns:controls=\"using:Template10.Controls\"\n    xmlns:trig=\"using:Template10.Triggers\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Light\">\n    \n    <Page.Resources>\n        <x:Int32 x:Key=\"BodyFontSize\">32</x:Int32>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup x:Name=\"AdaptiveGroup\">\n                <VisualState x:Name=\"wideState\">\n                    <VisualState.Setters>\n                        <!--<Setter Target=\"Resources.BodyFontSize\" Value=\"32\"/>-->\n                        <Setter Target=\"TextLayout.(RelativePanel.RightOf)\" Value=\"ImageControl\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <trig:OrientationTrigger Orientation=\"Landscape\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n                <VisualState x:Name=\"tallState\">\n                    <VisualState.Setters>\n                        <!--<Setter Target=\"{ThemeResource ResourceKey=BodyFontSize}\" Value=\"24\"/>-->\n                        <Setter Target=\"TitleControl.FontSize\" Value=\"24\" />\n                        <Setter Target=\"ImageControl.Width\" Value=\"500\" />\n                        <Setter Target=\"ImageControl.Source\" Value=\"ms-appx:///Assets/BirdsWide.jpg\" />\n                        <Setter Target=\"TextLayout.(RelativePanel.Below)\" Value=\"ImageControl\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <trig:OrientationTrigger Orientation=\"Portrait\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n        \n        <StackPanel Orientation=\"Horizontal\">\n            <controls:AutoNavButton HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Margin=\"24,0,0,0\"/>\n            <TextBlock x:Name=\"TitleControl\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Naumann, Naturgeschichte der Vögel Mitteleuropas\" VerticalAlignment=\"Top\" Style=\"{StaticResource HeaderTextBlockStyle}\" Margin=\"24,18\"/>\n        </StackPanel>\n        \n        <RelativePanel Grid.Row=\"1\">\n            <Image x:Name=\"ImageControl\" Source=\"ms-appx:///Assets/BirdsTall.jpg\" Grid.Row=\"1\" HorizontalAlignment=\"Left\" Margin=\"10\"/>\n            <ScrollViewer x:Name=\"TextLayout\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Margin=\"10\" HorizontalScrollMode=\"Disabled\">\n                <RichTextBlock x:Name=\"TextControl\" FontSize=\"{ThemeResource ResourceKey=BodyFontSize}\">\n                    <Paragraph>\n                        <Run Text=\"This sample demonstrates the use of \"/>\n                        <Run FontWeight=\"Bold\" Text=\"OrientationTrigger\"/>\n                        <Run Text=\" to change properties for two different modes:\"/>\n                    </Paragraph>\n                    <Paragraph/>\n                    <Paragraph TextIndent=\"50\">\n                        <Run Text=\"&#x27A4; Landscape\" />\n                    </Paragraph>\n                    <Paragraph TextIndent=\"50\">\n                        <Run Text=\"&#x27A4; Portrait\" />\n                    </Paragraph>\n                    <Paragraph/>\n                    <Paragraph>\n                        <Run Text=\"The title font size changes, the image changes and the text will move either beside or below the image.\"/>\n                    </Paragraph>\n\n                </RichTextBlock>\n            </ScrollViewer>\n        </RelativePanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/OrientationPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace AdaptiveUI.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class OrientationPage : Page\n    {\n        public OrientationPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/WindowSizePage.xaml",
    "content": "﻿<Page\n    x:Class=\"AdaptiveUI.Views.WindowSizePage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AdaptiveUI.Views\"\n    xmlns:controls=\"using:Template10.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Light\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <VisualStateManager.VisualStateGroups>\n            <VisualStateGroup x:Name=\"AdaptiveGroup\">\n                <VisualState x:Name=\"wideState\">\n                    <VisualState.Setters>\n                        <Setter Target=\"TextLayout.(RelativePanel.RightOf)\" Value=\"ImageControl\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"800\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n                <VisualState x:Name=\"mediumState\">\n                    <VisualState.Setters>\n                        <Setter Target=\"TitleControl.FontSize\" Value=\"24\" />\n                        <Setter Target=\"ImageControl.Width\" Value=\"300\" />\n                        <Setter Target=\"TextControl.FontSize\" Value=\"20\" />\n                        <Setter Target=\"TextLayout.(RelativePanel.RightOf)\" Value=\"ImageControl\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"600\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n                <VisualState x:Name=\"narrowState\">\n                    <VisualState.Setters>\n                        <Setter Target=\"TitleControl.FontSize\" Value=\"18\" />\n                        <Setter Target=\"ImageControl.Width\" Value=\"400\" />\n                        <Setter Target=\"ImageControl.Source\" Value=\"ms-appx:///Assets/BirdsWide.jpg\" />\n                        <Setter Target=\"TextControl.FontSize\" Value=\"20\" />\n                        <Setter Target=\"TextLayout.(RelativePanel.Below)\" Value=\"ImageControl\" />\n                    </VisualState.Setters>\n                    <VisualState.StateTriggers>\n                        <AdaptiveTrigger MinWindowWidth=\"400\" />\n                    </VisualState.StateTriggers>\n                </VisualState>\n            </VisualStateGroup>\n        </VisualStateManager.VisualStateGroups>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <StackPanel Orientation=\"Horizontal\">\n            <controls:AutoNavButton HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Margin=\"24,0,0,0\"/>\n            <TextBlock x:Name=\"TitleControl\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Naumann, Naturgeschichte der Vögel Mitteleuropas\" VerticalAlignment=\"Top\" Style=\"{StaticResource HeaderTextBlockStyle}\" Margin=\"24,18\"/>\n        </StackPanel>\n        \n        <RelativePanel Grid.Row=\"1\">\n            <Image x:Name=\"ImageControl\" Source=\"ms-appx:///Assets/BirdsTall.jpg\" Grid.Row=\"1\" HorizontalAlignment=\"Left\" Margin=\"10\"/>\n            <ScrollViewer x:Name=\"TextLayout\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Margin=\"10\" HorizontalScrollMode=\"Disabled\">\n                <RichTextBlock x:Name=\"TextControl\" FontSize=\"32\">\n                    <Paragraph>\n                        <Run Text=\"This sample demonstrates the use of \"/>\n                        <Run FontWeight=\"Bold\" Text=\"AdaptiveTrigger\"/>\n                        <Run Text=\" to change properties at three different screen widths:\"/>\n                    </Paragraph>\n                    <Paragraph/>\n                    <Paragraph TextIndent=\"50\">\n                        <Run Text=\"&#x27A4; 800 pixels\" />\n                    </Paragraph>\n                    <Paragraph TextIndent=\"50\">\n                        <Run Text=\"&#x27A4; 600 pixels\" />\n                    </Paragraph>\n                    <Paragraph TextIndent=\"50\">\n                        <Run Text=\"&#x27A4; 400 pixels\" />\n                    </Paragraph>\n                    <Paragraph/>\n                    <Paragraph>\n                        <Run Text=\"You will see font sizes change at the medium threshold (600 pixels) and a the smallest threshold (400 pixels) you will see the image change and the layout will switch to portrait.\"/>\n                    </Paragraph>\n\n                </RichTextBlock>\n            </ScrollViewer>\n        </RelativePanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/Views/WindowSizePage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace AdaptiveUI.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class WindowSizePage : Page\n    {\n        public WindowSizePage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n</packages>"
  },
  {
    "path": "AdaptiveUI/AdaptiveUI.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AdaptiveUI-Blank\", \"AdaptiveUI\\AdaptiveUI-Blank.csproj\", \"{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.Build.0 = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.Build.0 = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.Build.0 = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.ActiveCfg = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.Build.0 = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x64.Deploy.0 = Release|x64\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.ActiveCfg = Release|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.Build.0 = Release|x86\n\t\t{B50A5A2D-3AAE-4AB2-9ED0-B64189A7AFE7}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/AppService_EncoderDecoder.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ClientApp\", \"ClientApp\\ClientApp.csproj\", \"{A10B7BB2-E660-463C-BD80-952AE6306FEF}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ServerApp\", \"ServerApp\\ServerApp.csproj\", \"{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TextEncoderComponent\", \"TextEncoderComponent\\TextEncoderComponent.csproj\", \"{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x64.Build.0 = Debug|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x86.Build.0 = Debug|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|ARM.Build.0 = Release|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x64.ActiveCfg = Release|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x64.Build.0 = Release|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x64.Deploy.0 = Release|x64\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x86.ActiveCfg = Release|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x86.Build.0 = Release|x86\n\t\t{A10B7BB2-E660-463C-BD80-952AE6306FEF}.Release|x86.Deploy.0 = Release|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x64.Build.0 = Debug|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x86.Build.0 = Debug|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|ARM.Build.0 = Release|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x64.ActiveCfg = Release|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x64.Build.0 = Release|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x64.Deploy.0 = Release|x64\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x86.ActiveCfg = Release|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x86.Build.0 = Release|x86\n\t\t{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}.Release|x86.Deploy.0 = Release|x86\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|x64.Build.0 = Debug|x64\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Debug|x86.Build.0 = Debug|x86\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|ARM.Build.0 = Release|ARM\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|x64.ActiveCfg = Release|x64\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|x64.Build.0 = Release|x64\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|x86.ActiveCfg = Release|x86\n\t\t{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ClientApp.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ClientApp\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace ClientApp\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();\n\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/ClientApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{A10B7BB2-E660-463C-BD80-952AE6306FEF}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ClientApp</RootNamespace>\n    <AssemblyName>ClientApp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>ClientApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"ClientApp_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.PersistenceChannel, Version=0.14.3.186, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.PersistenceChannel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ClientApp.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ClientApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n        <StackPanel>\n            <RelativePanel Name=\"rpIn\">\n                <TextBlock Name=\"lblIn\" Width=\"80\" Text=\"Input:\" ></TextBlock>\n                <TextBox Name=\"textBox\" RelativePanel.RightOf=\"lblIn\" Width=\"200\"></TextBox>\n            </RelativePanel>\n            <RelativePanel Name=\"rpOut\">\n                <TextBlock Name=\"lblOut\" Width=\"80\" Text=\"Output: \"  ></TextBlock>\n                <TextBox Name=\"textBoxOutput\" RelativePanel.RightOf=\"lblOut\" Width=\"200\" ></TextBox>\n            </RelativePanel>\n            <RelativePanel Name=\"rpBtn\">\n                <Button Name=\"btnEncode\" Margin=\"0,12,0,0\" Content=\"Encode\" Click=\"ButtonEncode_Click\" ></Button>\n                <Button Name=\"btnDecode\" Margin=\"12,12,0,0\" Content=\"Decode\" Click=\"ButtonDecode_Click\" RelativePanel.RightOf=\"btnEncode\"></Button>\n            </RelativePanel>\n        </StackPanel>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace ClientApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n\n        \n        private AppServiceConnection serviceConnection;\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private async void ButtonEncode_Click(object sender, RoutedEventArgs e)\n        {\n            textBoxOutput.Text=  await CallServiceAsync(\"Encode\");\n        }\n\n        private async void ButtonDecode_Click(object sender, RoutedEventArgs e)\n        {\n            \n            textBoxOutput.Text = await CallServiceAsync(\"Decode\");\n        }\n\n        private async Task<string> CallServiceAsync(string command)\n        {\n            if (serviceConnection == null)\n            {\n                // create a new service connection \n                serviceConnection = new AppServiceConnection();\n\n                // provide app service name specified in appxmanifest\n                serviceConnection.AppServiceName = \"EndcoderDecoderService\";\n\n                // package family name of the ServerApp\n                serviceConnection.PackageFamilyName = \"02977d55-465f-411a-8c54-3b82442099a2_e7qah2kqbxs60\";\n\n                // open connection\n                var status = await serviceConnection.OpenAsync();\n\n                // handle the cases where the appservice connection fails\n                if (status != AppServiceConnectionStatus.Success)\n                {\n                    Debug.WriteLine(\"Failed to open connection: \" + status.ToString());\n                    return \"Error\";\n                }\n            }\n\n            // create a bag of values\n            var message = new ValueSet();\n            message.Add(\"cmd\", command);\n            message.Add(\"txt\", textBox.Text);\n\n            // send the message\n            AppServiceResponse response = await serviceConnection.SendMessageAsync(message);\n            if (response.Status == AppServiceResponseStatus.Success)\n            {\n                var result = response.Message[\"result\"] as string;\n                await new MessageDialog(result).ShowAsync();\n                return result;\n            }\n            else\n            {\n                Debug.WriteLine(\"Message send failed!\");\n                return \"Error\";\n            }\n        }        \n    }\n}\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"802dc35b-382d-44c6-9446-09659647f6de\"\n    Publisher=\"CN=danmeix\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"802dc35b-382d-44c6-9446-09659647f6de\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>ClientApp</DisplayName>\n    <PublisherDisplayName>danmeix</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"ClientApp.App\">\n      <uap:VisualElements\n        DisplayName=\"ClientApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"ClientApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ClientApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ClientApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ClientApp/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.PersistenceChannel\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsApps\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.16-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ServerApp.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ServerApp\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace ServerApp\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();\n\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ServerApp.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ServerApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace ServerApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            ShowPFN();\n        }\n\n        // get the package family name\n        private async void ShowPFN()\n        {\n            var PFN = Windows.ApplicationModel.Package.Current.Id.FamilyName;\n            Debug.WriteLine(\"PFN=\" + PFN);\n            await new MessageDialog(PFN).ShowAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"02977d55-465f-411a-8c54-3b82442099a2\"\n    Publisher=\"CN=danmeix\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"02977d55-465f-411a-8c54-3b82442099a2\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>ServerApp</DisplayName>\n    <PublisherDisplayName>danmeix</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"ServerApp.App\">\n      <uap:VisualElements\n        DisplayName=\"ServerApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"ServerApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.appService\" EntryPoint=\"TextEncoderComponent.EncoderDecoderTask\">\n          <uap:AppService Name=\"EndcoderDecoderService\"/>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ServerApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ServerApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/ServerApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{D87D4A6A-9FA2-4003-A43E-2B88E97C838D}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ServerApp</RootNamespace>\n    <AssemblyName>ServerApp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>ServerApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"ServerApp_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.PersistenceChannel, Version=0.14.3.186, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.PersistenceChannel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\TextEncoderComponent\\TextEncoderComponent.csproj\">\n      <Project>{f8fdb39a-d4f9-4e71-8541-83ae4d98e227}</Project>\n      <Name>TextEncoderComponent</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/ServerApp/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.PersistenceChannel\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsApps\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.16-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/TextEncoderComponent/EncoderDecoderTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation.Collections;\nusing Windows.Security.Cryptography;\n\nnamespace TextEncoderComponent\n{\n    public sealed class EncoderDecoderTask : IBackgroundTask\n    {\n        private BackgroundTaskDeferral serviceDeferral;\n        \n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            //Take a service deferral so the service isn't terminated\n            serviceDeferral = taskInstance.GetDeferral();\n\n            // Associate a cancellation handler with the background task.\n            taskInstance.Canceled += TaskInstance_Canceled;\n\n            var triggerDetails = taskInstance.TriggerDetails as AppServiceTriggerDetails;\n\n            if (triggerDetails != null)\n            {\n                //Listen for incoming app service requests\n                triggerDetails.AppServiceConnection.RequestReceived += OnRequestReceived;\n            }\n        }\n\n        private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            throw new NotImplementedException();\n        }\n\n        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n\n            var message = args.Request.Message;\n            string cmd = message[\"cmd\"] as string;\n            string txt = message[\"txt\"] as string;\n\n            switch (cmd)\n            {\n                case \"Encode\":\n                    {\n                        var messageDeferral = args.GetDeferral();\n\n                        string result = Encode(txt);\n                        var returnMessage = new ValueSet();\n                        returnMessage.Add(\"result\", result);\n                        var responseStatus = await args.Request.SendResponseAsync(returnMessage);\n\n                        messageDeferral.Complete();\n                        break;\n                    }\n\n                case \"Decode\":\n                    {\n                        var messageDeferral = args.GetDeferral();\n\n                        string result = Decode(txt);\n                        var returnMessage = new ValueSet();\n                        returnMessage.Add(\"result\", result);\n                        var responseStatus = await args.Request.SendResponseAsync(returnMessage);\n\n                        messageDeferral.Complete();\n                        break;\n                    }\n                case \"Quit\":\n                    {\n                        serviceDeferral.Complete();\n                        break;\n                    }\n            }\n        }\n        public string Encode(string txt)\n        {\n            var buffer = CryptographicBuffer.ConvertStringToBinary(txt, BinaryStringEncoding.Utf8);\n            return CryptographicBuffer.EncodeToBase64String(buffer);\n        }\n\n        public string Decode(string encodedString)\n        {\n            var buffer = CryptographicBuffer.DecodeFromBase64String(encodedString);\n            return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, buffer);\n        }\n    }\n}\n"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/TextEncoderComponent/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TextEncoderComponent\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TextEncoderComponent\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/TextEncoderComponent/TextEncoderComponent.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{F8FDB39A-D4F9-4E71-8541-83AE4D98E227}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TextEncoderComponent</RootNamespace>\n    <AssemblyName>TextEncoderComponent</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"EncoderDecoderTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppService/AppService_EncoderDecoder/TextEncoderComponent/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/App.xaml",
    "content": "﻿<Application\n    x:Class=\"AppServicesClientApp.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesClientApp\">\n\n</Application>\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace AppServicesClientApp\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/AppServicesClientApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{FC5BB245-AF79-44A0-970D-2CD910C13DE8}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesClientApp</RootNamespace>\n    <AssemblyName>AppServicesClientApp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>AppServicesClientApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"AppServicesClientApp_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AppServicesClientApp.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesClientApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n  <!--<Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">-->\n    <Grid Background=\"White\">\n        <RelativePanel HorizontalAlignment=\"Center\" Margin=\"0,20,0,0\">\n            <TextBlock x:Name=\"Label1\" Text=\"Value 1\" Margin=\"0,10,0,0\"/>\n            <TextBox x:Name=\"Value1\" RelativePanel.RightOf=\"Label1\" Margin=\"10,0,0,0\" InputScope=\"Number\" />\n            <TextBlock x:Name=\"Label2\" Text=\"Value 2\" RelativePanel.Below=\"Label1\" Margin=\"0,30,0,0\"/>\n            <TextBox x:Name=\"Value2\" RelativePanel.Below=\"Value1\" RelativePanel.RightOf=\"Label2\" \n                     Margin=\"10,10,0,0\" InputScope=\"Number\" />\n            <TextBlock x:Name=\"ResultLabel\" Text=\"Result:\" RelativePanel.Below=\"Label2\" Margin=\"0,40,0,0\"/>\n            <TextBlock x:Name=\"ResultTextBox\" FontSize=\"24\" FontWeight=\"Bold\"\n                       RelativePanel.AlignVerticalCenterWith=\"ResultLabel\" RelativePanel.RightOf=\"ResultLabel\" \n                       Margin=\"40,30,0,0\"/>\n        </RelativePanel>\n        <Button x:Name=\"button\" Content=\"Call Service\" \n                HorizontalAlignment=\"Center\" VerticalAlignment=\"Top\" Click=\"button_Click\" Margin=\"0,200,0,0\" FontSize=\"20\"/>\n        <Button x:Name=\"QuitButton\" Content=\"Ask Service to Quit\" \n                HorizontalAlignment=\"Center\" VerticalAlignment=\"Top\" Click=\"QuitButton_Click\"  Margin=\"0,280,0,0\" FontSize=\"20\"/>\n  </Grid>\n</Page>\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace AppServicesClientApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        AppServiceConnection connection = null;\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private async void CallAppService()\n        {\n            await EnsureConnectionToService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"CalcSum\");\n            message.Add(\"Value1\", Int32.Parse(Value1.Text));\n            message.Add(\"Value2\", Int32.Parse(Value2.Text));\n\n            //Send a message  \n            AppServiceResponse response = await connection.SendMessageAsync(message);\n            if (response.Status == AppServiceResponseStatus.Success)\n            {\n                int sum = (int)response.Message[\"Result\"];\n                ResultTextBox.Text = sum.ToString();\n            }\n        }\n\n        private async System.Threading.Tasks.Task EnsureConnectionToService()\n        {\n            if (this.connection == null)\n            {\n                connection = new AppServiceConnection();\n\n                // See the appx manifest of the AppServicesDemp app for this value\n                connection.AppServiceName = \"microsoftDX-appservicesdemo\";\n                // Use the Windows.ApplicationModel.Package.Current.Id.FamilyName API in the \n                // provider app to get this value\n                connection.PackageFamilyName = \"82a987d5-4e4f-4cb4-bb4d-700ede1534ba_nsf9e2fmhb1sj\";\n\n                AppServiceConnectionStatus connectionStatus = await connection.OpenAsync();\n                if (connectionStatus == AppServiceConnectionStatus.Success)\n                {\n                    connection.ServiceClosed += OnServiceClosed;\n                }\n                else\n                {\n                    //Drive the user to store to install the app that provides \n                    //the app service \n                }\n            }\n        }\n\n        private void OnServiceClosed(AppServiceConnection sender, AppServiceClosedEventArgs args)\n        {\n            new MessageDialog(\"Service closed\").ShowAsync();\n        }\n\n        private void button_Click(object sender, RoutedEventArgs e)\n        {\n            CallAppService();\n        }\n\n        private async void QuitButton_Click(object sender, RoutedEventArgs e)\n        {\n            await EnsureConnectionToService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"Quit\");\n\n            //Send a message  \n            await connection.SendMessageAsync(message);\n\n            ClearServiceConnection();\n        }\n\n        private void ClearServiceConnection()\n        {\n            this.connection.Dispose();\n            this.connection = null;\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"2df02794-79d8-4593-b10d-b3280cda5fc9\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"2df02794-79d8-4593-b10d-b3280cda5fc9\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>AppServicesClientApp</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"AppServicesClientApp.App\">\n      <uap:VisualElements\n        DisplayName=\"AppServicesClientApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"AppServicesClientApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesClientApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"AppServicesClientApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"AppServicesClientApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"AppServicesDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesDemo\">\n\n</Application>\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace AppServicesDemo\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/AppServicesDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesDemo</RootNamespace>\n    <AssemblyName>AppServicesDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>AppServicesDemo_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>22b7bf93</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <ProjectReference Include=\"..\\AppServicesDemoTask\\AppServicesDemoTask.csproj\">\n      <Project>{4bc6707d-0179-4332-be2b-cc408e7c03e6}</Project>\n      <Name>AppServicesDemoTask</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"AppServicesDemo_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AppServicesDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n  <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n  </Grid>\n</Page>\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/MainPage.xaml.cs",
    "content": "﻿using System.Diagnostics;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml.Controls;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace AppServicesDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            this.Loaded += (s, e) =>\n            {\n                var currentPackage = Windows.ApplicationModel.Package.Current;\n                var packageFamilyName = currentPackage.Id.FamilyName;\n\n                new MessageDialog(\"PFN = \" + packageFamilyName).ShowAsync();\n                Debug.WriteLine(\"PFN = \" + packageFamilyName);\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"82a987d5-4e4f-4cb4-bb4d-700ede1534ba\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"82a987d5-4e4f-4cb4-bb4d-700ede1534ba\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>AppServicesDemo</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"AppServicesDemo.App\">\n      <uap:VisualElements\n        DisplayName=\"AppServicesDemo\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"AppServicesDemo\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.appService\" \n                       EntryPoint=\"AppServicesDemoTask.AppServiceTask\">\n          <uap:AppService Name=\"microsoftDX-appservicesdemo\" />\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"AppServicesDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"AppServicesDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemoTask/AppServiceTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Notifications;\n\nnamespace AppServicesDemoTask\n{\n    // Background task for an App Service\n    public sealed class AppServiceTask : IBackgroundTask\n    {\n        private static BackgroundTaskDeferral _serviceDeferral;\n\n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            // Associate a cancellation handler with the background task.\n            taskInstance.Canceled += TaskInstance_Canceled;\n\n            // Get the deferral object from the task instance \n            _serviceDeferral = taskInstance.GetDeferral();\n\n            var appService = taskInstance.TriggerDetails as AppServiceTriggerDetails;\n            if (appService != null &&\n                appService.Name == \"microsoftDX-appservicesdemo\")\n            {\n                //ValidateCaller(appService.CallerPackageFamilyName);\n                appService.AppServiceConnection.RequestReceived += AppServiceConnection_RequestReceived;\n            }\n        }\n\n        private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            var message = args.Request.Message;\n            string command = message[\"Command\"] as string;\n\n            switch (command)\n            {\n                case \"CalcSum\":\n                    {\n                        var messageDeferral = args.GetDeferral();\n\n                        int value1 = (int)message[\"Value1\"];\n                        int value2 = (int)message[\"Value2\"];\n\n                        //Set a result to return to the caller \n                        int result = value1 + value2;\n                        var returnMessage = new ValueSet();\n                        returnMessage.Add(\"Result\", result);\n                        var responseStatus = await args.Request.SendResponseAsync(returnMessage);\n\n                        messageDeferral.Complete();\n                        break;\n                    }\n\n                case \"Quit\":\n                    {\n                        //Service was asked to quit. Give us service deferral \n                        //so platform can terminate the background task \n                        _serviceDeferral.Complete();\n                        break;\n                    }\n            }\n        }\n\n        private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            // Maybe do something...\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemoTask/AppServicesDemoTask.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{4BC6707D-0179-4332-BE2B-CC408E7C03E6}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesDemoTask</RootNamespace>\n    <AssemblyName>AppServicesDemoTask</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AppServiceTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/AppServicesDemoTask/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ActionCenterTask\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ActionCenterTask\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SimpleCalculatorAppService/SimpleCalculatorAppServicesDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesDemo\", \"AppServicesDemo\\AppServicesDemo.csproj\", \"{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesDemoTask\", \"AppServicesDemoTask\\AppServicesDemoTask.csproj\", \"{4BC6707D-0179-4332-BE2B-CC408E7C03E6}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesClientApp\", \"AppServicesClientApp\\AppServicesClientApp.csproj\", \"{FC5BB245-AF79-44A0-970D-2CD910C13DE8}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.Build.0 = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.Build.0 = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.Build.0 = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.ActiveCfg = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.Build.0 = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.Deploy.0 = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.ActiveCfg = Release|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.Build.0 = Release|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.Deploy.0 = Release|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x86.Build.0 = Debug|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|ARM.Build.0 = Release|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x64.Build.0 = Release|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x86.ActiveCfg = Release|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x86.Build.0 = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.Build.0 = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.Build.0 = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.Build.0 = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.ActiveCfg = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.Build.0 = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.Deploy.0 = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.ActiveCfg = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.Build.0 = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/App.xaml",
    "content": "﻿<Application\n    x:Class=\"AppServicesClientApp.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesClientApp\">\n\n</Application>\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace AppServicesClientApp\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/AppServicesClientApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{FC5BB245-AF79-44A0-970D-2CD910C13DE8}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesClientApp</RootNamespace>\n    <AssemblyName>AppServicesClientApp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>AppServicesClientApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"AppServicesClientApp_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\SynonymsServiceClientLibrary\\SynonymsServiceClientLibrary.csproj\">\n      <Project>{ad33726d-9b4e-4758-a9dd-af871ea3e2b3}</Project>\n      <Name>SynonymsServiceClientLibrary</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AppServicesClientApp.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesClientApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n  <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <RelativePanel HorizontalAlignment=\"Center\" Margin=\"0,20,0,0\">\n            <TextBlock x:Name=\"Label1\" Text=\"Value 1\" Margin=\"0,10,0,0\"/>\n            <TextBox x:Name=\"Value1\" RelativePanel.RightOf=\"Label1\" Margin=\"10,0,0,0\" InputScope=\"Number\" />\n            <TextBlock x:Name=\"Label2\" Text=\"Value 2\" RelativePanel.Below=\"Label1\" Margin=\"0,30,0,0\"/>\n            <TextBox x:Name=\"Value2\" RelativePanel.Below=\"Value1\" RelativePanel.RightOf=\"Label2\" Margin=\"10,10,0,0\" InputScope=\"Number\" />\n        </RelativePanel>\n        <Button x:Name=\"button\" Content=\"Call Service\" \n                HorizontalAlignment=\"Center\" VerticalAlignment=\"Top\" Click=\"button_Click\" Margin=\"0,200,0,0\" FontSize=\"20\"/>\n        <Button x:Name=\"QuitButton\" Content=\"Ask Service to Quit\" \n                HorizontalAlignment=\"Center\" VerticalAlignment=\"Top\" Click=\"QuitButton_Click\"  Margin=\"0,280,0,0\" FontSize=\"20\"/>\n\n    <RelativePanel HorizontalAlignment=\"Center\" Margin=\"0,400,0,0\">\n      <TextBlock x:Name=\"SynonymLabel1\" Text=\"Get synonyms for:\" Margin=\"0,10,0,0\"/>\n      <TextBox x:Name=\"Term\" RelativePanel.RightOf=\"SynonymLabel1\" Margin=\"10,0,0,0\" MinWidth=\"200\"/>\n      <Button x:Name=\"GetSynonymsButton\" Content=\"Get synonyms\" \n              RelativePanel.Below=\"SynonymLabel1\" RelativePanel.AlignHorizontalCenterWithPanel=\"True\"\n              Margin=\"0,30,0,0\" Click=\"GetSynonymsButton_Click\"/>\n    </RelativePanel>\n  </Grid>\n</Page>\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/MainPage.xaml.cs",
    "content": "﻿using SynonymsServiceClientLibrary;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace AppServicesClientApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        #region Call Calculator App Service\n        AppServiceConnection connection = null;\n\n        private async void CallAppService()\n        {\n            await EnsureConnectionToService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"CalcSum\");\n            message.Add(\"Value1\", Int32.Parse(Value1.Text));\n            message.Add(\"Value2\", Int32.Parse(Value2.Text));\n\n            //Send a message  \n            AppServiceResponse response = await connection.SendMessageAsync(message);\n            if (response.Status == AppServiceResponseStatus.Success)\n            {\n                int sum = (int)response.Message[\"Result\"];\n                var cd = new ContentDialog();\n                cd.Title = \"Result=\" + sum;\n                cd.PrimaryButtonText = \"OK\";\n                cd.PrimaryButtonClick += (s, a) => cd.Hide();\n                cd.ShowAsync();\n            }\n        }\n\n        private async System.Threading.Tasks.Task EnsureConnectionToService()\n        {\n            if (this.connection == null)\n            {\n                connection = new AppServiceConnection();\n\n                // See the appx manifest of the AppServicesDemp app for this value\n                connection.AppServiceName = \"microsoftDX-appservicesdemo\";\n                // Use the Windows.ApplicationModel.Package.Current.Id.FamilyName API in the \n                // provider app to get this value\n                connection.PackageFamilyName = \"82a987d5-4e4f-4cb4-bb4d-700ede1534ba_nsf9e2fmhb1sj\";\n\n                AppServiceConnectionStatus connectionStatus = await connection.OpenAsync();\n                if (connectionStatus == AppServiceConnectionStatus.Success)\n                {\n                    connection.ServiceClosed += OnServiceClosed;\n                    //connection.RequestReceived += OnRequestReceived;\n                }\n                else\n                {\n                    //Drive the user to store to install the app that provides \n                    //the app service \n                }\n            }\n        }\n\n        private void OnServiceClosed(AppServiceConnection sender, AppServiceClosedEventArgs args)\n        {\n            new MessageDialog(\"Service closed\").ShowAsync();\n        }\n\n        private void button_Click(object sender, RoutedEventArgs e)\n        {\n            CallAppService();\n        }\n\n        private async void QuitButton_Click(object sender, RoutedEventArgs e)\n        {\n            await EnsureConnectionToService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"Quit\");\n\n            //Send a message  \n            await connection.SendMessageAsync(message);\n\n            ClearServiceConnection();\n        }\n\n        private void ClearServiceConnection()\n        {\n            this.connection.Dispose();\n            this.connection = null;\n        }\n        #endregion\n\n\n        //#region Call Synonyms Service Directly\n\n        //AppServiceConnection synonymsServiceConnection = null;\n\n        //private async void GetSynonymsButton_Click(object sender, RoutedEventArgs e)\n        //{\n        //    if (this.synonymsServiceConnection == null)\n        //    {\n        //        synonymsServiceConnection = new AppServiceConnection();\n\n        //        // See the appx manifest of the AppServicesDemp app for this value\n        //        synonymsServiceConnection.AppServiceName = \"MicrosoftDX-SynonymsService\";\n        //        // Use the Windows.ApplicationModel.Package.Current.Id.FamilyName API in the \n        //        // provider app to get this value\n        //        synonymsServiceConnection.PackageFamilyName = \"82a987d5-4e4f-4cb4-bb4d-700ede1534ba_nsf9e2fmhb1sj\";\n\n        //        AppServiceConnectionStatus connectionStatus = await synonymsServiceConnection.OpenAsync();\n        //        if (connectionStatus == AppServiceConnectionStatus.Success)\n        //        {\n        //            synonymsServiceConnection.ServiceClosed += OnServiceClosed;\n        //        }\n        //        else\n        //        {\n        //            //Drive the user to store to install the app that provides \n        //            //the app service \n        //        }\n        //    }\n\n        //    //Send data to the service \n        //    var message = new ValueSet();\n        //    message.Add(\"Command\", \"GetSynonym\");\n        //    message.Add(\"Term\", Term.Text);\n\n        //    //Send a message  \n        //    AppServiceResponse response = await synonymsServiceConnection.SendMessageAsync(message);\n\n        //    List<string> synonyms = null;\n        //    if (response.Status == AppServiceResponseStatus.Success)\n        //    {\n        //        if (response.Message.ContainsKey(\"Result\"))\n        //        {\n        //            synonyms = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>((string)response.Message[\"Result\"]);\n        //        }\n        //        else if (response.Message.ContainsKey(\"Error\"))\n        //        {\n        //            throw new Exception(\"Error:\" + response.Message[\"Error\"]);\n        //        }\n        //    }\n\n        //    // Display outcome\n        //    await DisplaySynonymsResponse(\n        //        new SynonymsServiceResponse()\n        //        {\n        //            Status = response.Status,\n        //            Synonyms = synonyms,\n        //        });\n        //}\n\n        //#endregion\n\n        #region Call Synonyms Service using Client API\n\n        SynonymsServiceClientLibrary.SynonymsServiceClient synonymsClient =\n            new SynonymsServiceClientLibrary.SynonymsServiceClient();\n\n        private async void GetSynonymsButton_Click(object sender, RoutedEventArgs e)\n        {\n            SynonymsServiceClientLibrary.SynonymsServiceResponse synonymsResponse =\n                await synonymsClient.GetSynonymsAsync(Term.Text);\n\n            await DisplaySynonymsResponse(synonymsResponse);\n        }\n\n        #endregion\n\n\n\n\n\n        private async System.Threading.Tasks.Task DisplaySynonymsResponse(SynonymsServiceClientLibrary.SynonymsServiceResponse synonymsResponse)\n        {\n            string synonymsOutput = \"\";\n            if (synonymsResponse.Status == AppServiceResponseStatus.Success)\n            {\n                foreach (var item in synonymsResponse.Synonyms)\n                {\n                    synonymsOutput += \"|\" + item;\n                }\n\n                var cd = new ContentDialog();\n                cd.Title = \"Synonyms=\" + synonymsOutput;\n                cd.PrimaryButtonText = \"OK\";\n                cd.PrimaryButtonClick += (s, a) => cd.Hide();\n                await cd.ShowAsync();\n            }\n            else\n            {\n                await new MessageDialog(\"Synonyms API call failed\").ShowAsync();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"2df02794-79d8-4593-b10d-b3280cda5fc9\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"2df02794-79d8-4593-b10d-b3280cda5fc9\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>AppServicesClientApp</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"AppServicesClientApp.App\">\n      <uap:VisualElements\n        DisplayName=\"AppServicesClientApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"AppServicesClientApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"AppServicesClientApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"AppServicesClientApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesClientApp/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"AppServicesDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesDemo\">\n\n</Application>\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace AppServicesDemo\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/AppServicesDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesDemo</RootNamespace>\n    <AssemblyName>AppServicesDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>AppServicesDemo_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>22b7bf93</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <ProjectReference Include=\"..\\AppServicesDemoTask\\AppServicesDemoTask.csproj\">\n      <Project>{4bc6707d-0179-4332-be2b-cc408e7c03e6}</Project>\n      <Name>AppServicesDemoTask</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\SynonymsService\\SynonymsService.csproj\">\n      <Project>{576dd8bc-87ab-4fd3-aacd-11fe7199ef58}</Project>\n      <Name>SynonymsService</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"AppServicesDemo_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"AppServicesDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:AppServicesDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n  <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n  </Grid>\n</Page>\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/MainPage.xaml.cs",
    "content": "﻿using SynonymsService;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace AppServicesDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            this.Loaded += (s, e) =>\n            {\n                var currentPackage = Windows.ApplicationModel.Package.Current;\n                var packageFamilyName = currentPackage.Id.FamilyName;\n\n                new MessageDialog(\"PFN = \" + packageFamilyName).ShowAsync();\n            };\n        }\n\n    private async void Button_Click(object sender, RoutedEventArgs e)\n    {\n      //// Call the synonyms service\n      //SynonymApi api = new SynonymApi(\"kv/Q1cvCsXV1kf+kTshGAp1JOobmT6AsvEO4prq6zb4=\");\n\n      //  var synonyms = await api.GetSynonymsAsync(\"seatac\");\n\n      //  if ((synonyms != null) && (synonyms.Count() > 0))\n      //  {\n      //    //Set a result to return to the caller \n      //    new MessageDialog(\"Result =\" + synonyms.First()).ShowAsync();\n      //  }\n     }\n  }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"82a987d5-4e4f-4cb4-bb4d-700ede1534ba\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"82a987d5-4e4f-4cb4-bb4d-700ede1534ba\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>AppServicesDemo</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"AppServicesDemo.App\">\n      <uap:VisualElements\n        DisplayName=\"AppServicesDemo\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"AppServicesDemo\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.appService\" \n                       EntryPoint=\"AppServicesDemoTask.AppServiceTask\">\n          <uap:AppService Name=\"microsoftDX-appservicesdemo\" />\n        </uap:Extension>\n        <uap:Extension Category=\"windows.appService\"\n               EntryPoint=\"SynonymsService.SynonymsServiceTask\">\n          <uap:AppService Name=\"MicrosoftDX-SynonymsService\" />\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"AppServicesDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"AppServicesDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesDemo\", \"AppServicesDemo\\AppServicesDemo.csproj\", \"{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesDemoTask\", \"AppServicesDemoTask\\AppServicesDemoTask.csproj\", \"{4BC6707D-0179-4332-BE2B-CC408E7C03E6}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"AppServicesClientApp\", \"AppServicesClientApp\\AppServicesClientApp.csproj\", \"{FC5BB245-AF79-44A0-970D-2CD910C13DE8}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SynonymsService\", \"SynonymsService\\SynonymsService.csproj\", \"{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SynonymsServiceClientLibrary\", \"SynonymsServiceClientLibrary\\SynonymsServiceClientLibrary.csproj\", \"{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.Build.0 = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.Build.0 = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.Build.0 = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.ActiveCfg = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.Build.0 = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x64.Deploy.0 = Release|x64\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.ActiveCfg = Release|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.Build.0 = Release|x86\n\t\t{3EA0D34C-2C01-4418-9F33-57B4DCA7524C}.Release|x86.Deploy.0 = Release|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Debug|x86.Build.0 = Debug|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|ARM.Build.0 = Release|ARM\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x64.Build.0 = Release|Any CPU\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x86.ActiveCfg = Release|x86\n\t\t{4BC6707D-0179-4332-BE2B-CC408E7C03E6}.Release|x86.Build.0 = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.Build.0 = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.Build.0 = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.Build.0 = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.ActiveCfg = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.Build.0 = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x64.Deploy.0 = Release|x64\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.ActiveCfg = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.Build.0 = Release|x86\n\t\t{FC5BB245-AF79-44A0-970D-2CD910C13DE8}.Release|x86.Deploy.0 = Release|x86\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|x64.Build.0 = Debug|x64\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Debug|x86.Build.0 = Debug|x86\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|ARM.Build.0 = Release|ARM\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|x64.ActiveCfg = Release|x64\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|x64.Build.0 = Release|x64\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|x86.ActiveCfg = Release|x86\n\t\t{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}.Release|x86.Build.0 = Release|x86\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|x64.Build.0 = Debug|x64\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Debug|x86.Build.0 = Debug|x86\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|ARM.Build.0 = Release|ARM\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|x64.ActiveCfg = Release|x64\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|x64.Build.0 = Release|x64\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|x86.ActiveCfg = Release|x86\n\t\t{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemoTask/AppServiceTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Notifications;\n\nnamespace AppServicesDemoTask\n{\n    // Background task for an App Service\n    public sealed class AppServiceTask : IBackgroundTask\n    {\n        private static BackgroundTaskDeferral _serviceDeferral;\n\n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            // Associate a cancellation handler with the background task.\n            taskInstance.Canceled += TaskInstance_Canceled;\n\n            // Get the deferral object from the task instance \n            _serviceDeferral = taskInstance.GetDeferral();\n\n            var appService = taskInstance.TriggerDetails as AppServiceTriggerDetails;\n            if (appService != null &&\n                appService.Name == \"microsoftDX-appservicesdemo\")\n            {\n                //ValidateCaller(appService.CallerPackageFamilyName);\n                appService.AppServiceConnection.RequestReceived += AppServiceConnection_RequestReceived;\n            }\n        }\n\n        private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            var message = args.Request.Message;\n            string command = message[\"Command\"] as string;\n\n            switch (command)\n            {\n                case \"CalcSum\":\n                    {\n                        var messageDeferral = args.GetDeferral();\n\n                        int value1 = (int)message[\"Value1\"];\n                        int value2 = (int)message[\"Value2\"];\n\n                        //Set a result to return to the caller \n                        int result = value1 + value2;\n                        var returnMessage = new ValueSet();\n                        returnMessage.Add(\"Result\", result);\n                        var responseStatus = await args.Request.SendResponseAsync(returnMessage);\n\n                        messageDeferral.Complete();\n                        break;\n                    }\n\n                case \"Quit\":\n                    {\n                        //Service was asked to quit. Give us service deferral \n                        //so platform can terminate the background task \n                        _serviceDeferral.Complete();\n                        break;\n                    }\n            }\n        }\n\n        private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            // Maybe do something...\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemoTask/AppServicesDemoTask.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{4BC6707D-0179-4332-BE2B-CC408E7C03E6}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>AppServicesDemoTask</RootNamespace>\n    <AssemblyName>AppServicesDemoTask</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AppServiceTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/AppServicesDemoTask/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ActionCenterTask\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ActionCenterTask\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/BingSynonymsResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace SynonymsService\n{\n    [DataContract]\n    class Metadata\n    {\n        [DataMember(Name =\"uri\")]\n        public string uri { get; set; }\n\n        [DataMember(Name = \"type\")]\n        public string type { get; set; }\n    }\n\n    [DataContract]\n    class Result\n    {\n        [DataMember(Name = \"__metadata\")]\n        public Metadata __metadata { get; set; }\n        [DataMember(Name = \"Synonym\")]\n        public string Synonym { get; set; }\n    }\n\n    [DataContract]\n    class D\n    {\n        [DataMember(Name = \"results\")]\n        public List<Result> results { get; set; }\n    }\n\n    [DataContract]\n    class BingSynonymsResponse\n    {\n        [DataMember(Name = \"d\")]\n        public D d { get; set; }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/JSONHelper.cs",
    "content": "﻿using System.IO;\nusing System.Runtime.Serialization.Json;\nusing System.Text;\n\nnamespace SynonymsService\n{\n    class JSONHelper\n    {\n        public static T DeserializeObject<T>(string objString)\n        {\n            using (var stream = new MemoryStream(Encoding.Unicode.GetBytes(objString)))\n            {\n                var serializer = new DataContractJsonSerializer(typeof(T));\n                return (T)serializer.ReadObject(stream);\n            }\n        }\n\n        public static string SerializeObject<T>(T obj)\n        {\n            MemoryStream stream = new MemoryStream();\n            DataContractJsonSerializer jsonSer =\n\n            new DataContractJsonSerializer(typeof(T));\n            jsonSer.WriteObject(stream, obj);\n            stream.Position = 0;\n            StreamReader sr = new StreamReader(stream);\n            var json = sr.ReadToEnd();\n            return json;\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SynonymsService\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SynonymsService\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/SynonymApi.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.Web.Http;\nusing Windows.Web.Http.Filters;\nusing Windows.Security.Credentials;\nusing System.Runtime.Serialization.Json;\nusing System.IO;\nusing System.Text;\n\nnamespace SynonymsService\n{\n    class SynonymApi\n    {\n        static readonly string uriFormatString =\n          \"https://api.datamarket.azure.com/Bing/Synonyms/v1/GetSynonyms?Query=%27{0}%27\";\n\n        string apiKey;\n\n        public SynonymApi(string apiKey)\n        {\n            if (string.IsNullOrEmpty(apiKey))\n            {\n                throw new ArgumentException(\"Sorry, I think they make you have a key for this API\");\n            }\n            this.apiKey = apiKey;\n        }\n        public async Task<IEnumerable<string>> GetSynonymsAsync(string term)\n        {\n            // Call synonyms OData service on Azure Marketplace at\n            //  \"https://api.datamarket.azure.com/Bing/Synonyms/v1/\",\n\n            HttpBaseProtocolFilter handler = new HttpBaseProtocolFilter();\n            PasswordCredential credentials = new PasswordCredential(\"BingSynonymsAPIKey\", apiKey, apiKey);\n            handler.ServerCredential = credentials;\n            handler.ProxyCredential = credentials;\n\n            HttpClient client = new HttpClient(handler);\n            client.DefaultRequestHeaders.Accept.TryParseAdd(\"application/json\");\n\n            Uri uri = new Uri(string.Format(uriFormatString, Uri.EscapeDataString(term)));\n            string responseJson = await client.GetStringAsync(uri);\n\n            var response = JSONHelper.DeserializeObject<BingSynonymsResponse>(responseJson);\n\n            var synonyms = (from r in response.d.results\n                            select r.Synonym).ToList();\n\n            return (synonyms);\n        }\n\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/SynonymsService.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{576DD8BC-87AB-4FD3-AACD-11FE7199EF58}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SynonymsService</RootNamespace>\n    <AssemblyName>SynonymsService</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <NuGetPackageImportStamp>f046d67b</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"BingSynonymsResponse.cs\" />\n    <Compile Include=\"JSONHelper.cs\" />\n    <Compile Include=\"SynonymApi.cs\" />\n    <Compile Include=\"SynonymsServiceTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsService/SynonymsServiceTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation.Collections;\n\nnamespace SynonymsService\n{\n  // Background task for an App Service\n  public sealed class SynonymsServiceTask : IBackgroundTask\n  {\n    private static BackgroundTaskDeferral _serviceDeferral;\n\n    //#error You need a bing api key\n    static readonly string BING_KEY = \"kv/Q1cvCsXV1kf+kTshGAp1JOobmT6AsvEO4prq6zb4=\";\n\n    public void Run(IBackgroundTaskInstance taskInstance)\n    {\n      // Associate a cancellation handler with the background task.\n      taskInstance.Canceled += TaskInstance_Canceled;\n\n      // Get the deferral object from the task instance \n      _serviceDeferral = taskInstance.GetDeferral();\n\n      var appService = taskInstance.TriggerDetails as AppServiceTriggerDetails;\n      if (appService != null &&\n          appService.Name == \"MicrosoftDX-SynonymsService\")\n      {\n        appService.AppServiceConnection.RequestReceived += AppServiceConnection_RequestReceived;\n      }\n    }\n\n    private async void AppServiceConnection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n    {\n      var message = args.Request.Message;\n\n      string command = (string)message[\"Command\"];\n\n      switch (command)\n      {\n        case \"GetSynonym\":\n          {\n            var messageDeferral = args.GetDeferral();\n\n            string term = (string)message[\"Term\"];\n\n            // Call the synonyms service\n            SynonymApi api = new SynonymApi(BING_KEY);\n\n            var returnMessage = new ValueSet();\n\n            try\n            {\n              var synonyms = await api.GetSynonymsAsync(term);\n\n              if ((synonyms != null) && (synonyms.Count() > 0))\n              {\n                //Set a result to return to the caller\n                //Serialize the IEnumerable<string> to Json so we can insert into ValueSet\n                returnMessage.Add(\"Result\", JSONHelper.SerializeObject(synonyms));\n              }\n              else\n              {\n                // Report an error back to the caller\n                returnMessage.Add(\"Error\", \"No results found\");\n              }\n            }\n            catch (Exception ex)\n            {\n              // Error accessing the service\n              // Report an error back to the caller\n              returnMessage.Add(\"Error\", \"Synonyms Service not available \" + ex.Message + \" term=\" + term);\n            }\n\n            var responseStatus = await args.Request.SendResponseAsync(returnMessage);\n            messageDeferral.Complete();\n            break;\n          }\n\n        case \"Quit\":\n          {\n            //Service was asked to quit. Give us service deferral \n            //so platform can terminate the background task \n            _serviceDeferral.Complete();\n            break;\n          }\n      }\n    }\n\n    private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n    {\n      // Maybe do something...\n    }\n  }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsServiceClientLibrary/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SynonymsServiceClientLibrary\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SynonymsServiceClientLibrary\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsServiceClientLibrary/SynonymsServiceClient.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation.Collections;\n\nnamespace SynonymsServiceClientLibrary\n{\n    public class SynonymsServiceClient\n    {\n        AppServiceConnection synonymsServiceConnection = null;\n\n        public event EventHandler<AppServiceClosedEventArgs> ServiceClosed;\n\n        public async Task<SynonymsServiceResponse> GetSynonymsAsync(string term)\n        {\n            SynonymsServiceResponse callresponse = new SynonymsServiceResponse()\n            {\n                Status = AppServiceResponseStatus.Unknown,\n                Synonyms = null,\n            };\n\n            List<string> synonyms = new List<string>();\n\n            await EnsureConnectionToSynonymsService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"GetSynonym\");\n            message.Add(\"Term\", term);\n\n            //Send a message  \n            AppServiceResponse response = await synonymsServiceConnection.SendMessageAsync(message);\n            if (response.Status == AppServiceResponseStatus.Success)\n            {\n                if (response.Message.ContainsKey(\"Result\"))\n                {\n                    synonyms = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>((string)response.Message[\"Result\"]);\n                }\n                else if (response.Message.ContainsKey(\"Error\"))\n                {\n                    throw new Exception(\"Error:\" + response.Message[\"Error\"]);\n                }\n            }\n\n            callresponse.Status = response.Status;\n            callresponse.Synonyms = synonyms;\n\n            return callresponse;\n        }\n\n        private async System.Threading.Tasks.Task EnsureConnectionToSynonymsService()\n        {\n            if (this.synonymsServiceConnection == null)\n            {\n                synonymsServiceConnection = new AppServiceConnection();\n\n                // See the appx manifest of the AppServicesDemp app for this value\n                synonymsServiceConnection.AppServiceName = \"MicrosoftDX-SynonymsService\";\n                // Use the Windows.ApplicationModel.Package.Current.Id.FamilyName API in the \n                // provider app to get this value\n                synonymsServiceConnection.PackageFamilyName = \"82a987d5-4e4f-4cb4-bb4d-700ede1534ba_nsf9e2fmhb1sj\";\n\n                AppServiceConnectionStatus connectionStatus = await synonymsServiceConnection.OpenAsync();\n                if (connectionStatus == AppServiceConnectionStatus.Success)\n                {\n                    synonymsServiceConnection.ServiceClosed += (s, serviceClosedEventArgs) =>\n                    {\n                        if (ServiceClosed != null)\n                        {\n                            ServiceClosed(this, serviceClosedEventArgs);\n                        }\n                    };\n                }\n                else\n                {\n                    //Drive the user to store to install the app that provides \n                    //the app service \n                    throw new NotImplementedException(\"Service not installed on this device\");\n                }\n            }\n        }\n\n        public async Task CloseSynonymsServiceAsync()\n        {\n            await EnsureConnectionToSynonymsService();\n\n            //Send data to the service \n            var message = new ValueSet();\n            message.Add(\"Command\", \"Quit\");\n\n            //Send a message  \n            await synonymsServiceConnection.SendMessageAsync(message);\n\n            ClearSynonymServiceConnection();\n        }\n        private void ClearSynonymServiceConnection()\n        {\n            this.synonymsServiceConnection.Dispose();\n            this.synonymsServiceConnection = null;\n        }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsServiceClientLibrary/SynonymsServiceClientLibrary.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{AD33726D-9B4E-4758-A9DD-AF871EA3E2B3}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SynonymsServiceClientLibrary</RootNamespace>\n    <AssemblyName>SynonymsServiceClientLibrary</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"SynonymsServiceClient.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"SynonymsServiceResponse.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsServiceClientLibrary/SynonymsServiceResponse.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\n\nnamespace SynonymsServiceClientLibrary\n{\n    public class SynonymsServiceResponse\n    {\n        public AppServiceResponseStatus Status { get; set; }\n        public List<string> Synonyms { get; set; }\n    }\n}\n"
  },
  {
    "path": "AppServicesDemo/SynonymsAppServiceDemo/SynonymsServiceClientLibrary/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVA.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2013\nVisualStudioVersion = 12.0.21005.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UWPDevMVAService\", \"UWPDevMVAService\\UWPDevMVAService.csproj\", \"{209FA716-A7AD-4095-BD70-C8710FC66FA7}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{209FA716-A7AD-4095-BD70-C8710FC66FA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{209FA716-A7AD-4095-BD70-C8710FC66FA7}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{209FA716-A7AD-4095-BD70-C8710FC66FA7}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{209FA716-A7AD-4095-BD70-C8710FC66FA7}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/App_Start/WebApiConfig.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data.Entity;\nusing System.Web.Http;\nusing Microsoft.Azure.Mobile.Server;\nusing Microsoft.Azure.Mobile.Server.AppService.Config;\nusing UWPDevMVAService.DataObjects;\nusing UWPDevMVAService.Models;\n\nnamespace UWPDevMVAService\n{\n    public static class WebApiConfig\n    {\n        public static void Register()\n        {\n            AppServiceExtensionConfig.Initialize();\n            \n            // Use this class to set configuration options for your mobile service\n            ConfigOptions options = new ConfigOptions();\n\n            // Use this class to set WebAPI configuration options\n            HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));\n\n            // To display errors in the browser during development, uncomment the following\n            // line. Comment it out again when you deploy your service for production use.\n            // config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;\n            \n            Database.SetInitializer(new UWPDevMVAInitializer());\n        }\n    }\n\n    public class UWPDevMVAInitializer : ClearDatabaseSchemaIfModelChanges<UWPDevMVAContext>\n    {\n        protected override void Seed(UWPDevMVAContext context)\n        {\n            List<TodoItem> todoItems = new List<TodoItem>\n            {\n                new TodoItem { Id = Guid.NewGuid().ToString(), Text = \"First item\", Complete = false },\n                new TodoItem { Id = Guid.NewGuid().ToString(), Text = \"Second item\", Complete = false },\n            };\n\n            foreach (TodoItem todoItem in todoItems)\n            {\n                context.Set<TodoItem>().Add(todoItem);\n            }\n\n            base.Seed(context);\n        }\n    }\n}\n\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Controllers/TodoItemController.cs",
    "content": "﻿using System.Linq;\nusing System.Threading.Tasks;\nusing System.Web.Http;\nusing System.Web.Http.Controllers;\nusing System.Web.Http.OData;\nusing Microsoft.Azure.Mobile.Server;\nusing UWPDevMVAService.DataObjects;\nusing UWPDevMVAService.Models;\n\nnamespace UWPDevMVAService.Controllers\n{\n    public class TodoItemController : TableController<TodoItem>\n    {\n        protected override void Initialize(HttpControllerContext controllerContext)\n        {\n            base.Initialize(controllerContext);\n            UWPDevMVAContext context = new UWPDevMVAContext();\n            DomainManager = new EntityDomainManager<TodoItem>(context, Request, Services);\n        }\n\n        // GET tables/TodoItem\n        public IQueryable<TodoItem> GetAllTodoItems()\n        {\n            return Query();\n        }\n\n        // GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959\n        public SingleResult<TodoItem> GetTodoItem(string id)\n        {\n            return Lookup(id);\n        }\n\n        // PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959\n        public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)\n        {\n            return UpdateAsync(id, patch);\n        }\n\n        // POST tables/TodoItem\n        public async Task<IHttpActionResult> PostTodoItem(TodoItem item)\n        {\n            TodoItem current = await InsertAsync(item);\n            return CreatedAtRoute(\"Tables\", new { id = current.Id }, current);\n        }\n\n        // DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959\n        public Task DeleteTodoItem(string id)\n        {\n            return DeleteAsync(id);\n        }\n    }\n}"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/DataObjects/TodoItem.cs",
    "content": "﻿using Microsoft.Azure.Mobile.Server;\n\nnamespace UWPDevMVAService.DataObjects\n{\n    public class TodoItem : EntityData\n    {\n        public string Text { get; set; }\n\n        public bool Complete { get; set; }\n    }\n}"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Global.asax",
    "content": "﻿<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"UWPDevMVAService.WebApiApplication\" Language=\"C#\" %>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Global.asax.cs",
    "content": "﻿using System.Web.Http;\nusing System.Web.Routing;\n\nnamespace UWPDevMVAService\n{\n    public class WebApiApplication : System.Web.HttpApplication\n    {\n        protected void Application_Start()\n        {\n            WebApiConfig.Register();\n        }\n    }\n}"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Models/UWPDevMVAContext.cs",
    "content": "﻿using System.Data.Entity;\nusing System.Data.Entity.ModelConfiguration.Conventions;\nusing System.Linq;\nusing Microsoft.Azure.Mobile.Server;\nusing Microsoft.Azure.Mobile.Server.Tables;\nusing UWPDevMVAService.DataObjects;\n\nnamespace UWPDevMVAService.Models\n{\n    public class UWPDevMVAContext : DbContext\n    {\n        // You can add custom code to this file. Changes will not be overwritten.\n        // \n        // If you want Entity Framework to alter your database\n        // automatically whenever you change your model schema, please use data migrations.\n        // For more information refer to the documentation:\n        // http://msdn.microsoft.com/en-us/data/jj591621.aspx\n        //\n        // To enable Entity Framework migrations in the cloud, please ensure that the \n        // service name, set by the 'MS_MobileServiceName' AppSettings in the local \n        // Web.config, is the same as the service name when hosted in Azure.\n        private const string connectionStringName = \"Name=MS_TableConnectionString\";\n\n        public UWPDevMVAContext() : base(connectionStringName)\n        {\n        } \n\n        public DbSet<TodoItem> TodoItems { get; set; }\n\n        protected override void OnModelCreating(DbModelBuilder modelBuilder)\n        {\n            string schema = ServiceSettingsDictionary.GetSchemaName();\n            if (!string.IsNullOrEmpty(schema))\n            {\n                modelBuilder.HasDefaultSchema(schema);\n            }\n\n            modelBuilder.Conventions.Add(\n                new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(\n                    \"ServiceTableColumn\", (property, attributes) => attributes.Single().ColumnType.ToString()));\n        }\n    }\n\n}\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following\n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UWPDevMVAService\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UWPDevMVAService\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible\n// to COM components.  If you need to access a type in this assembly from\n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"2e8cfaa1-3743-49ef-9e21-2926ca18c058\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version\n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Revision and Build Numbers\n// by using the '*' as shown below:\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/UWPDevMVAService.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{209FA716-A7AD-4095-BD70-C8710FC66FA7}</ProjectGuid>\n    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UWPDevMVAService</RootNamespace>\n    <AssemblyName>UWPDevMVAService</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <MvcBuildViews>false</MvcBuildViews>\n    <UseIISExpress>true</UseIISExpress>\n    <IISExpressSSLPort />\n    <IISExpressAnonymousAuthentication />\n    <IISExpressWindowsAuthentication />\n    <IISExpressUseClassicPipelineMode />\n    <RestorePackages>true</RestorePackages>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n    <SolutionDir Condition=\"$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'\">..\\</SolutionDir>\n    <UseGlobalApplicationHostFile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ProjectExtensions>\n    <VisualStudio>\n      <FlavorProperties GUID=\"{349c5851-65df-11da-9384-00065b846f21}\">\n        <WebProjectProperties>\n          <UseIIS>True</UseIIS>\n          <AutoAssignPort>True</AutoAssignPort>\n          <DevelopmentServerPort>59986</DevelopmentServerPort>\n          <DevelopmentServerVPath>/</DevelopmentServerVPath>\n          <IISUrl>http://localhost:59986/</IISUrl>\n          <NTLMAuthentication>False</NTLMAuthentication>\n          <UseCustomServer>False</UseCustomServer>\n          <CustomServerUrl>\n          </CustomServerUrl>\n          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>\n        </WebProjectProperties>\n      </FlavorProperties>\n    </VisualStudio>\n  </ProjectExtensions>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Owin.Host.SystemWeb\">\n      <HintPath>..\\packages\\Microsoft.Owin.Host.SystemWeb.3.0.0\\lib\\net45\\Microsoft.Owin.Host.SystemWeb.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Mobile.Server\">\n      <HintPath>..\\packages\\Microsoft.Azure.Mobile.Server.0.1.508\\lib\\net45\\Microsoft.Azure.Mobile.Server.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Mobile.Server.Entity\">\n      <HintPath>..\\packages\\Microsoft.Azure.Mobile.Server.Entity.0.1.508\\lib\\net45\\Microsoft.Azure.Mobile.Server.Entity.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Mobile.Server.Tables\">\n      <HintPath>..\\packages\\Microsoft.Azure.Mobile.Server.Tables.0.1.508\\lib\\net45\\Microsoft.Azure.Mobile.Server.Tables.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Mobile.Server.AppService\">\n      <HintPath>..\\packages\\Microsoft.Azure.Mobile.Server.AppService.0.1.508\\lib\\net45\\Microsoft.Azure.Mobile.Server.AppService.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.AppService.ApiApps.Service\">\n      <HintPath>..\\packages\\Microsoft.Azure.AppService.ApiApps.Service.0.9.22\\lib\\net45\\Microsoft.Azure.AppService.ApiApps.Service.dll</HintPath>\n    </Reference>\n    <Reference Include=\"EntityFramework\">\n      <HintPath>..\\packages\\EntityFramework.6.1.1\\lib\\net45\\EntityFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"EntityFramework.SqlServer\">\n      <HintPath>..\\packages\\EntityFramework.6.1.1\\lib\\net45\\EntityFramework.SqlServer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Http\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Core.5.2.2\\lib\\net45\\System.Web.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Http.OData\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.OData.5.3.1\\lib\\net45\\System.Web.Http.OData.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Cors\">\n      <HintPath>..\\packages\\Microsoft.AspNet.Cors.5.2.2\\lib\\net45\\System.Web.Cors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Http.Cors\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Cors.5.2.2\\lib\\net45\\System.Web.Http.Cors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.NotificationHubs\">\n      <HintPath>..\\packages\\Microsoft.Azure.NotificationHubs.1.0.0\\lib\\net45-full\\Microsoft.Azure.NotificationHubs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Web\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"Autofac\">\n      <HintPath>..\\packages\\Autofac.3.5.2\\lib\\net40\\Autofac.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin\">\n      <HintPath>..\\packages\\Microsoft.Owin.3.0.0\\lib\\net45\\Microsoft.Owin.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Formatting\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Client.5.2.2\\lib\\net45\\System.Net.Http.Formatting.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Http.Tracing\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Tracing.5.2.2\\lib\\net45\\System.Web.Http.Tracing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"RazorEngine\">\n      <HintPath>..\\packages\\RazorEngine.3.4.1\\lib\\net45\\RazorEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Owin\">\n      <HintPath>..\\packages\\Owin.1.0\\lib\\net40\\Owin.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Http.Owin\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Owin.5.2.2\\lib\\net45\\System.Web.Http.Owin.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.Cookies\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.Cookies.3.0.0\\lib\\net45\\Microsoft.Owin.Security.Cookies.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.3.0.0\\lib\\net45\\Microsoft.Owin.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.Facebook\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.Facebook.3.0.0\\lib\\net45\\Microsoft.Owin.Security.Facebook.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.Google\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.Google.3.0.0\\lib\\net45\\Microsoft.Owin.Security.Google.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.Twitter\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.Twitter.3.0.0\\lib\\net45\\Microsoft.Owin.Security.Twitter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.MicrosoftAccount\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.MicrosoftAccount.3.0.0\\lib\\net45\\Microsoft.Owin.Security.MicrosoftAccount.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.ActiveDirectory\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.ActiveDirectory.3.0.0\\lib\\net45\\Microsoft.Owin.Security.ActiveDirectory.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.OAuth\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.OAuth.3.0.0\\lib\\net45\\Microsoft.Owin.Security.OAuth.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Owin.Security.Jwt\">\n      <HintPath>..\\packages\\Microsoft.Owin.Security.Jwt.3.0.0\\lib\\net45\\Microsoft.Owin.Security.Jwt.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.Razor\">\n      <HintPath>..\\packages\\Microsoft.AspNet.Razor.3.2.2\\lib\\net45\\System.Web.Razor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.AspNet.Identity.Owin\">\n      <HintPath>..\\packages\\Microsoft.AspNet.Identity.Owin.2.1.0\\lib\\net45\\Microsoft.AspNet.Identity.Owin.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ServiceBus\">\n      <HintPath>..\\packages\\WindowsAzure.ServiceBus.2.4.9.0\\lib\\net40-full\\Microsoft.ServiceBus.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.AspNet.Identity.Core\">\n      <HintPath>..\\packages\\Microsoft.AspNet.Identity.Core.2.1.0\\lib\\net45\\Microsoft.AspNet.Identity.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Configuration\">\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.ConfigurationManager.3.1.0\\lib\\net40\\Microsoft.WindowsAzure.Configuration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IdentityModel.Tokens.Jwt\">\n      <HintPath>..\\packages\\System.IdentityModel.Tokens.Jwt.4.0.1\\lib\\net45\\System.IdentityModel.Tokens.Jwt.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AutoMapper\">\n      <HintPath>..\\packages\\AutoMapper.3.2.1\\lib\\net40\\AutoMapper.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AutoMapper.Net4\">\n      <HintPath>..\\packages\\AutoMapper.3.2.1\\lib\\net40\\AutoMapper.Net4.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Edm\">\n      <HintPath>..\\packages\\Microsoft.Data.Edm.5.6.3\\lib\\net40\\Microsoft.Data.Edm.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.OData\">\n      <HintPath>..\\packages\\Microsoft.Data.OData.5.6.3\\lib\\net40\\Microsoft.Data.OData.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Spatial\">\n      <HintPath>..\\packages\\System.Spatial.5.6.3\\lib\\net40\\System.Spatial.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"App_Data\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App_Start\\WebApiConfig.cs\" />\n    <Compile Include=\"Controllers\\TodoItemController.cs\" />\n    <Compile Include=\"DataObjects\\TodoItem.cs\" />\n    <Compile Include=\"Models\\UWPDevMVAContext.cs\" />\n    <Compile Include=\"Global.asax.cs\">\n      <DependentUpon>Global.asax</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Global.asax\" />\n    <Content Include=\"Web.config\" />\n    <Content Include=\"Web.Debug.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </Content>\n    <Content Include=\"Web.Release.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </Content>\n    <Content Include=\"packages.config\">\n      <SubType>Designer</SubType>\n    </Content>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Properties\\PublishProfiles\\UWPDevMVA-code.pubxml\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildBinPath)\\Microsoft.CSharp.targets\" />\n  <Import Project=\"$(VSToolsPath)\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"'$(VSToolsPath)' != ''\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"false\" />\n  <Target Name=\"MvcBuildViews\" AfterTargets=\"AfterBuild\" Condition=\"'$(MvcBuildViews)'=='true'\">\n    <AspNetCompiler VirtualPath=\"temp\" PhysicalPath=\"$(WebProjectOutputDir)\" />\n  </Target>\n</Project>"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Web.Debug.config",
    "content": "﻿<?xml version=\"1.0\"?>\n\n<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=301874 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of\n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator\n    finds an attribute \"name\" that has a value of \"MyDB\".\n\n    <connectionStrings>\n      <add name=\"MyDB\"\n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\"\n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire\n      <customErrors> section of your Web.config file.\n      Note that because there is only one customErrors section under the\n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n\n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Web.Release.config",
    "content": "﻿<?xml version=\"1.0\"?>\n\n<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=301874 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of\n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator\n    finds an attribute \"name\" that has a value of \"MyDB\".\n\n    <connectionStrings>\n      <add name=\"MyDB\"\n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\"\n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <compilation xdt:Transform=\"RemoveAttributes(debug)\" />\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire\n      <customErrors> section of your Web.config file.\n      Note that because there is only one customErrors section under the\n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n\n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/Web.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  For more information on how to configure your ASP.NET application, please visit\n  http://go.microsoft.com/fwlink/?LinkId=169433\n  -->\n<configuration>\n  <configSections>\n    <section name=\"entityFramework\" type=\"System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" requirePermission=\"false\" />\n  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>\n  <connectionStrings>\n    <add name=\"MS_TableConnectionString\" connectionString=\"Data Source=(localdb)\\v11.0;AttachDbFilename=|DataDirectory|\\aspnet-UWPDevMVAService-20150601035655.mdf;Initial Catalog=aspnet-UWPDevMVAService-20150601035655;Integrated Security=True;MultipleActiveResultSets=True\"\n      providerName=\"System.Data.SqlClient\" />\n    <add name=\"MS_NotificationHubConnectionString\" connectionString=\"Endpoint=sb://[your namespace].servicebus.windows.net;SharedSecretIssuer=owner;SharedSecretValue=[your secret]\"/>\n  </connectionStrings>\n  <appSettings>\n\n    <add key=\"PreserveLoginUrl\" value=\"true\" />\n\n    <!-- Use these settings for local development. After publishing to your\n    Mobile App, these settings will be overridden by the values specified\n    in the portal. -->\n    <add key=\"MS_MobileServiceName\" value=\"UWPDevMVA\" />\n    <add key=\"MS_ApplicationKey\" value=\"Overridden by portal settings\" />\n    <add key=\"MS_MasterKey\" value=\"Overridden by portal settings\" />\n    <add key=\"MS_SigningKey\" value=\"Overridden by portal settings\" />\n    <add key=\"EMA_MicroserviceID\" value=\"UWPDevMVA\" />\n    <add key=\"EMA_RuntimeUrl\" value=\"https://default-web-westeuropedadb315bf36143afbefc3a441bcf037b.azurewebsites.net\" />\n    <add key=\"EMA_Secret\" value=\"Overridden by portal settings\" />\n  </appSettings>\n  <system.web>\n    <httpRuntime targetFramework=\"4.5\" />\n    <compilation debug=\"true\" targetFramework=\"4.5\" />\n  </system.web>\n  <system.webServer>\n    <validation validateIntegratedModeConfiguration=\"false\" />\n    <modules runAllManagedModulesForAllRequests=\"true\" />\n    <handlers>\n      <remove name=\"ExtensionlessUrlHandler-Integrated-4.0\" />\n      <remove name=\"OPTIONSVerbHandler\" />\n      <remove name=\"TRACEVerbHandler\" />\n      <add name=\"ExtensionlessUrlHandler-Integrated-4.0\" path=\"*.\" verb=\"*\" type=\"System.Web.Handlers.TransferRequestHandler\" preCondition=\"integratedMode,runtimeVersionv4.0\" />\n    </handlers>\n  </system.webServer>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\" xmlns:bcl=\"urn:schemas-microsoft-com:bcl\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Spatial\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Edm\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.OData\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Owin\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-3.0.0.0\" newVersion=\"3.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Owin.Security\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-3.0.0.0\" newVersion=\"3.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Owin.Security.Cookies\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-3.0.0.0\" newVersion=\"3.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Owin.Security.OAuth\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-3.0.0.0\" newVersion=\"3.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-6.0.0.0\" newVersion=\"6.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Azure.AppService.ApiApps.Service\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-0.9.22.0\" newVersion=\"0.9.22.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n  <entityFramework>\n    <defaultConnectionFactory type=\"System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework\" />\n    <providers>\n      <provider invariantName=\"System.Data.SqlClient\" type=\"System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer\" />\n    </providers>\n  </entityFramework>\n</configuration>\n\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Runtime/UWPDevMVAService/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Autofac\" version=\"3.5.2\" targetFramework=\"net45\" />\n  <package id=\"AutoMapper\" version=\"3.2.1\" targetFramework=\"net45\" />\n  <package id=\"EntityFramework\" version=\"6.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.Cors\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.Identity.Core\" version=\"2.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.Identity.Owin\" version=\"2.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.Razor\" version=\"3.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Client\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Core\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Cors\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.OData\" version=\"5.3.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Owin\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Tracing\" version=\"5.2.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.AppService.ApiApps.Service\" version=\"0.9.22\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Mobile.Server\" version=\"0.1.508\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Mobile.Server.AppService\" version=\"0.1.508\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Mobile.Server.Entity\" version=\"0.1.508\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Mobile.Server.Tables\" version=\"0.1.508\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.NotificationHubs\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl\" version=\"1.1.9\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl.Build\" version=\"1.0.14\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.6.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.6.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Net.Http\" version=\"2.2.22\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.ActiveDirectory\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.Cookies\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.Facebook\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.Google\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.Jwt\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.MicrosoftAccount\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.OAuth\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Security.Twitter\" version=\"3.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.ConfigurationManager\" version=\"3.1.0\" targetFramework=\"net45\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"net45\" />\n  <package id=\"Owin\" version=\"1.0\" targetFramework=\"net45\" />\n  <package id=\"RazorEngine\" version=\"3.4.1\" targetFramework=\"net45\" />\n  <package id=\"System.IdentityModel.Tokens.Jwt\" version=\"4.0.1\" targetFramework=\"net45\" />\n  <package id=\"System.Spatial\" version=\"5.6.3\" targetFramework=\"net45\" />\n  <package id=\"WindowsAzure.ServiceBus\" version=\"2.4.9.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Owin.Host.SystemWeb\" version=\"3.0.0\" targetFramework=\"net45\" />\n</packages>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/App.xaml",
    "content": "﻿<Application\n    x:Class=\"UWPDevMVA.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPDevMVA\">\n</Application>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/App.xaml.cs",
    "content": "﻿using Microsoft.WindowsAzure.MobileServices;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace UWPDevMVA\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n\n        // This MobileServiceClient has been configured to communicate with the Azure Mobile Service and\n        // Azure Gateway using the application key. You're all set to start working with your Mobile Service!\n        public static MobileServiceClient MobileService = new MobileServiceClient(\n            \"https://uwpdevmva-code.azurewebsites.net\",\n            \"https://default-web-westeuropedadb315bf36143afbefc3a441bcf037b.azurewebsites.net\",\n            \"zXERJCBdkbhkEIUOGAvkprjLdATbGE43\"\n        );\n\n        // Uncomment this code for configuring the MobileServiceClient to communicate with your local\n        // test project for debugging purposes.\n        // public static MobileServiceClient MobileService = new MobileServiceClient(\n        //     \"http://localhost:59986\"\n        // );\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n\n#if !WINDOWS_PHONE_APP\n                RequestedTheme = ApplicationTheme.Light;    \n#endif\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {            \n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/DataModel/TodoItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing Newtonsoft.Json;\n\nnamespace UWPDevMVA\n{\n    public class TodoItem\n    {\n        public string Id { get; set; }\n\n        [JsonProperty(PropertyName = \"text\")]\n        public string Text { get; set; }\n\n        [JsonProperty(PropertyName = \"complete\")]\n        public bool Complete { get; set; }\n    }\n}\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/MainPage.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Microsoft.WindowsAzure.MobileServices;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\n// To add offline sync support, add the NuGet package Microsoft.WindowsAzure.MobileServices.SQLiteStore\n// to your project. Then, uncomment the lines marked // offline sync\n// For more information, see: http://aka.ms/addofflinesync\nusing Microsoft.WindowsAzure.MobileServices.SQLiteStore;  // offline sync\nusing Microsoft.WindowsAzure.MobileServices.Sync;         // offline sync\n\nnamespace UWPDevMVA\n{\n    sealed partial class MainPage: Page\n    {\n        private MobileServiceCollection<TodoItem, TodoItem> items;\n        //private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();\n        private IMobileServiceSyncTable<TodoItem> todoTable = App.MobileService.GetSyncTable<TodoItem>(); // offline sync\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private async Task InsertTodoItem(TodoItem todoItem)\n        {\n            // This code inserts a new TodoItem into the database. When the operation completes\n            // and Mobile Services has assigned an Id, the item is added to the CollectionView\n            await todoTable.InsertAsync(todoItem);\n            items.Add(todoItem);\n\n            await SyncAsync(); // offline sync\n        }\n\n        private async Task RefreshTodoItems()\n        {\n            MobileServiceInvalidOperationException exception = null;\n            try\n            {\n                // This code refreshes the entries in the list view by querying the TodoItems table.\n                // The query excludes completed TodoItems\n                items = await todoTable\n                    .Where(todoItem => todoItem.Complete == false)\n                    .ToCollectionAsync();\n            }\n            catch (MobileServiceInvalidOperationException e)\n            {\n                exception = e;\n            }\n\n            if (exception != null)\n            {\n                await new MessageDialog(exception.Message, \"Error loading items\").ShowAsync();\n            }\n            else\n            {\n                ListItems.ItemsSource = items;\n                this.ButtonSave.IsEnabled = true;\n            }\n        }\n\n        private async Task UpdateCheckedTodoItem(TodoItem item)\n        {\n            // This code takes a freshly completed TodoItem and updates the database. When the MobileService \n            // responds, the item is removed from the list \n            await todoTable.UpdateAsync(item);\n            items.Remove(item);\n            ListItems.Focus(Windows.UI.Xaml.FocusState.Unfocused);\n\n            await SyncAsync(); // offline sync\n        }\n\n        private async void ButtonRefresh_Click(object sender, RoutedEventArgs e)\n        {\n            ButtonRefresh.IsEnabled = false;\n\n            await SyncAsync(); // offline sync\n            await RefreshTodoItems();\n\n            ButtonRefresh.IsEnabled = true;\n        }\n\n        private async void ButtonSave_Click(object sender, RoutedEventArgs e)\n        {\n            var todoItem = new TodoItem { Text = TextInput.Text };\n            await InsertTodoItem(todoItem);\n        }\n\n        private async void CheckBoxComplete_Checked(object sender, RoutedEventArgs e)\n        {\n            CheckBox cb = (CheckBox)sender;\n            TodoItem item = cb.DataContext as TodoItem;\n            await UpdateCheckedTodoItem(item);\n        }\n\n        protected override async void OnNavigatedTo(NavigationEventArgs e)\n        {\n            await InitLocalStoreAsync(); // offline sync\n            await RefreshTodoItems();\n        }\n\n        #region Offline sync\n\n        private async Task InitLocalStoreAsync()\n        {\n            if (!App.MobileService.SyncContext.IsInitialized)\n            {\n                var store = new MobileServiceSQLiteStore(\"localstore.db\");\n                store.DefineTable<TodoItem>();\n                await App.MobileService.SyncContext.InitializeAsync(store);\n            }\n\n            await SyncAsync();\n        }\n\n        private async Task SyncAsync()\n        {\n            String errorString = null;\n\n            try\n            {\n                await App.MobileService.SyncContext.PushAsync();\n                await todoTable.PullAsync(\"todoItems\", todoTable.CreateQuery()); // first param is query ID, used for incremental sync\n            }\n\n            catch (MobileServicePushFailedException ex)\n            {\n                errorString = \"Push failed because of sync errors: \" +\n                  ex.PushResult.Errors.Count + \" errors, message: \" + ex.Message;\n            }\n            catch (Exception ex)\n            {\n                errorString = \"Pull failed: \" + ex.Message +\n                  \"\\n\\nIf you are still in an offline scenario, \" +\n                  \"you can try your Pull again when connected with your Mobile Serice.\";\n            }\n\n            if (errorString != null)\n            {\n                MessageDialog d = new MessageDialog(errorString);\n                await d.ShowAsync();\n            }\n        }\n\n        #endregion \n    }\n}\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"UWPDevMVA.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPDevMVA\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    <!--LayoutRoot is the root grid where all page content is placed-->\n    <Grid x:Name=\"LayoutRoot\" Background=\"Transparent\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!--TitlePanel contains the name of the application and page title-->\n        <StackPanel x:Name=\"TitlePanel\" Grid.Row=\"0\" Margin=\"0,18,0,18\">\n            <TextBlock Text=\"UWPDevMVA\" Style=\"{StaticResource TitleTextBlockStyle}\" Margin=\"18,0\"/>\n        </StackPanel>\n\n        <!--ContentPanel - place additional content here-->\n        <Grid x:Name=\"ContentPanel\" Grid.Row=\"1\" Margin=\"18,0,18,0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n            </Grid.RowDefinitions>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"4*\" />\n                <ColumnDefinition Width=\"2*\" />\n            </Grid.ColumnDefinitions>\n            <TextBlock Grid.Row=\"0\" Grid.ColumnSpan=\"2\" Style=\"{StaticResource BodyTextBlockStyle}\" Text=\"Enter some text below and click Save to insert a new TodoItem item into your database\" TextWrapping=\"Wrap\"/>\n            <TextBox Grid.Row=\"1\" Grid.Column=\"0\" Name=\"TextInput\" Text=\"\" />\n            <Button Grid.Row =\"1\" Grid.Column=\"1\" Name=\"ButtonSave\" Click=\"ButtonSave_Click\" IsEnabled=\"False\" Margin=\"10, 0, 0, 0\">Save</Button>\n            <TextBlock Grid.Row=\"2\" Grid.ColumnSpan=\"2\" Style=\"{StaticResource BodyTextBlockStyle}\" Text=\"Click refresh below to load the unfinished TodoItems from your database. Use the checkbox to complete and update your TodoItems\" TextWrapping=\"Wrap\"/>\n            <Button Grid.Row=\"3\" Grid.ColumnSpan=\"2\" Name=\"ButtonRefresh\" Click=\"ButtonRefresh_Click\" HorizontalAlignment=\"Stretch\">Refresh</Button>\n            <ListView  Grid.Row=\"4\" Grid.ColumnSpan=\"2\" Name=\"ListItems\">\n                <ListView.ItemTemplate>\n                    <DataTemplate>\n                        <StackPanel Orientation=\"Horizontal\">\n                            <CheckBox Name=\"CheckBoxComplete\" IsChecked=\"{Binding Complete, Mode=TwoWay}\" Checked=\"CheckBoxComplete_Checked\" Content=\"{Binding Text}\" Margin=\"10,5\" VerticalAlignment=\"Center\"/>\n                        </StackPanel>\n                    </DataTemplate>\n                </ListView.ItemTemplate>\n            </ListView>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/MainPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace UWPDevMVA\n{\n    public sealed partial class MainPage : Page\n    {\n    }\n}\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n  \n  <Identity Name=\"1010e1f1-6014-4024-afb5-e54464d2e64b\" Publisher=\"CN=test\" Version=\"1.0.0.0\" />\n  \n  <mp:PhoneIdentity PhoneProductId=\"1010e1f1-6014-4024-afb5-e54464d2e64b\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>UWPDevMVA.UWP</DisplayName>\n    <PublisherDisplayName>Mobile Services</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  \n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n        Executable=\"$targetnametoken$.exe\"\n        EntryPoint=\"UWPDevMVA.WindowsPhone.App\">\n        <uap:VisualElements\n            DisplayName=\"UWPDevMVA.UWP\"\n            Square150x150Logo=\"Assets\\Logo.png\"\n            Square44x44Logo=\"Assets\\SmallLogo.png\"\n            Description=\"UWPDevMVA.UWP\"\n            \n            BackgroundColor=\"transparent\">\n            <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\"/>\n            <uap:SplashScreen Image=\"Assets\\SplashScreen.png\"/>\n        </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n  </Capabilities>\n</Package>\n\n"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UWPDevMVA.WindowsPhone\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UWPDevMVA.WindowsPhone\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/UWPDevMVA.UWP.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props\" Condition=\"Exists('..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props')\" />\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{BD50ECA0-7F46-41E1-A407-56821F327B5B}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UWPDevMVA</RootNamespace>\n    <AssemblyName>UWPDevMVA.WindowsPhone</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>\n    <SolutionDir Condition=\"$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'\">..\\</SolutionDir>\n    <RestorePackages>true</RestorePackages>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"DataModel\\TodoItem.cs\" />\n    <Compile Include=\"MainPage.cs\" />\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.WindowsAzure.Mobile\">\n      <HintPath>..\\..\\packages\\WindowsAzure.MobileServices.2.0.0-beta\\lib\\wpa81\\Microsoft.WindowsAzure.Mobile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Mobile.Ext\">\n      <HintPath>..\\..\\packages\\WindowsAzure.MobileServices.2.0.0-beta\\lib\\wpa81\\Microsoft.WindowsAzure.Mobile.Ext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Mobile.SQLiteStore, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\WindowsAzure.MobileServices.SQLiteStore.2.0.0-beta\\lib\\portable-win+net45+wp8+wpa81+monotouch+monoandroid\\Microsoft.WindowsAzure.Mobile.SQLiteStore.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"SQLitePCL, Version=3.8.7.2, Culture=neutral, PublicKeyToken=bddade01e9c850c5, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\SQLitePCL.3.8.7.2\\lib\\netcore451\\SQLitePCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Net.Http.2.2.29\\lib\\win8\\System.Net.Http.Extensions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Net.Http.2.2.29\\lib\\win8\\System.Net.Http.Primitives.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"Microsoft.VCLibs.AppLocal, version=14.0\">\n      <Name>Microsoft Visual C++  AppLocal Runtime Package for Windows UAP</Name>\n    </SDKReference>\n    <SDKReference Include=\"SQLite.UAP.2015, Version=3.8.10\">\n      <Name>SQLite for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"$(SolutionDir)\\.nuget\\NuGet.targets\" Condition=\"Exists('$(SolutionDir)\\.nuget\\NuGet.targets')\" />\n  <Import Project=\"..\\..\\packages\\Microsoft.Bcl.Build.1.0.21\\build\\Microsoft.Bcl.Build.targets\" Condition=\"Exists('..\\..\\packages\\Microsoft.Bcl.Build.1.0.21\\build\\Microsoft.Bcl.Build.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.Bcl.Build.1.0.21\\build\\Microsoft.Bcl.Build.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.Bcl.Build.1.0.21\\build\\Microsoft.Bcl.Build.targets'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets'))\" />\n  </Target>\n  <Import Project=\"..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets\" Condition=\"Exists('..\\..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http.Primitives\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.2.29.0\" newVersion=\"4.2.29.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA/UWPDevMVA.WindowsPhone/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Bcl\" version=\"1.1.10\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Bcl.Build\" version=\"1.0.21\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Net.Http\" version=\"2.2.29\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"SQLitePCL\" version=\"3.8.7.2\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"WindowsAzure.MobileServices\" version=\"2.0.0-beta\" targetFramework=\"wpa81\" userInstalled=\"true\" />\n  <package id=\"WindowsAzure.MobileServices.SQLiteStore\" version=\"2.0.0-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "AzureMobileApps/UWPDevMVA_Windows_CS/UWPDevMVA.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"UWPDevMVA\", \"UWPDevMVA\", \"{F6C0526E-9FE6-4B07-B340-243315E431F1}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UWPDevMVA.UWP\", \"UWPDevMVA\\UWPDevMVA.WindowsPhone\\UWPDevMVA.UWP.csproj\", \"{BD50ECA0-7F46-41E1-A407-56821F327B5B}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|x86.Build.0 = Debug|x86\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|ARM.Build.0 = Release|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|x86.ActiveCfg = Release|x86\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|x86.Build.0 = Release|x86\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{BD50ECA0-7F46-41E1-A407-56821F327B5B} = {F6C0526E-9FE6-4B07-B340-243315E431F1}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "BackgroundExecution/BackgroundExecution.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ForegroundApp\", \"ForegroundApp\\ForegroundApp.csproj\", \"{78846B8C-1024-40A0-B57E-74105AC39342}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"BackgroundTask\", \"BackgroundTask\\BackgroundTask.csproj\", \"{B410A17C-6A4C-4089-A05B-DFC784FD04AD}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x64.Build.0 = Debug|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x86.Build.0 = Debug|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|ARM.Build.0 = Release|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x64.ActiveCfg = Release|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x64.Build.0 = Release|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x64.Deploy.0 = Release|x64\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x86.ActiveCfg = Release|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x86.Build.0 = Release|x86\n\t\t{78846B8C-1024-40A0-B57E-74105AC39342}.Release|x86.Deploy.0 = Release|x86\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|x64.Build.0 = Debug|x64\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Debug|x86.Build.0 = Debug|x86\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|ARM.Build.0 = Release|ARM\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|x64.ActiveCfg = Release|x64\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|x64.Build.0 = Release|x64\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|x86.ActiveCfg = Release|x86\n\t\t{B410A17C-6A4C-4089-A05B-DFC784FD04AD}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "BackgroundExecution/BackgroundTask/BackgroundTask.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{B410A17C-6A4C-4089-A05B-DFC784FD04AD}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10Background</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"MyUpdateBadgeTask.cs\" />\n    <Compile Include=\"MyUpdateTileTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "BackgroundExecution/BackgroundTask/MyUpdateBadgeTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.UI.Notifications;\n\nnamespace Template10\n{\n    public sealed class MyUpdateBadgeTask : IBackgroundTask\n    {\n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;\n            if (cost == BackgroundWorkCostValue.High)\n            {\n                Debug.WriteLine(\"Background task aborted (cost is high)\");\n            }\n            else\n            {\n                // handle canceled\n                taskInstance.Canceled += (s, e) =>\n                {\n                    Debug.WriteLine(\"Background task canceled\");\n                };\n\n                // perform task\n                var deferral = taskInstance.GetDeferral();\n                try\n                {\n                    var seed = (int)DateTime.Now.Ticks;\n                    var random = new Random(seed);\n                    var value = random.Next(1, 50);\n                    UpdateTile(value);\n\n                    Debug.WriteLine(\"Background task complete: \" + value.ToString());\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine(\"Background task error: \" + ex.Message);\n                }\n                finally\n                {\n                    deferral.Complete();\n                }\n\n            }\n        }\n\n        public static void UpdateTile(int value)\n        {\n            var type = BadgeTemplateType.BadgeNumber;\n            var xml = BadgeUpdateManager.GetTemplateContent(type);\n            var elements = xml.GetElementsByTagName(\"badge\");\n            var element = elements[0] as XmlElement;\n            element.SetAttribute(\"value\", value.ToString());\n\n            var updater = BadgeUpdateManager.CreateBadgeUpdaterForApplication();\n            var notification = new BadgeNotification(xml);\n            updater.Update(notification);\n\n            Debug.WriteLine(\"Background task badge updated: \" + value.ToString());\n\n            var template = ToastTemplateType.ToastText01;\n            xml = ToastNotificationManager.GetTemplateContent(template);\n            var text = xml.CreateTextNode(string.Format(\"Badge updated to {0}\", value));\n            elements = xml.GetElementsByTagName(\"text\");\n            elements[0].AppendChild(text);\n\n            var toast = new ToastNotification(xml);\n            var notifier = ToastNotificationManager.CreateToastNotifier();\n            notifier.Show(toast);\n\n            Debug.WriteLine(\"Background task toast shown: \" + value.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/BackgroundTask/MyUpdateTileTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.Graphics.Display;\nusing Windows.Graphics.Imaging;\nusing Windows.Storage;\nusing Windows.UI;\nusing Windows.UI.Notifications;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Markup;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\nnamespace Template10\n{\n    public sealed class MyUpdateTileTask : XamlRenderingBackgroundTask\n    {\n        protected override async void OnRun(IBackgroundTaskInstance taskInstance)\n        {\n            var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;\n            if (cost == BackgroundWorkCostValue.High)\n            {\n                Debug.WriteLine(\"Background task aborted (cost is high)\");\n            }\n            else\n            {\n                // handle canceled\n                taskInstance.Canceled += (s, e) =>\n                {\n                    Debug.WriteLine(\"Background task canceled\");\n                };\n\n                // perform task\n                var deferral = taskInstance.GetDeferral();\n                try\n                {\n                    await UpdateTileAsync();\n                    Debug.WriteLine(\"Background task complete\");\n                }\n                catch (Exception ex)\n                {\n                    Debug.WriteLine(\"Background task error: \" + ex.Message);\n                }\n                finally\n                {\n                    deferral.Complete();\n                }\n\n            }\n        }\n\n        private async Task UpdateTileAsync()\n        {\n            // create UI\n            var grid = new Grid\n            {\n                VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Stretch,\n                HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Stretch,\n            };\n            var star = new FontIcon\n            {\n                Glyph = \"\",\n                FontSize = 50\n            };\n            grid.Children.Add(star);\n            var number = new TextBlock\n            {\n                Text = 12.ToString(),\n                FontSize = 25,\n                Foreground = new SolidColorBrush(Colors.White)\n            };\n            grid.Children.Add(number);\n\n            // create bitmap\n            var bitmap = new RenderTargetBitmap();\n            await bitmap.RenderAsync(grid, 150, 150);\n\n            // create destination file\n            var folder = ApplicationData.Current.LocalFolder;\n            var file = await folder.CreateFileAsync(\"tile.png\", CreationCollisionOption.ReplaceExisting);\n\n            // write bitmap to file\n            using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))\n            {\n                var pixels = await bitmap.GetPixelsAsync();\n                // using System.Runtime.InteropServices.WindowsRuntime;\n                var bytes = pixels.ToArray();\n                var encoder = await BitmapEncoder\n                    .CreateAsync(BitmapEncoder.PngEncoderId, stream);\n                var format = BitmapPixelFormat.Bgra8;\n                var alpha = BitmapAlphaMode.Ignore;\n                var width = (uint)bitmap.PixelWidth;\n                var height = (uint)bitmap.PixelHeight;\n                var dpi = DisplayInformation.GetForCurrentView().LogicalDpi;\n                encoder.SetPixelData(format, alpha, width, height, dpi, dpi, bytes);\n                await encoder.FlushAsync();\n                stream.Seek(0);\n            }\n            await FileIO.WriteBytesAsync(file, null);\n\n            // replace existing tile\n            var type = TileTemplateType.TileSquare150x150Image;\n            var xml = TileUpdateManager.GetTemplateContent(type);\n\n            // no text on tile\n            var elements = xml.GetElementsByTagName(\"binding\");\n            (elements[0] as XmlElement).SetAttribute(\"branding\", \"none\");\n\n            // image on tile\n            elements = xml.GetElementsByTagName(\"image\");\n            (elements[0] as XmlElement).SetAttribute(\"src\", file.Path);\n\n            // update tile\n            var notification = new TileNotification(xml);\n            var updater = TileUpdateManager.CreateTileUpdaterForApplication();\n            updater.Clear();\n            updater.Update(notification);\n\n            // prepare notification toast\n            var toastTemplate = ToastTemplateType.ToastText01;\n            xml = ToastNotificationManager.GetTemplateContent(toastTemplate);\n            var text = xml.CreateTextNode(string.Format(\"Tile image updated to {0}\", number));\n            elements = xml.GetElementsByTagName(\"text\");\n            elements[0].AppendChild(text);\n\n            // send toast\n            var toast = new ToastNotification(xml);\n            var notifier = ToastNotificationManager.CreateToastNotifier();\n            notifier.Show(toast);\n\n            Debug.WriteLine(\"Background task toast shown: \" + number.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/BackgroundTask/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"BackgroundTask\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"BackgroundTask\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "BackgroundExecution/BackgroundTask/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"Template10.App\" xmlns:common=\"using:Template10.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:Template10.Converters\"\n                     xmlns:local=\"using:Template10\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Common/BackgroundHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\n\nnamespace Template10\n{\n    public static class BackgroundHelper\n    {\n        public static IBackgroundTaskRegistration FindRegistration<T>() where T : class\n        {\n            return BackgroundTaskRegistration.AllTasks\n                .Where(x => x.Value.Name.Equals(nameof(T)))\n                .Select(x => x.Value)\n                .FirstOrDefault();\n        }\n\n        public async static Task<BackgroundTaskRegistration> Register<T>(IBackgroundTrigger trigger, IEnumerable<IBackgroundCondition> conditions = null) where T : class\n        {\n            await BackgroundExecutionManager.RequestAccessAsync();\n            var allowed = BackgroundExecutionManager.GetAccessStatus();\n            switch (allowed)\n            {\n                case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:\n                case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:\n                    break;\n                case BackgroundAccessStatus.Unspecified:\n                case BackgroundAccessStatus.Denied:\n                    return null;\n            }\n\n            var existing = FindRegistration<T>();\n            if (existing != null)\n                existing.Unregister(false);\n\n            var task = new BackgroundTaskBuilder\n            {\n                Name = nameof(MyUpdateBadgeTask),\n                CancelOnConditionLoss = false,\n                TaskEntryPoint = typeof(T).ToString(),\n            };\n\n            task.SetTrigger(trigger);\n            if (conditions != null)\n            {\n                foreach (var condition in conditions)\n                    task.AddCondition(condition);\n            }\n            return task.Register();\n        }\n\n        public async static Task<bool> Unregister<T>() where T : class\n        {\n            await BackgroundExecutionManager.RequestAccessAsync();\n            var allowed = BackgroundExecutionManager.GetAccessStatus();\n            switch (allowed)\n            {\n                case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:\n                case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:\n                    break;\n                case BackgroundAccessStatus.Unspecified:\n                case BackgroundAccessStatus.Denied:\n                    return false;\n            }\n\n            var existing = FindRegistration<T>();\n            if (existing != null)\n                existing.Unregister(false);\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/ForegroundApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{78846B8C-1024-40A0-B57E-74105AC39342}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10Foreground</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>ForegroundApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BackgroundHelper.cs\" />\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"ForegroundApp_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\BackgroundTask\\BackgroundTask.csproj\">\n      <Project>{b410a17c-6a4c-4089-a05b-dfc784fd04ad}</Project>\n      <Name>BackgroundTask</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODO functionality in this template.\n                    Each of the types in this folder are inside the [Template10.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A TODO list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This TODO application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" TODO list and a \"vacation\" TODO list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace Template10.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace Template10.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Template10.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"ed13b9fd-c768-4a09-bd71-e01867b1ef10\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"ed13b9fd-c768-4a09-bd71-e01867b1ef10\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>ForegroundApp</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"ForegroundApp.App\">\n      <uap:VisualElements\n        DisplayName=\"ForegroundApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"ForegroundApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ForegroundApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ForegroundApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Models;\n\nnamespace Template10.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Models;\n\nnamespace Template10.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await this.GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Mvvm;\nusing Windows.ApplicationModel.Background;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override async void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n\n            // register background tasks\n            await BackgroundHelper.Register<MyUpdateTileTask>(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                this.TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                this.TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                var data = _todoListRepository.Sample(10).Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    this.TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command<string> _UpdateBadgeCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> UpdateBadgeCommand { get { return _UpdateBadgeCommand ?? (_UpdateBadgeCommand = new Mvvm.Command<string>(ExecuteUpdateBadgeCommand, CanExecuteUpdateBadgeCommand)); } }\n        private bool CanExecuteUpdateBadgeCommand(string value) { return true; }\n        private async void ExecuteUpdateBadgeCommand(string value)\n        {\n            try\n            {\n                Busy = true;\n                var number = default(int);\n                if (!int.TryParse(value, out number))\n                    return;\n                await Task.Delay(2000);\n                // TODO: update Badge (call update Badge background task)\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command<string> _UpdateTileCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> UpdateTileCommand { get { return _UpdateTileCommand ?? (_UpdateTileCommand = new Mvvm.Command<string>(ExecuteUpdateTileCommand, CanExecuteUpdateTileCommand)); } }\n        private bool CanExecuteUpdateTileCommand(string value) { return true; }\n        private async void ExecuteUpdateTileCommand(string value)\n        {\n            try\n            {\n                Busy = true;\n\n                var number = default(int);\n                if (!int.TryParse(value, out number))\n                    return;\n                await Task.Delay(2000);\n\n                var trigger = new ApplicationTrigger();\n                var task = await BackgroundHelper.Register<MyUpdateBadgeTask>(trigger);\n                task.Completed += (s,e)=> { Busy = false; };\n\n                var allowed = await trigger.RequestAsync();\n                if (allowed != ApplicationTriggerResult.Allowed)\n                {\n                    // it was not allowed to run\n                    Busy = false;\n                }\n            }\n            catch { Busy = false; }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Template10.Models;\n\nnamespace Template10.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace Template10.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            this.TodoList = list;\n            foreach (var item in list.Items)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                this.TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                this.TodoList.Items.Remove(this.SelectedItem.TodoItem);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Template10.ViewModels\"\n    xmlns:models=\"using:Template10.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n    \n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Label=\"Update Badge\" Icon=\"Refresh\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Top\">\n                        <StackPanel>\n                            <TextBox x:Name=\"BadgeTextBox\" Header=\"Badge number\" Text=\"10\" />\n                            <Button Content=\"Update\" Command=\"{Binding UpdateBadgeCommand}\" \n                                    CommandParameter=\"{Binding Text, ElementName=BadgeTextBox}\" />\n                        </StackPanel>\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n            <AppBarButton Label=\"Update Tile\" Icon=\"Pin\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Top\">\n                        <StackPanel>\n                            <TextBox x:Name=\"TileTextBox\" Header=\"Badge number\" Text=\"10\" />\n                            <Button Content=\"Update\" Command=\"{Binding UpdateTileCommand}\" \n                                    CommandParameter=\"{Binding Text, ElementName=TileTextBox}\" />\n                        </StackPanel>\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid>\n\n        <Hub>\n\n            <Hub.Header>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                    <Grid>\n                        <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                        <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                    </Grid>\n                </StackPanel>\n            </Hub.Header>\n\n            <HubSection VerticalContentAlignment=\"Stretch\" x:Name=\"MainHubSection\">\n                <DataTemplate>\n                    <ItemsControl ItemsSource=\"{Binding TodoLists}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Horizontal\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Width=\"456\" Margin=\"0,0,12,12\">\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"*\" />\n                                    </Grid.RowDefinitions>\n                                    <CommandBar Grid.Row=\"0\" VerticalAlignment=\"Bottom\" ClosedDisplayMode=\"Minimal\" Background=\"DimGray\">\n                                        <CommandBar.SecondaryCommands>\n                                            <AppBarButton Label=\"Delete list\">\n                                                <AppBarButton.Flyout>\n                                                    <Flyout Placement=\"Bottom\">\n                                                        <Button Content=\"Are you sure?\" Command=\"{Binding DataContext.RemoveListCommand, ElementName=MainHubSection}\" CommandParameter=\"{Binding}\" />\n                                                    </Flyout>\n                                                </AppBarButton.Flyout>\n                                            </AppBarButton>\n                                        </CommandBar.SecondaryCommands>\n                                    </CommandBar>\n                                    <Rectangle Grid.Row=\"1\" Fill=\"Black\" Opacity=\".1\" />\n                                    \n                                    <!-- list title -->\n                                    <TextBlock Tapped=\"List_Tapped\" RequestedTheme=\"Light\" Margin=\"24,12\" FontSize=\"34\" FontWeight=\"Light\" Grid.Row=\"1\" Text=\"{Binding TodoList.Title}\" />\n                                    \n                                    <ScrollViewer Grid.Row=\"2\" VerticalAlignment=\"Stretch\">\n                                        <ListView Padding=\"0,0,0,12\" Margin=\"0\" Grid.Row=\"2\"\n                                                  IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                                  ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                                  SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                                  CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                                            <ListView.Background>\n                                                <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                                            </ListView.Background>\n                                            <ListView.ItemContainerTransitions>\n                                                <TransitionCollection>\n                                                    <AddDeleteThemeTransition />\n                                                </TransitionCollection>\n                                            </ListView.ItemContainerTransitions>\n                                            <ListView.ItemContainerStyle>\n                                                <Style TargetType=\"ListViewItem\">\n                                                    <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                                    <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                                                </Style>\n                                            </ListView.ItemContainerStyle>\n                                            <ListView.Header>\n\n                                                <!-- create new item -->\n                                                <TextBox KeyDown=\"TextBox_KeyDown\" PlaceholderText=\"Add a new task\" Margin=\"24,0,24,12\" />\n\n                                            </ListView.Header>\n                                            <ListView.ItemTemplate>\n                                                <DataTemplate>\n                                                    <Grid Height=\"48\">\n                                                        <Grid.ColumnDefinitions>\n                                                            <ColumnDefinition Width=\"48\" />\n                                                            <ColumnDefinition Width=\"*\" />\n                                                            <ColumnDefinition Width=\"48\" />\n                                                        </Grid.ColumnDefinitions>\n\n                                                        <!-- item checked -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                                        <!-- item title -->\n                                                        <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                                        <!-- item strikethrough -->\n                                                        <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                                        <!-- item star -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                                    </Grid>\n                                                </DataTemplate>\n                                            </ListView.ItemTemplate>\n                                        </ListView>\n                                    </ScrollViewer>\n                                </Grid>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n                </DataTemplate>\n            </HubSection>\n        </Hub>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- task editor -->\n        <ContentDialog x:Name=\"TodoEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\" SecondaryButtonCommand=\"{Binding RemoveCommand}\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\">\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"48\" />\n                            <ColumnDefinition Width=\"*\" />\n                        </Grid.ColumnDefinitions>\n\n                        <StackPanel Grid.Column=\"0\" VerticalAlignment=\"Top\">\n                            <!-- item checked -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" />\n                            <!-- item star -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n                        </StackPanel>\n\n                        <!-- item details -->\n                        <StackPanel Grid.Column=\"1\" MaxWidth=\"300\">\n                            <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                        </StackPanel>\n\n                    </Grid>\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n            CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar= true;\n            Window.Current.SetTitleBar(AppTitle);\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            this.TodoEditorDialog.DataContext = e.ClickedItem;\n            await this.TodoEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n            this.ListEditorDialog.DataContext = data.TodoList;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            if (e.Key == Windows.System.VirtualKey.Enter \n                && !string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                e.Handled = true;\n                var list = textBox.DataContext as ViewModels.TodoListViewModel;\n                list.AddCommand.Execute(textBox.Text);\n                textBox.Text = string.Empty;\n                textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "BackgroundExecution/ForegroundApp/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "Cortana/CortanaTodo/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"CortanaTodo.App\" xmlns:common=\"using:Template10.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:Template10.Converters\"\n                     xmlns:local=\"using:CortanaTodo\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "Cortana/CortanaTodo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Services;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.ApplicationModel.VoiceCommands;\nusing Windows.Storage;\n\nnamespace CortanaTodo\n{\n    sealed partial class App : Template10.Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        /// <summary>\n        /// Installs the Voice Command Definitions.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        /// <remarks>\n        /// Since there's no way to test that the VCD has been imported or that it's the current version it's okay to do this on application load.\n        /// </remarks>\n        private async Task InstallVoiceCommandsAsync()\n        {\n            try\n            {\n                StorageFile vcdStorageFile = await Package.Current.InstalledLocation.GetFileAsync(@\"VoiceCommands.xml\");\n                await VoiceCommandDefinitionManager.InstallCommandDefinitionsFromStorageFileAsync(vcdStorageFile);\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(\"Installing Voice Commands Failed: \" + ex.ToString());\n            }\n        }\n\n        public override async Task OnActivatedAsync(IActivatedEventArgs e)\n        {\n            // If the app was launched via some other mechanism than a Voice Command, exit. If \n            // the app is able to act as a share target, or handle various file types, etc,  \n            // then developers should handle these cases here. \n            if (e.Kind != ActivationKind.VoiceCommand)\n            {\n                return;\n            }\n\n            // The arguments can represent many different activation types. Cast it so we can get the \n            // parameters we care about out. \n            var commandArgs = e as VoiceCommandActivatedEventArgs;\n            var reco = commandArgs.Result;\n\n            // Get the name of the voice command and the text spoken. See AdventureWorksCommands.xml for \n            // the <Command> tags this can be filled with. \n            string commandName = reco.RulePath[0];\n            string listName = reco.SemanticInterpretation.Properties[\"listName\"].FirstOrDefault();\n\n            // Multiple different voice commands may be supported, switch between them (The voiceCommandName \n            switch (commandName)\n            {\n                case \"showList\":\n                    NavigationService.Navigate(typeof(Views.MainPage), listName);\n                    break;\n                default:\n                    // If we can't determine what page to launch, go to the default entry point. \n                    NavigationService.Navigate(typeof(Views.MainPage));\n                    break;\n            }\n            await base.OnActivatedAsync(e);\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            // Navigate to main page\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n\n            // Register voice commands async\n            return InstallVoiceCommandsAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "Cortana/CortanaTodo/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\nusing Template10.Services.Lifecycle;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += async (s, e) =>\n            {\n                // Let app handle first\n                OnResuming(s, e);\n\n                // Let NavigationService (and there ViewModel) handle\n                await ((ILifecycleAware)this.NavigationService)?.HandleResumeAsync(e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                // Need time to do work\n                var deferral = e.SuspendingOperation.GetDeferral();\n\n                // Let NavigationService (and therefore ViewModel) handle first\n                await ((ILifecycleAware)this.NavigationService)?.HandleSuspendAsync(e);\n\n                // Let app handle\n                await OnSuspendingAsync(s, e);\n\n                // Done working\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/CortanaTodo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>CortanaTodo</RootNamespace>\n    <AssemblyName>CortanaTodo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>CortanaTodo_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>1b8df4b3</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP;CODE_ANALYSIS;CODE_ANALYSIS</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Extensions\\WeakEvent.cs\" />\n    <Compile Include=\"Mvvm\\CommandCollection.cs\" />\n    <Compile Include=\"Mvvm\\CommandHelper.cs\" />\n    <Compile Include=\"Mvvm\\DynamicCommand.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Mvvm\\ViewModel.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\Lifecycle\\ILifecycleAware.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigationAware.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgsEx.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"CortanaTodo_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n    <Content Include=\"VoiceCommands.xml\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n      <SubType>Designer</SubType>\n    </Content>\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\CortanaTodo.Background\\CortanaTodo.Background.csproj\">\n      <Project>{987337ee-669c-4856-b425-68f1d0d3b9c6}</Project>\n      <Name>CortanaTodo.Background</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\CortanaTodo.Shared\\CortanaTodo.Shared.csproj\">\n      <Project>{0c4d6450-599d-445d-a20b-38f200201e71}</Project>\n      <Name>CortanaTodo.Shared</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Cortana/CortanaTodo/Extensions/WeakEvent.cs",
    "content": "﻿// #define WEAK_LOGGING\nusing System;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing System.Runtime.InteropServices.WindowsRuntime;\n\nnamespace Template10\n{\n    /// <summary>\n    /// A base class that can monitor any event in a generic way.\n    /// </summary>\n    public class EventWatcher : IDisposable\n    {\n        #region Member Variables\n        private object source;\n        private EventInfo eventInfo;\n        private Delegate handler;\n        #endregion // Member Variables\n\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"EventWatcher\"/> instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        public EventWatcher(object source, string eventName)\n        {\n            Subscribe(source, eventName);\n        }\n        #endregion // Constructors\n\n\n        #region Internal Methods\n        /// <summary>\n        /// Dynamically creates a handler for any event.\n        /// </summary>\n        /// <param name=\"signature\">\n        /// The <see cref=\"Type\"/> that represents the event (or delegate) signature.\n        /// </param>\n        private void CreateHandlerDelegate(Type signature)\n        {\n            // Get the event delegate's parameters from its 'Invoke' method.\n            var invokeMethod = signature.GetTypeInfo().GetDeclaredMethod(\"Invoke\");\n\n            // Determine what parameters are passed into the handler\n            var parameters = invokeMethod.GetParameters()\n                .Select((p) => Expression.Parameter(p.ParameterType, p.Name)).ToArray();\n\n            // Create an expression to convert the individual parameters into a param array\n            var paramArray = Expression.NewArrayInit(typeof(object), parameters);\n\n            // Get a reference to the EventRaised method\n            var eventRaisedMethod = typeof(EventWatcher).GetTypeInfo().GetDeclaredMethod(nameof(OnEventRaised));\n\n            // Create an expression that calls the EventRaised method passing the parameter array\n            var body = Expression.Call(Expression.Constant(this), eventRaisedMethod, paramArray);\n\n            // Create a lambda from the body and parameters\n            var listener = Expression.Lambda(signature, body, parameters);\n\n            // Compile the lambda, converting it to a delegate\n            handler = listener.Compile();\n        }\n\n        /// <summary>\n        /// Subscribes to the named event on the specified object instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        private void Subscribe(object source, string eventName)\n        {\n            // Validate\n            if (source == null) throw new ArgumentNullException(\"target\");\n            if (string.IsNullOrEmpty(eventName)) throw new ArgumentException(\"eventName\");\n\n            // Store\n            this.source = source;\n\n            // Attempt to get the runtime event\n            eventInfo = source.GetType().GetRuntimeEvent(eventName);\n\n            // Make sure event was found\n            if (eventInfo == null)\n            {\n                throw new InvalidOperationException(string.Format(\"RuntimeEvent '{0}' was not found on type '{1}'\", eventName, source.GetType().Name));\n            }\n\n            // Get pointers to the add and remove methods\n            MethodInfo addMethod = eventInfo.AddMethod;\n            MethodInfo removeMethod = eventInfo.RemoveMethod;\n\n            // Get the parameter list from the add method\n            ParameterInfo[] addParameters = addMethod.GetParameters();\n\n            // The method signature for the event handler is the first parameter\n            Type delegateType = addParameters[0].ParameterType;\n\n            // Create a generic handler that matches the signature and forwards calls to our EventRaised method\n            CreateHandlerDelegate(delegateType);\n\n            // Use the RuntimeMarshaler to subscribe to the event\n            Func<object, EventRegistrationToken> add = a => (EventRegistrationToken)addMethod.Invoke(source, new object[] { handler });\n            Action<EventRegistrationToken> remove = t => removeMethod.Invoke(source, new object[] { t });\n            WindowsRuntimeMarshal.AddEventHandler(add, remove, handler);\n        }\n        #endregion // Internal Methods\n\n\n        #region IDisposable Members\n        void IDisposable.Dispose()\n        {\n            // Remove the event handler\n            if (handler != null)\n            {\n                eventInfo.RemoveEventHandler(source, handler);\n                handler = null;\n            }\n        }\n        #endregion // IDisposable Members\n\n        #region Overridables / Event Triggers\n        /// <summary>\n        /// Called when the event being watched is raised.\n        /// </summary>\n        /// <param name=\"parameters\">\n        /// The parameters of the event.\n        /// </param>\n        protected virtual void OnEventRaised(params object[] parameters)\n        {\n\n        }\n        #endregion // Overridables / Event Triggers\n    }\n\n    /// <summary>\n    /// Allows multiple subscriptions to an event without pinning subscribers in memory.\n    /// </summary>\n    public class WeakEvent : EventWatcher\n    {\n\n        #region Nested Types\n        private class WeakSubscription\n        {\n            public WeakSubscription(Delegate del)\n            {\n                Instance = new WeakReference(del.Target);\n                Method = del.GetMethodInfo();\n            }\n            public WeakReference Instance { get; set; }\n            public MethodInfo Method { get; set; }\n        }\n\n        private class SubscriberCollection : Collection<WeakSubscription> { }\n        #endregion // Nested Types\n\n        #region Static Version\n        #region Member Variables\n        static private Collection<WeakEvent> registrations = new Collection<WeakEvent>();\n        #endregion // Member Variables\n\n\n        #region Internal Methods\n        static private WeakEvent FindRegistration(object source, string eventName)\n        {\n            // Look for registration\n            WeakEvent reg = null;\n            for (int iReg = registrations.Count - 1; iReg >= 0; iReg--)\n            {\n                // Get the registration\n                reg = registrations[iReg];\n\n                // If the source is dead, remove the registration\n                if ((reg != null) && (!reg.source.IsAlive))\n                {\n                    registrations.RemoveAt(iReg);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing registration for event '{0}' due to expired object instance. New total registrations: {1}\", eventName, registrations.Count));\n                    #endif\n                    reg = null;\n                }\n\n                // If it's the right source, done searching\n                if ((reg.source.Target == source) && (reg.eventName == eventName))\n                {\n                    break;\n                }\n                else\n                {\n                    reg = null;\n                }\n            }\n\n            // Done searching\n            return reg;\n        }\n\n        static private void VerifyDelegate<THandler>() where THandler : class\n        {\n            // Verify handler type\n            if (!typeof(Delegate).GetTypeInfo().IsAssignableFrom(typeof(THandler).GetTypeInfo()))\n            {\n                throw new InvalidOperationException(string.Format(\"The type '{0}' is not a delegate and cannot be used for event subscriptions.\", typeof(THandler).Name));\n            }\n        }\n        #endregion // Internal Methods\n\n        #region Public Methods\n        /// <summary>\n        /// Adds a weak subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The object that is the source of the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event.\n        /// </param>\n        /// <param name=\"handler\">\n        /// The handler to subscribe.\n        /// </param>\n        static public void Subscribe<THandler>(object source, string eventName, THandler handler) where THandler : class\n        {\n            // Verify delegate type\n            VerifyDelegate<THandler>();\n\n            // Try to find existing\n            var reg = FindRegistration(source, eventName);\n\n            // If not found, create one and store it\n            if (reg == null)\n            {\n                reg = new WeakEvent(source, eventName);\n                registrations.Add(reg);\n                #if WEAK_LOGGING\n                Debug.WriteLine(string.Format(\"Creating new registration for event '{0}' and object ID {1}. Total registrations: {2}\", eventName, source.GetHashCode(), registrations.Count));\n                #endif\n            }\n            #if WEAK_LOGGING\n            else\n            {\n                Debug.WriteLine(string.Format(\"Reusing existing registration for event '{0}' and object ID {1}. Total registrations: {2}\", eventName, source.GetHashCode(), registrations.Count));\n            }\n            #endif\n\n            // Add the subscription\n            reg.Subscribe(handler as Delegate);\n        }\n\n        /// <summary>\n        /// Removes a subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The object that is the source of the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event.\n        /// </param>\n        /// <param name=\"handler\">\n        /// The handler to unsubscribe.\n        /// </param>\n        static public void Unsubscribe<THandler>(object source, string eventName, THandler handler) where THandler : class\n        {\n            // Verify delegate type\n            VerifyDelegate<THandler>();\n\n            // Try to find existing\n            var reg = FindRegistration(source, eventName);\n\n            // If found, unsubscribe\n            if (reg == null)\n            {\n                reg.Subscribe(handler as Delegate);\n            }\n        }\n        #endregion // Public Methods\n        #endregion // Static Version\n\n\n        #region Instance Version\n        #region Member Variables\n        private string eventName;\n        private WeakReference source;\n        private SubscriberCollection subscriptions = new SubscriberCollection();\n        #endregion // Member Variables\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"WeakEvent\"/> instance.\n        /// </summary>\n        /// <param name=\"source\">\n        /// The source object that will be raising the event.\n        /// </param>\n        /// <param name=\"eventName\">\n        /// The name of the event to subscribe to.\n        /// </param>\n        private WeakEvent(object source, string eventName) : base(source, eventName)\n        {\n            // Store\n            this.source = new WeakReference(source);\n            this.eventName = eventName;\n        }\n        #endregion // Constructors\n\n        #region Internal Methods\n        private WeakSubscription FindSubscription(Delegate handler)\n        {\n            // Get the target\n            var target = handler.Target;\n\n            // Get the new info\n            var method = handler.GetMethodInfo();\n\n            // Make sure it's not already subscribed\n            for (int iSub = subscriptions.Count - 1; iSub >= 0; iSub--)\n            {\n                // Get the subscription\n                var sub = subscriptions[iSub];\n\n                // Subscriber still alive?\n                if (sub.Instance.IsAlive)\n                {\n                    // Already subscribed?\n                    if ((sub.Instance.Target == target) && (sub.Method == method)) { return sub; }\n                }\n                else\n                {\n                    // Reference dead. Might as well remove it.\n                    subscriptions.RemoveAt(iSub);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing expired registration for event '{0}' and object ID {1}. New total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n                    #endif\n                }\n            }\n\n            // Not found\n            return null;\n        }\n        #endregion // Internal Methods\n\n        #region Overrides / Event Handlers\n        protected override void OnEventRaised(params object[] parameters)\n        {\n            // Pass to base first\n            base.OnEventRaised(parameters);\n\n            #if WEAK_LOGGING\n            Debug.WriteLine(string.Format(\"Forwarding event for {0} subscribers.\", subscriptions.Count));\n            Debug.WriteLine(string.Format(\"Forwarding event '{0}' for object ID {1}. Total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n            #endif\n\n            // Do for all subscribers\n            for (int iSub = subscriptions.Count - 1; iSub >= 0; iSub--)\n            {\n                // Get the subscription\n                var sub = subscriptions[iSub];\n\n                // Alive?\n                if (sub.Instance.IsAlive)\n                {\n                    // Call the subscriber safely\n                    sub.Method.Invoke(sub.Instance.Target, parameters);\n                }\n                else\n                {\n                    // Reference dead. Might as well remove it.\n                    subscriptions.RemoveAt(iSub);\n                    #if WEAK_LOGGING\n                    Debug.WriteLine(string.Format(\"Removing expired registration for event '{0}' and object ID {1}. New total registrations: {2}\", eventName, source.Target.GetHashCode(), registrations.Count));\n                    #endif\n                }\n            }\n        }\n        #endregion // Overrides / Event Handlers\n\n        #region Internal Methods\n        /// <summary>\n        /// Adds a weak subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"handler\">\n        /// The handler to subscribe.\n        /// </param>\n        private void Subscribe(Delegate handler)\n        {\n            // Try to find existing subscription\n            var existing = FindSubscription(handler);\n\n            // If not subscribed yet, subscribe\n            if (existing == null)\n            {\n                subscriptions.Add(new WeakSubscription(handler));\n            }\n        }\n\n        /// <summary>\n        /// Removes a subscription to the specified handler.\n        /// </summary>\n        /// <param name=\"handler\">\n        /// The handler to unsubscribe.\n        /// </param>\n        private void Unsubscribe(Delegate handler)\n        {\n            // Try to find existing subscription\n            var existing = FindSubscription(handler);\n\n            // If found, remove it\n            if (existing != null)\n            {\n                subscriptions.Remove(existing);\n            }\n        }\n        #endregion // Internal Methods\n        #endregion // Instance Version\n    }\n\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Mvvm/CommandCollection.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    /// <summary>\n    /// The interface of a command with a name.\n    /// </summary>\n    public interface INamedCommand : ICommand\n    {\n        /// <summary>\n        /// Gets the name of the command.\n        /// </summary>\n        string Name { get; }\n    }\n\n    /// <summary>\n    /// A collection of commands.\n    /// </summary>\n    public class CommandCollection : ObservableCollection<ICommand>\n    {\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandCollection\"/> instance.\n        /// </summary>\n        public CommandCollection() { }\n\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandCollection\"/> with the specified items.\n        /// </summary>\n        /// <param name=\"collection\"></param>\n        public CommandCollection(IEnumerable<ICommand> collection) : base(collection) { }\n        #endregion // Constructors\n\n\n        #region Public Properties\n        /// <summary>\n        /// Attempts to get the command with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        /// The name of the command to obtain.\n        /// </param>\n        /// <returns>\n        /// The command with the specified name if found; otherwise <see langword = \"null\" />.\n        /// </returns>\n        /// <remarks>\n        /// This method only works on commands that implement the <see cref=\"INamedCommand\"/> interface.\n        /// </remarks>\n        public ICommand this[string name]\n        {\n            get\n            {\n                // Validate\n                if (string.IsNullOrEmpty(name)) throw new ArgumentException(\"name\");\n\n                // Try to find\n                return this.OfType<INamedCommand>().Where(c => c.Name == name).FirstOrDefault();\n            }\n        }\n        #endregion // Public Properties\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Mvvm/CommandHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    /// <summary>\n    /// Base class for command attributes.\n    /// </summary>\n    public abstract class CommandAttributeBase : Attribute\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandAttributeBase\"/>.\n        /// </summary>\n        /// <param name=\"commandName\">\n        /// The name of the command.\n        /// </param>\n        public CommandAttributeBase(string commandName)\n        {\n            // Validate\n            if (string.IsNullOrEmpty(commandName)) throw new ArgumentException(\"commandName\");\n\n            // Store\n            this.CommandName = commandName;\n        }\n        #endregion // Constructors\n\n        #region Public Properties\n        /// <summary>\n        /// Gets the name of the command.\n        /// </summary>\n        public string CommandName { get; private set; }\n        #endregion // Public Properties\n    }\n\n    /// <summary>\n    /// Marks a method as the handler of a command.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Method)]\n    public class CommandAttribute : CommandAttributeBase\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandAttribute\"/>.\n        /// </summary>\n        /// <param name=\"commandName\">\n        /// The name of the command.\n        /// </param>\n        public CommandAttribute(string commandName) : base(commandName) { }\n        #endregion // Constructors\n    }\n\n    /// <summary>\n    /// Marks a method as the evaluator of the availability of a command.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]\n    public class CommandCanExecuteAttribute : CommandAttributeBase\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandCanExecuteAttribute\"/>.\n        /// </summary>\n        /// <param name=\"commandName\">\n        /// The name of the command.\n        /// </param>\n        public CommandCanExecuteAttribute(string commandName) : base(commandName) { }\n        #endregion // Constructors\n    }\n\n    /// <summary>\n    /// Marks a property as a trigger that may change the availability of a command.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]\n    public class CommandCanExecuteChangedAttribute : CommandAttributeBase\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"CommandCanExecuteChangedAttribute\"/>.\n        /// </summary>\n        /// <param name=\"commandName\">\n        /// The name of the command.\n        /// </param>\n        public CommandCanExecuteChangedAttribute(string commandName) : base(commandName) { }\n        #endregion // Constructors\n    }\n\n    /// <summary>\n    /// A class that helps with creating commands for View Models.\n    /// </summary>\n    static public class CommandHelper\n    {\n        /// <summary>\n        /// Creates a collection of commands for the specified ViewModel.\n        /// </summary>\n        /// <param name=\"viewModel\">\n        /// The ViewModel instance used to determine and create commands.\n        /// </param>\n        /// <returns>\n        /// An observable collection of commands for the View Model.\n        /// </returns>\n        /// <remarks>\n        /// This method leverages <see cref=\"CommandAttribute\"/>, <see cref=\"CommandCanExecuteAttribute\"/> and \n        /// <see cref=\"CommandCanExecuteChangedAttribute\"/> to dynamically build the command collection.\n        /// </remarks>\n        static public CommandCollection CreateCommands(object viewModel)\n        {\n            // Validate\n            if (viewModel == null) throw new ArgumentNullException(\"viewModel\");\n\n            // Create lookup table\n            var lookup = new Dictionary<string, DynamicCommand>();\n\n            // Get type\n            var type = viewModel.GetType();\n\n            // Get type info\n            var typeInfo = type.GetTypeInfo();\n\n            // Get all methods\n            foreach (var method in typeInfo.DeclaredMethods)\n            {\n                // Check for Execute handlers\n                foreach (var executeAttr in method.GetCustomAttributes<CommandAttribute>())\n                {\n                    // Get or create dynamic command\n                    DynamicCommand command = null;\n                    if (!lookup.TryGetValue(executeAttr.CommandName, out command))\n                    {\n                        command = new DynamicCommand(viewModel, executeAttr.CommandName);\n                        lookup[executeAttr.CommandName] = command;\n                    }\n\n                    // Make sure not already set\n                    if (command.ExecuteMethod != null)\n                    {\n                        throw new InvalidOperationException(string.Format(\"CommandAttribute applied more than once for command '{0}' on type '{1}'\", executeAttr.CommandName, type.Name));\n                    }\n\n                    // Set the Execute method\n                    command.ExecuteMethod = method;\n                }\n\n                // Check for CanExecute handlers\n                foreach (var canExecuteAttr in method.GetCustomAttributes<CommandCanExecuteAttribute>())\n                {\n                    // Get or create dynamic command\n                    DynamicCommand command = null;\n                    if (!lookup.TryGetValue(canExecuteAttr.CommandName, out command))\n                    {\n                        command = new DynamicCommand(viewModel, canExecuteAttr.CommandName);\n                        lookup[canExecuteAttr.CommandName] = command;\n                    }\n\n                    // Make sure not already set\n                    if (command.CanExecuteMethod != null)\n                    {\n                        throw new InvalidOperationException(string.Format(\"CommandCanExecuteAttribute applied more than once for command '{0}' on type '{1}'\", canExecuteAttr.CommandName, type.Name));\n                    }\n\n                    // Set the CanExecute method\n                    command.CanExecuteMethod = method;\n                }\n            }\n\n            // Get all properties\n            foreach (var prop in typeInfo.DeclaredProperties)\n            {\n                // Check for Execute handlers\n                foreach (var executeChangedAttr in prop.GetCustomAttributes<CommandCanExecuteChangedAttribute>())\n                {\n                    // Get or create dynamic command\n                    DynamicCommand command = null;\n                    if (!lookup.TryGetValue(executeChangedAttr.CommandName, out command))\n                    {\n                        command = new DynamicCommand(viewModel, executeChangedAttr.CommandName);\n                        lookup[executeChangedAttr.CommandName] = command;\n                    }\n\n                    // Add the property name\n                    command.AddCanExecuteProperty(prop.Name);\n                }\n            }\n\n            // Done looking. Create and return collection.\n            return new CommandCollection(lookup.Values);\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Mvvm/DynamicCommand.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Reflection;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    /// <summary>\n    /// Represents a dynamically generated command.\n    /// </summary>\n    /// <remarks>\n    /// Instances of this class are generally created by the <see cref=\"CommandHelper\"/> class using \n    /// <see cref=\"CommandAttribute\"/>, <see cref=\"CommandCanExecuteAttribute\"/> and \n    /// <see cref=\"CommandCanExecuteChangedAttribute\"/>.\n    /// </remarks>\n    public class DynamicCommand : INamedCommand\n    {\n        #region Static Version\n        #region Internal Methods\n        /// <summary>\n        /// Validates a <see cref=\"MethodInfo\"/> for use as the CanExecute handler for an ICommand.\n        /// </summary>\n        /// <param name=\"executeMethod\">\n        /// The <see cref=\"MethodInfo\"/> to validate.\n        /// </param>\n        static private void ValidateCanExecuteMethod(MethodInfo canExecuteMethod)\n        {\n            // Validate return type\n            if (canExecuteMethod.ReturnType != typeof(bool))\n            {\n                throw new InvalidOperationException(string.Format(\"The method {0} must return a bool\", canExecuteMethod.Name));\n            }\n\n            // Validate parameters\n            ValidateExecuteMetod(canExecuteMethod);\n        }\n\n        /// <summary>\n        /// Validates a <see cref=\"MethodInfo\"/> for use as the Execute handler for an ICommand.\n        /// </summary>\n        /// <param name=\"executeMethod\">\n        /// The <see cref=\"MethodInfo\"/> to validate.\n        /// </param>\n        static private void ValidateExecuteMetod(MethodInfo executeMethod)\n        {\n            // Get params\n            var par = executeMethod.GetParameters();\n\n            if (par.Length > 1)\n            {\n                throw new InvalidOperationException(string.Format(\"The method {0} must accept either 0 or 1 argument(s)\", executeMethod.Name));\n            }\n        }\n        #endregion // Internal Methods\n        #endregion // Static Version\n\n\n        #region Instance Version\n        #region Member Variables\n        private Collection<string> canExecuteProperties;\n        private bool changeSubscribed = false;\n        private object commandSource;\n        #endregion // Member Variables\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"DynamicCommand\"/> instance.\n        /// </summary>\n        /// <param name=\"commandSource\">\n        /// The object that is the source of the command.\n        /// </param>\n        public DynamicCommand(object commandSource, string name)\n        {\n            // Validate\n            if (commandSource == null) throw new ArgumentNullException(\"commandSource\");\n            if (string.IsNullOrEmpty(name)) throw new ArgumentException(\"name\");\n\n            // Store\n            this.commandSource = commandSource;\n            Name = name;\n        }\n        #endregion // Constructors\n\n        #region Overrides / Event Handlers\n        private void CommandSource_PropertyChanged(object sender, PropertyChangedEventArgs e)\n        {\n            // If the property name is in the list, raise the event\n            if (canExecuteProperties.Contains(e.PropertyName))\n            {\n                RaiseCanExecuteChanged();\n            }\n        }\n        #endregion // Overrides / Event Handlers\n\n        #region Public Methods\n        /// <summary>\n        /// Adds the named property as a property that should trigger the CanExecuteChanged event.\n        /// </summary>\n        /// <param name=\"propertyName\">\n        /// The name of the property.\n        /// </param>\n        public void AddCanExecuteProperty(string propertyName)\n        {\n            // Validate\n            if (string.IsNullOrEmpty(propertyName)) throw new ArgumentException(\"propertyName\");\n\n            // Create collection if it doesn't exist\n            if (canExecuteProperties == null)\n            {\n                canExecuteProperties = new Collection<string>();\n            }\n\n            // If not in the list, add it\n            if (!canExecuteProperties.Contains(propertyName))\n            {\n                canExecuteProperties.Add(propertyName);\n            }\n\n            // If not subscribed, subscribe\n            if (!changeSubscribed)\n            {\n                // Get as INotifyPropertyChanged\n                var iNotifySource = commandSource as INotifyPropertyChanged;\n\n                // Make sure it implements the interface\n                if (iNotifySource == null)\n                {\n                    var msg = string.Format(\"An attempt was made to add the property '{0}' as a trigger for a command but the type '{1}' does not implement {2}.\", propertyName, commandSource.GetType().Name, nameof(INotifyPropertyChanged));\n                    throw new InvalidOperationException(msg);\n                }\n\n                // Mark as subscribed\n                changeSubscribed = true;\n\n                // Subscribe\n                iNotifySource.PropertyChanged += CommandSource_PropertyChanged;\n            }\n        }\n\n        /// <summary>\n        /// Evaluates whether or not the command can be executed with the specified parameter.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// The parameter for the command.\n        /// </param>\n        /// <returns>\n        /// <c>true</c> if the command can be executed with the specified parameter; otherwise <c>false</c>.\n        /// </returns>\n        public bool CanExecute(object parameter)\n        {\n            if (canExecuteMethod == null)\n            {\n                return true;\n            }\n\n            if (canExecuteMethod.GetParameters().Length == 1)\n            {\n                return (bool)canExecuteMethod.Invoke(commandSource, new object[] { parameter });\n            }\n            else\n            {\n                return (bool)canExecuteMethod.Invoke(commandSource, null);\n            }\n        }\n\n        /// <summary>\n        /// Executes the command with the specified parameter.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// The parameter to execute the command with.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            if (CanExecute(parameter) && (executeMethod != null))\n            {\n                if (executeMethod.GetParameters().Length == 1)\n                {\n                    executeMethod.Invoke(commandSource, new object[] { parameter });\n                }\n                else\n                {\n                    executeMethod.Invoke(commandSource, null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Raises the <see cref=\"CanExecuteChanged\"/> event.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            this.CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n\n        /// <summary>\n        /// Removes the named property as a property that should trigger the CanExecuteChanged event.\n        /// </summary>\n        /// <param name=\"propertyName\">\n        /// The name of the property.\n        /// </param>\n        public void RemoveCanExecuteProperty(string propertyName)\n        {\n            // Validate\n            if (string.IsNullOrEmpty(propertyName)) throw new ArgumentException(\"propertyName\");\n\n            // Remove if active\n            if ((canExecuteProperties != null) && (canExecuteProperties.Contains(propertyName)))\n            {\n                // Remove\n                canExecuteProperties.Remove(propertyName);\n\n                // If all properties have been removed, unsubscribe\n                if ((canExecuteProperties.Count == 0) && (changeSubscribed))\n                {\n                    // Get as INotifyPropertyChanged\n                    var iNotifySource = commandSource as INotifyPropertyChanged;\n\n                    // Unsubscribe\n                    iNotifySource.PropertyChanged -= CommandSource_PropertyChanged;\n\n                    // Mark as unsubscribed\n                    changeSubscribed = false;\n                }\n            }\n        }\n        #endregion // Public Methods\n\n\n        #region Public Properties\n        private MethodInfo canExecuteMethod;\n        /// <summary>\n        /// Gets or sets the function that evaluates whether or not the command can be executed.\n        /// </summary>\n        /// <value>\n        /// The function that evaluates whether or not the command can be executed.\n        /// </value>\n        public MethodInfo CanExecuteMethod\n        {\n            get\n            {\n                return canExecuteMethod;\n            }\n            set\n            {\n                // Make sure changing\n                if (canExecuteMethod != value)\n                {\n                    // Validate\n                    if (value != null)\n                    {\n                        ValidateCanExecuteMethod(value);\n                    }\n\n                    // Store\n                    canExecuteMethod = value;\n\n                    // Notify\n                    RaiseCanExecuteChanged();\n                }\n            }\n        }\n\n        private MethodInfo executeMethod;\n        /// <summary>\n        /// Gets or sets the function that handles the execution of the command.\n        /// </summary>\n        /// <value>\n        /// The function that handles the execution of the command.\n        /// </value>\n        public MethodInfo ExecuteMethod\n        {\n            get\n            {\n                return executeMethod;\n            }\n            set\n            {\n                // Ensure changing\n                if (executeMethod != value)\n                {\n                    // Validate\n                    if (value != null)\n                    {\n                        ValidateExecuteMetod(value);\n                    }\n\n                    // Store\n                    executeMethod = value;\n\n                    // Notify\n                    RaiseCanExecuteChanged();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets the name of the command.\n        /// </summary>\n        public string Name { get; private set; }\n        #endregion // Public Properties\n\n        #region Public Events\n        /// <summary>\n        /// Occurs when the value returned from <see cref=\"CanExecute\"/> method may have changed and needs to be reevaluated.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n        #endregion // Public Events\n        #endregion // Instance Version\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Mvvm/ViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Template10.Services;\nusing Template10.Services.NavigationService;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml.Navigation;\n\n#if MVVMLIGHT\nusing VMBase = GalaSoft.MvvmLight.ViewModelBase;\n#else\nusing VMBase = Template10.Mvvm.ViewModelBase;\n#endif\n\nnamespace Template10.Mvvm\n{\n    /// <summary>\n    /// A base class for ViewModels\n    /// </summary>\n    public abstract class ViewModel : VMBase, INavigationAware\n    {\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"ViewModel\"/> instance.\n        /// </summary>\n        public ViewModel()\n        {\n            // Call initialize using Fire and Forget\n            var t = InitializeAsync();\n        }\n        #endregion // Constructors\n\n        #region Internal Methods\n        /// <summary>\n        /// Creates the commands for the <see cref=\"ViewModel\"/> and stores them in the <see cref=\"Commands\"/> collection.\n        /// </summary>\n        /// <remarks>\n        /// The default implementation of this method uses the <see cref=\"CommandHelper\"/> class and command related attributes.\n        /// </remarks>\n        protected virtual void CreateCommands()\n        {\n            // Default implementation uses the CommandHelper and the command attributes\n            Commands = CommandHelper.CreateCommands(this);\n        }\n\n        /// <summary>\n        /// Executes a task and handles any errors that occur.\n        /// </summary>\n        /// <param name=\"taskFunction\">\n        /// A function that yields the <see cref=\"Task\"/> to execute.\n        /// </param>\n        /// <param name=\"options\">\n        /// A <see cref=\"TaskRunOptions\"/> instance that specifies options for running the task or <see langword=\"null\"/> \n        /// to use <see cref=\"TaskRunOptions.Default\"/>.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the wrapped execution of the inner task.\n        /// </returns>\n        protected async Task RunWithErrorHandling(Func<Task> taskFunction, TaskRunOptions options = null)\n        {\n            // Busy?\n            if (options.IsBusy)\n            {\n                isBusy = true;\n            }\n\n            // Use task helper\n            await TaskHelper.RunWithErrorHandling(taskFunction, options);\n\n            // No longer busy?\n            if (options.IsBusy)\n            {\n                isBusy = false;\n            }\n        }\n\n        /// <summary>\n        /// Executes a task and handles any errors that occur.\n        /// </summary>\n        /// <param name=\"action\">\n        /// The <see cref=\"Action\"/> to execute.\n        /// </param>\n        /// <param name=\"options\">\n        /// A <see cref=\"TaskRunOptions\"/> instance that specifies options for running the task or <see langword=\"null\"/> \n        /// to use <see cref=\"TaskRunOptions.Default\"/>.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the wrapped execution of the inner action.\n        /// </returns>\n        protected async Task RunWithErrorHandling(Action action, TaskRunOptions options = null)\n        {\n            // Busy?\n            if (options.IsBusy)\n            {\n                isBusy = true;\n            }\n\n            // Use task helper\n            await TaskHelper.RunWithErrorHandling(action, options);\n\n            // No longer busy?\n            if (options.IsBusy)\n            {\n                isBusy = false;\n            }\n        }\n\n        /// <summary>\n        /// Allows inherited classes to change the initialization strategy for the ViewMode.\n        /// </summary>\n        /// <remarks>\n        /// <see cref=\"InitializeAsync\"/> is called from the <see cref=\"ViewModel\"/> base class constructor. The default \n        /// initialization strategy is to call <see cref=\"LoadDesignData\"/> if <see cref=\"IsInDesignMode\"/> is <c>true</c> \n        /// or call <see cref=\"ObtainServices\"/>, <see cref=\"CreateCommands\"/> and <see cref=\"LoadDefaultDataAsync\"/> if \n        /// <see cref=\"IsInDesignMode\"/> is <c>false</c>.\n        /// </remarks>\n        protected virtual async Task InitializeAsync()\n        {\n            // Design mode or regular?\n            if (IsInDesignMode)\n            {\n                LoadDesignData();\n            }\n            else\n            {\n                ObtainServices();\n                CreateCommands();\n                await LoadDefaultDataAsync();\n            }\n        }\n\n        /// <summary>\n        /// Loads optional default data for the ViewModel.\n        /// </summary>\n        /// <remarks>\n        /// This method is called as part of the default <see cref=\"InitializeAsync\"/> strategy when \n        /// <see cref=\"IsInDesignMode\"/> is <c>false</c>.\n        /// </remarks>\n        protected virtual Task LoadDefaultDataAsync()\n        {\n            return TaskHelper.CompletedTask;\n        }\n\n        /// <summary>\n        /// Loads optional design-time data for the ViewModel.\n        /// </summary>\n        /// <remarks>\n        /// This method is called as part of the default <see cref=\"InitializeAsync\"/> strategy when \n        /// <see cref=\"IsInDesignMode\"/> is <c>true</c>.\n        /// </remarks>\n        protected virtual void LoadDesignData()\n        {\n\n        }\n\n        /// <summary>\n        /// Obtains any services needed by the ViewMode.\n        /// </summary>\n        /// <remarks>\n        /// This method is called as part of the default <see cref=\"InitializeAsync\"/> strategy when \n        /// <see cref=\"IsInDesignMode\"/> is <c>false</c>.\n        /// </remarks>\n        protected virtual void ObtainServices()\n        {\n\n        }\n        #endregion // Internal Methods\n\n        #region Overridables / Event Triggers\n        /// <summary>\n        /// Allows inherited classes to handle when navigation is starting.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The sender of the event (usually the frame).\n        /// </param>\n        /// <param name=\"e\">\n        /// A <see cref=\"NavigatingCancelEventArgs\"/> that contains the event data.\n        /// </param>\n        public override void OnNavigating(object sender, NavigatingCancelEventArgs e)\n        {\n        }\n\n        /// <summary>\n        /// Allows inherited classes to handle when navigation has completed.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The sender of the event (usually the frame).\n        /// </param>\n        /// <param name=\"e\">\n        /// A <see cref=\"NavigationEventArgs\"/> that contains the event data.\n        /// </param>\n        public override void OnNavigated(object sender, NavigationEventArgsEx e)\n        {\n        }\n        #endregion // Overridables / Event Triggers\n\n\n        #region Public Properties\n        private CommandCollection commands = new CommandCollection();\n        /// <summary>\n        /// Gets or sets the collection of commands for the <see cref=\"ViewModel\"/>.\n        /// </summary>\n        /// <value>\n        /// The collection of commands for the <see cref=\"ViewModel\"/>.\n        /// </value>\n        public CommandCollection Commands\n        {\n            get\n            {\n                return commands;\n            }\n            set\n            {\n                Set(ref commands, value);\n            }\n        }\n\n        bool isBusy = false;\n        /// <summary>\n        /// Gets or sets a value that indiciates if the <see cref=\"ViewMode\"/> is busy performing work.\n        /// </summary>\n        public bool IsBusy\n        {\n            get\n            {\n                return isBusy;\n            }\n            protected set\n            {\n                Set(ref isBusy, value);\n            }\n        }\n\n        #if !MVVMLIGHT\n        /// <summary>\n        /// Gets a value that indicates if the <see cref=\"ViewModel\"/> is currently being used at design time.\n        /// </summary>\n        /// <remarks>\n        /// The default implementation simply returns Windows.ApplicationModel.DesignMode.DesignModeEnabled.\n        /// </remarks>\n        public virtual bool IsInDesignMode\n        {\n            get\n            {\n                return Windows.ApplicationModel.DesignMode.DesignModeEnabled;\n            }\n        }\n        #endif\n        #endregion // Public Properties\n    }\n}"
  },
  {
    "path": "Cortana/CortanaTodo/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Template10.Services;\nusing Template10.Services.Lifecycle;\nusing Template10.Services.NavigationService;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, INavigationAware, ILifecycleAware\n    {\n        public virtual Task HandleResumeAsync(object e)\n        {\n            // Nothing by default\n            return TaskHelper.CompletedTask;\n        }\n\n        public virtual Task HandleSuspendAsync(SuspendingEventArgs e)\n        {\n            // Nothing by default\n            return TaskHelper.CompletedTask;\n        }\n\n        public virtual void OnNavigating(object sender, NavigatingCancelEventArgs e) { /* nothing by default */ }\n\n        public virtual void OnNavigated(object sender, NavigationEventArgsEx e) { /* nothing by default */ }\n\n    }\n}"
  },
  {
    "path": "Cortana/CortanaTodo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3c03f095-6973-4437-805e-8c22aeaf1bab\"\n    Publisher=\"CN=jbienz\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3c03f095-6973-4437-805e-8c22aeaf1bab\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Cortana TODO</DisplayName>\n    <PublisherDisplayName>jbienz</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetPlatform Name=\"Windows.Universal\" MinVersion=\"10.0.10030.0\" MaxVersionTested=\"10.0.10030.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"CortanaTodo.App\">\n      <uap:VisualElements\n        DisplayName=\"Cortana TODO\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Cortana TODO\"\n        ForegroundText=\"light\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.appService\" EntryPoint=\"CortanaTodo.Background.VoiceCommandService\">\n          <uap:AppService Name=\"CortanaTodoVoiceService\"/>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "Cortana/CortanaTodo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Cortana TODO\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Cortana TODO\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Cortana/CortanaTodo/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "Cortana/CortanaTodo/Services/Lifecycle/ILifecycleAware.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\n\nnamespace Template10.Services.Lifecycle\n{\n    public interface ILifecycleAware\n    {\n        /// <summary>\n        /// Allows a class to handle application resume.\n        /// </summary>\n        /// <param name=\"e\">\n        /// An object that contains the event data.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        Task HandleResumeAsync(object e);\n\n        /// <summary>\n        /// Allows a class to handle application suspension.\n        /// </summary>\n        /// <param name=\"e\">\n        /// A <see cref=\"SuspendingEventArgs\"/> that contains the event data.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        Task HandleSuspendAsync(SuspendingEventArgs e);\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Services/NavigationService/INavigationAware.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public interface INavigationAware\n    {\n        void OnNavigating(object sender, NavigatingCancelEventArgs e);\n        void OnNavigated(object sender, NavigationEventArgsEx e);\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Services/NavigationService/NavigationEventArgsEx.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgsEx : EventArgs\n    {\n        public NavigationEventArgsEx()\n        {\n\n        }\n\n        public NavigationEventArgsEx(NavigationEventArgs e)\n        {\n            this.NavigationMode = e.NavigationMode;\n            this.Parameter = e.Parameter as string;\n        }\n\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                handler(this, e);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler<NavigatingCancelEventArgs>> _navigatingEventHandlers = new List<EventHandler<NavigatingCancelEventArgs>>();\n        public event EventHandler<NavigatingCancelEventArgs> Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, e);\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Template10.Services.Lifecycle;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService : ILifecycleAware\n    {\n        #region Constants\n        private const string EmptyNavigation = \"1,0\";\n        #endregion // Constants\n\n        #region Member Variables\n        private readonly NavigationFacade frame;\n        #endregion // Member Variables\n\n\n        #region Constructors\n        /// <summary>\n        /// Initialzies a new <see cref=\"NavigationService\"/> instance for the specified frame.\n        /// </summary>\n        /// <param name=\"frame\">\n        /// The <see cref=\"Frame\"/> that the navigation service will wrap.\n        /// </param>\n        public NavigationService(Frame frame)\n        {\n            this.frame = new NavigationFacade(frame);\n            this.frame.Navigating += OnNavigating;\n            this.frame.Navigated += (s, e) => OnNavigated(this, new NavigationEventArgsEx(e));\n        }\n        #endregion // Constructors\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        private void OnNavigating(object sender, NavigatingCancelEventArgs e)\n        {\n            var page = frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigationAware;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigating(sender, e);\n                }\n            }\n        }\n\n        private void OnNavigated(object sender, NavigationEventArgsEx e)\n        {\n            var mode = e.NavigationMode;\n            LastNavigationParameter = e.Parameter as string;\n            LastNavigationType = frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigationAware;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigated(sender, e);\n                }\n            }\n        }\n\n        #region ILifecycleAware Interface\n        Task ILifecycleAware.HandleResumeAsync(object e)\n        {\n            var page = frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var lifcecycle = page.DataContext as ILifecycleAware;\n                if (lifcecycle != null)\n                {\n                    return lifcecycle.HandleResumeAsync(e);\n                }\n            }\n\n            return TaskHelper.CompletedTask;\n        }\n\n\n        Task ILifecycleAware.HandleSuspendAsync(SuspendingEventArgs e)\n        {\n            var page = frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var lifcecycle = page.DataContext as ILifecycleAware;\n                if (lifcecycle != null)\n                {\n                    return lifcecycle.HandleSuspendAsync(e);\n                }\n            }\n\n            return TaskHelper.CompletedTask;\n        }\n        #endregion // ILifecycleAware Interface\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (frame.CanGoBack) frame.GoBack(); }\n\n        public bool CanGoBack { get { return frame.CanGoBack; } }\n\n        public void GoForward() { frame.GoForward(); }\n\n        public bool CanGoForward { get { return frame.CanGoForward; } }\n\n        public void ClearHistory() { frame.SetNavigationState(EmptyNavigation); }\n\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigationAware;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigated(this, new NavigationEventArgsEx());\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "Cortana/CortanaTodo/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Styles\">\n    \n</ResourceDictionary>\n"
  },
  {
    "path": "Cortana/CortanaTodo/ViewModels/MainPageViewModel.cs",
    "content": "﻿using CortanaTodo.Models;\nusing CortanaTodo.Services;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Template10.Mvvm;\nusing Template10.Services;\nusing Windows.UI.Xaml.Navigation;\nusing Windows.ApplicationModel;\nusing Template10.Services.NavigationService;\n\nnamespace CortanaTodo.ViewModels\n{\n    /// <summary>\n    /// The ViewModel for the main page of the application which allows the management of lists and items.\n    /// </summary>\n    public class MainPageViewModel : ViewModel\n    {\n        #region Constants\n        static public class CommandNames\n        {\n            public const string AddItem = \"AddItem\";\n            public const string AddList = \"AddList\";\n            public const string DeleteItem = \"DeleteItem\";\n            public const string DeleteList = \"DeleteList\";\n            public const string SaveList = \"SaveList\";\n        }\n        #endregion // Constants\n\n        #region Member Variables\n        private TodoService todoService;\n        #endregion // Member Variables\n\n        #region Internal Methods\n        /// <summary>\n        /// Used to test if item-related commands are enabled.\n        /// </summary>\n        /// <returns>\n        /// <c>true</c> if item-related commands are enabled; otherwise false.\n        /// </returns>\n        [CommandCanExecute(CommandNames.DeleteItem)]\n        private bool ItemCommandsEnabled()\n        {\n            return currentItem != null;\n        }\n\n        /// <summary>\n        /// Used to test if list-related commands are enabled.\n        /// </summary>\n        /// <returns>\n        /// <c>true</c> if list-related commands are enabled; otherwise false.\n        /// </returns>\n        [CommandCanExecute(CommandNames.AddItem)]\n        [CommandCanExecute(CommandNames.SaveList)]\n        [CommandCanExecute(CommandNames.DeleteList)]\n        private bool ListCommandsEnabled()\n        {\n            return currentList != null;\n        }\n        #endregion // Internal Methods\n\n        #region Overrides / Event Handlers\n        public override async Task HandleSuspendAsync(SuspendingEventArgs e)\n        {\n            await todoService.SaveAllAsync();\n            await base.HandleSuspendAsync(e);\n        }\n\n        protected override Task LoadDefaultDataAsync()\n        {\n            // Load data with exception handling\n            return RunWithErrorHandling(async ()=>\n                {\n                    Lists = await todoService.LoadListsAsync();\n                    if (Lists.Count > 0)\n                    {\n                        CurrentList = Lists[0];\n                        if (CurrentList.Items.Count > 0)\n                        {\n                            CurrentItem = CurrentList.Items[0];\n                        }\n                    }\n                }\n            , TaskRunOptions.WithFailure(\"Could not load lists.\"));\n        }\n\n        protected override void LoadDesignData()\n        {\n            base.LoadDesignData();\n            Lists = new ObservableCollection<TodoList>()\n            {\n                new TodoList()\n                {\n                    Title = \"Groceries\",\n                    Items = new ObservableCollection<TodoItem>()\n                    {\n                        new TodoItem() { Title = \"Item A\" },\n                        new TodoItem() { Title = \"Item B\" },\n                        new TodoItem() { Title = \"Item C\" },\n                        new TodoItem() { Title = \"Item D\" },\n                    }\n                },\n\n                new TodoList()\n                {\n                    Title = \"Home Improvement\",\n                    Items = new ObservableCollection<TodoItem>()\n                    {\n                        new TodoItem() { Title = \"Item A\" },\n                        new TodoItem() { Title = \"Item B\" },\n                        new TodoItem() { Title = \"Item C\" },\n                        new TodoItem() { Title = \"Item D\" },\n                    }\n                },\n            };\n        }\n\n        protected override void ObtainServices()\n        {\n            base.ObtainServices();\n            todoService = TodoService.GetDefault();\n        }\n\n        public override void OnNavigated(object sender, NavigationEventArgsEx e)\n        {\n            // Pass to base first\n            base.OnNavigated(sender, e);\n\n            // The parameter could be a list name if activated by speech\n            if (!string.IsNullOrEmpty(e.Parameter))\n            {\n                string listName = e.Parameter;\n\n                // Try to find the list\n                var list = lists.Where((l) => l.Title.Equals(listName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();\n\n                // If found, focus it\n                if (list != null)\n                {\n                    CurrentList = list;\n                }\n            }\n        }\n        #endregion // Overrides / Event Handlers\n\n\n        #region Public Methods\n        /// <summary>\n        /// Adds a new item to the list.\n        /// </summary>\n        [Command(CommandNames.AddItem)]\n        public void AddItem()\n        {\n            if (currentList != null)\n            {\n                var item = new TodoItem()\n                {\n                    Title = \"New Item\"\n                };\n\n                currentList.Items.Insert(0, item);\n                CurrentItem = item;\n            }\n        }\n\n        /// <summary>\n        /// Adds a new list.\n        /// </summary>\n        [Command(CommandNames.AddList)]\n        public void AddList()\n        {\n            var list = new TodoList()\n            {\n                Title = \"New List\"\n            };\n            var item = new TodoItem()\n            {\n                Title = \"New Item\"\n            };\n            list.Items.Add(item);\n            lists.Add(list);\n            CurrentList = list;\n            CurrentItem = item;\n        }\n        /// <summary>\n        /// Deletes the current Item.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        [Command(CommandNames.DeleteItem)]\n        public Task DeleteItemAsync()\n        {\n            // Delete Item with exception handling\n            return RunWithErrorHandling(async () =>\n            {\n                // Validate\n                if (currentList == null) throw new ArgumentNullException(\"currentList\");\n                if (currentItem == null) throw new ArgumentNullException(\"currentItem\");\n\n                // Get index of current Item\n                var index = currentList.Items.IndexOf(currentItem);\n\n                // Find out previous but bound to 0\n                index = Math.Max(index - 1, 0);\n\n                // Remove from the list\n                currentList.Items.Remove(currentItem);\n\n                // Save the list\n                await todoService.SaveAsync(currentList);\n\n                // Set current Item to the next closest one\n                if (currentList.Items.Count > index) { CurrentItem = currentList.Items[index]; }\n            }\n            , TaskRunOptions.WithFailure(string.Format(\"Could not delete {0}\", currentItem.Title)));\n        }\n\n        /// <summary>\n        /// Deletes the current list.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        [Command(CommandNames.DeleteList)]\n        public Task DeleteListAsync()\n        {\n            // Delete list with exception handling\n            return RunWithErrorHandling(async ()=>\n                {\n                    // Validate\n                    if (currentList == null) throw new ArgumentNullException(\"currentList\");\n\n                    // Get index of current list\n                    var index = lists.IndexOf(currentList);\n\n                    // Find out previous but bound to 0\n                    index = Math.Max(index - 1, 0);\n\n                    // Attempt to delete current list\n                    await todoService.DeleteAsync(currentList);\n\n                    // Delete successful so remove from lists collection\n                    lists.Remove(currentList);\n\n                    // Set current list to the next closest one\n                    if (lists.Count > index) { CurrentList = lists[index]; }\n                }\n                , TaskRunOptions.WithFailure(string.Format(\"Could not delete {0} list\", currentList.Title)));\n        }\n\n        /// <summary>\n        /// Saves the current list.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        [Command(CommandNames.SaveList)]\n        public Task SaveListAsync(TodoList list = null)\n        {\n            // If null, use current\n            if (list == null)\n            {\n                list = currentList;\n            }\n\n            // Save list with exception handling\n            if (list != null)\n            {\n                return RunWithErrorHandling(() => todoService.SaveAsync(list), TaskRunOptions.WithFailure(string.Format(\"Could not save {0} list\", list.Title)));\n            }\n            else\n            {\n                return TaskHelper.CompletedTask;\n            }\n        }\n        #endregion // Public Methods\n\n\n        #region Public Properties\n        private TodoItem currentItem;\n        /// <summary>\n        /// Gets or sets the Item that currently has focus.\n        /// </summary>\n        /// <value>\n        /// The Item that currently has focus.\n        /// </value>\n        [CommandCanExecuteChanged(CommandNames.DeleteItem)]\n        public TodoItem CurrentItem\n        {\n            get { return currentItem; }\n            set { Set(ref currentItem, value); }\n        }\n\n        private TodoList currentList;\n        /// <summary>\n        /// Gets or sets the list that currently has focus.\n        /// </summary>\n        /// <value>\n        /// The list that currently has focus.\n        /// </value>\n        [CommandCanExecuteChanged(CommandNames.AddItem)]\n        [CommandCanExecuteChanged(CommandNames.DeleteList)]\n        [CommandCanExecuteChanged(CommandNames.SaveList)]\n        public TodoList CurrentList\n        {\n            get { return currentList; }\n            set\n            {\n                var previousList = currentList;\n                if (Set(ref currentList, value))\n                {\n                    // Was there a previously selected list? If so save it.\n                    if (previousList != null)\n                    {\n                        var t = SaveListAsync(previousList);\n                    }\n                }\n            }\n        }\n\n        private ObservableCollection<TodoList> lists;\n        /// <summary>\n        /// Gets or sets all lists being managed by the view model.\n        /// </summary>\n        /// <value>\n        /// All lists being managed by the view model.\n        /// </value>\n        public ObservableCollection<TodoList> Lists\n        {\n            get { return lists; }\n            set { Set(ref lists, value); }\n        }\n        #endregion // Public Properties\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"CortanaTodo.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:CortanaTodo.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:CortanaTodo.ViewModels\"\n    xmlns:models=\"using:CortanaTodo.Models\"\n    mc:Ignorable=\"d\"\n    d:DataContext=\"{d:DesignInstance Type=vm:MainPageViewModel}\">\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n        <SplitView x:Name=\"MainSplitView\" DisplayMode=\"Inline\" IsPaneOpen=\"{Binding IsChecked, ElementName=MenuToggle, Mode=TwoWay}\" OpenPaneLength=\"380\" >\n            <SplitView.Pane>\n                <Grid Margin=\"20\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"*\" />\n                        <RowDefinition Height=\"Auto\" />\n                    </Grid.RowDefinitions>\n                    <ListView ItemsSource=\"{Binding Lists}\" SelectedItem=\"{Binding CurrentList, Mode=TwoWay}\">\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid>\n                                    <TextBlock FontSize=\"22\" Text=\"{Binding Title}\" />\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                    <CommandBar Grid.Row=\"1\">\n                        <CommandBar.PrimaryCommands>\n                            <AppBarButton x:Name=\"AddListButton\" Icon=\"Add\" Label=\"Add\" Command=\"{Binding Commands[AddList]}\" />\n                            <AppBarButton x:Name=\"DeleteListButton\" Icon=\"Remove\" Label=\"Remove\" Command=\"{Binding Commands[DeleteList]}\" />\n                        </CommandBar.PrimaryCommands>\n                    </CommandBar>\n                </Grid>\n            </SplitView.Pane>\n            <SplitView.Content>\n                <Grid Margin=\"20\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"Auto\" />\n                        <RowDefinition Height=\"*\" />\n                        <RowDefinition Height=\"Auto\" />\n                    </Grid.RowDefinitions>\n                    <TextBox Text=\"{Binding CurrentList.Title, Mode=TwoWay}\" FontSize=\"28\" Margin=\"0,15,0,15\" />\n                    <ListView Grid.Row=\"1\" ItemsSource=\"{Binding CurrentList.Items}\" SelectedItem=\"{Binding CurrentItem, Mode=TwoWay}\" HorizontalContentAlignment=\"Stretch\">\n                        <ListView.ItemContainerStyle>\n                            <Style TargetType=\"ListViewItem\">\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            </Style>\n                        </ListView.ItemContainerStyle>\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid>\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"30\" />\n                                        <ColumnDefinition Width=\"*\" />\n                                    </Grid.ColumnDefinitions>\n                                    <CheckBox Grid.Column=\"0\" IsChecked=\"{Binding IsComplete, Mode=TwoWay}\" />\n                                    <TextBox Margin=\"20,0,0,0\" Background=\"Transparent\" BorderBrush=\"Transparent\" Grid.Column=\"1\" HorizontalAlignment=\"Stretch\" FontSize=\"22\" Text=\"{Binding Title, Mode=TwoWay}\" />\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                    <CommandBar Grid.Row=\"2\" >\n                        <CommandBar.PrimaryCommands>\n                            <AppBarButton x:Name=\"AddItemButton\" Icon=\"Add\" Label=\"Add\" Command=\"{Binding Commands[AddItem]}\" />\n                            <AppBarButton x:Name=\"DeleteItemButton\" Icon=\"Remove\" Label=\"Remove\" Command=\"{Binding Commands[DeleteItem]}\" />\n                        </CommandBar.PrimaryCommands>\n                    </CommandBar>\n                </Grid>\n            </SplitView.Content>\n        </SplitView>\n        <ToggleButton x:Name=\"MenuToggle\" VerticalAlignment=\"Top\" IsChecked=\"True\" Visibility=\"Collapsed\">\n            <FontIcon Glyph=\"&#xE700;\" />\n        </ToggleButton>\n        <!--<Hub>\n            <Hub.Header>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock Text=\"Contoso\" />\n                    <Grid>\n                        <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                        <AppBarButton Icon=\"Add\" Command=\"{Binding Commands[Add]}\" Foreground=\"Black\" />\n                    </Grid>\n                </StackPanel>\n            </Hub.Header>\n            <HubSection VerticalContentAlignment=\"Stretch\" x:Name=\"MainHubSection\">\n                <DataTemplate>\n                    <ItemsControl ItemsSource=\"{Binding Lists}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Horizontal\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Width=\"456\" Margin=\"0,0,12,12\">\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"*\" />\n                                    </Grid.RowDefinitions>\n                                    <CommandBar RequestedTheme=\"Dark\" Grid.Row=\"0\" VerticalAlignment=\"Bottom\" ClosedDisplayMode=\"Minimal\">\n                                        <CommandBar.SecondaryCommands>\n                                            <AppBarButton Label=\"Delete list\" Command=\"{Binding DataContext.RemoveListCommand, ElementName=MainHubSection}\" CommandParameter=\"{Binding}\" />\n                                            <AppBarButton Label=\"Delete selected task\" Command=\"{Binding RemoveCommand}\" />\n                                        </CommandBar.SecondaryCommands>\n                                    </CommandBar>\n                                    <Rectangle Grid.Row=\"1\" Fill=\"Black\" Opacity=\".1\" />\n                                    <TextBlock RequestedTheme=\"Light\" Margin=\"24,12\" FontSize=\"34\" FontWeight=\"Light\" Grid.Row=\"1\" Text=\"{Binding TodoList.Title}\" />\n                                    <ScrollViewer Grid.Row=\"2\" VerticalAlignment=\"Stretch\">\n                                        <ListView Padding=\"0,0,0,12\" Margin=\"0\" Grid.Row=\"2\"\n                                                  IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                                  ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                                  SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                                  CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                                            <ListView.Background>\n                                                <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                                            </ListView.Background>\n                                            <ListView.ItemContainerTransitions>\n                                                <TransitionCollection>\n                                                    <AddDeleteThemeTransition />\n                                                </TransitionCollection>\n                                            </ListView.ItemContainerTransitions>\n                                            <ListView.ItemContainerStyle>\n                                                <Style TargetType=\"ListViewItem\">\n                                                    <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                                    <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                                                </Style>\n                                            </ListView.ItemContainerStyle>\n                                            <ListView.Header>\n                                                <TextBox PlaceholderText=\"Add a new task\" Margin=\"24,0,24,12\" />\n                                            </ListView.Header>\n                                            <ListView.ItemTemplate>\n                                                <DataTemplate>\n                                                    <Grid Height=\"48\">\n                                                        <Grid.ColumnDefinitions>\n                                                            <ColumnDefinition Width=\"48\" />\n                                                            <ColumnDefinition Width=\"*\" />\n                                                            <ColumnDefinition Width=\"48\" />\n                                                        </Grid.ColumnDefinitions>\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                                        <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                                        <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                                        <CheckBox Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                                    </Grid>\n                                                </DataTemplate>\n                                            </ListView.ItemTemplate>\n                                        </ListView>\n                                    </ScrollViewer>\n                                </Grid>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n                </DataTemplate>\n            </HubSection>\n        </Hub>-->\n\n        <!--<ContentDialog x:Name=\"TodoEditorDialog\" Title=\"Edit Task\" PrimaryButtonText=\"Close\" d:IsHidden=\"True\">\n            <ContentDialog.Content>\n                <StackPanel>\n                    <TextBox Header=\"Item Title\" Width=\"320\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <DatePicker Header=\"Due Date\" Width=\"320\" Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <CheckBox Content=\"Is Complete\" Width=\"320\" IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>-->\n        \n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding IsBusy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"White\">\n                <StackPanel Orientation=\"Horizontal\" Margin=\"100\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" />\n                    <TextBlock Foreground=\"DimGray\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "Cortana/CortanaTodo/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Controls;\n\nnamespace CortanaTodo.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            //this.TodoEditorDialog.DataContext = e.ClickedItem;\n            //await this.TodoEditorDialog.ShowAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo/VoiceCommands.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VoiceCommands xmlns=\"http://schemas.microsoft.com/voicecommands/1.2\">\n  <CommandSet xml:lang=\"en-us\" Name=\"CortanaTodoCommandSet_en-us\">\n    <AppName>Cortana Todo</AppName>\n    <Example> Show my Groceries list </Example>\n\n    <Command Name=\"showList\">\n      <Example> Show my Groceries list </Example>\n      <ListenFor RequireAppName=\"BeforeOrAfterPhrase\"> show [my] {listName} list </ListenFor>\n      <ListenFor RequireAppName=\"ExplicitlySpecified\"> show [my] {builtin:AppName} {listName} list </ListenFor>\n      <Feedback> Showing your {listName} list </Feedback>\n      <Navigate />\n    </Command>\n\n    <Command Name=\"addToList\">\n      <Example> Add Milk to my Groceries list </Example>\n      <ListenFor RequireAppName=\"BeforeOrAfterPhrase\"> add {itemName} to [my] {listName} list </ListenFor>\n      <ListenFor RequireAppName=\"ExplicitlySpecified\"> add {itemName} to [my] {builtin:AppName} {listName} list </ListenFor>\n      <Feedback> Adding </Feedback>\n      <VoiceCommandService Target=\"CortanaTodoVoiceService\"/>\n    </Command>\n\n    <Command Name=\"addNewList\">\n      <Example> Create a new list called Vacation Planning </Example>\n      <ListenFor RequireAppName=\"BeforeOrAfterPhrase\"> create [a] new list [called] {listNameNL} </ListenFor>\n      <ListenFor RequireAppName=\"ExplicitlySpecified\"> create [a] new {builtin:AppName} list [called] {listNameNL} </ListenFor>\n      <Feedback> Creating </Feedback>\n      <VoiceCommandService Target=\"CortanaTodoVoiceService\"/>\n    </Command>\n\n    <Command Name=\"markItemComplete\">\n      <Example> Mark Eggs complete in my Groceries list </Example>\n      <ListenFor RequireAppName=\"BeforeOrAfterPhrase\"> mark {itemName} complete in [my] {listName} list </ListenFor>\n      <ListenFor RequireAppName=\"ExplicitlySpecified\"> mark {itemName} complete in [my] {builtin:AppName} {listName} list </ListenFor>\n      <Feedback> Completing </Feedback>\n      <VoiceCommandService Target=\"CortanaTodoVoiceService\"/>\n    </Command>\n\n    <Command Name=\"text\">\n      <Example> text Avery I'm running late </Example>\n      <ListenFor> text {contact} {msgText} </ListenFor>\n      <Feedback> Texting {contact} {msgText} </Feedback>\n      <VoiceCommandService Target=\"CortanaTodoVoiceService\"/>\n    </Command>\n\n    <PhraseList Label=\"contact\">\n      <Item> Avery </Item>\n      <Item> Monica </Item>\n      <Item> Rob </Item>\n    </PhraseList>\n\n    <PhraseList Label=\"listName\">\n      <Item> New List </Item>\n    </PhraseList>\n\n    <PhraseTopic Label=\"msgText\" Scenario=\"Natural Language\"/>\n\n    <PhraseTopic Label=\"listNameNL\" Scenario=\"Natural Language\"/>\n\n    <PhraseTopic Label=\"itemName\" Scenario=\"Natural Language\"/>\n\n  </CommandSet>\n\n</VoiceCommands>\n"
  },
  {
    "path": "Cortana/CortanaTodo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"CommonServiceLocator\" version=\"1.3\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"MvvmLightLibs\" version=\"5.1.1\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "Cortana/CortanaTodo.Background/CortanaTodo.Background.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{987337EE-669C-4856-B425-68F1D0D3B9C6}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>CortanaTodo.Background</RootNamespace>\n    <AssemblyName>CortanaTodo.Background</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"VoiceCommandService.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\CortanaTodo.Shared\\CortanaTodo.Shared.csproj\">\n      <Project>{0c4d6450-599d-445d-a20b-38f200201e71}</Project>\n      <Name>CortanaTodo.Shared</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Images\\TodoIcon.png\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Cortana/CortanaTodo.Background/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"CortanaTodo.Background\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"CortanaTodo.Background\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Cortana/CortanaTodo.Background/VoiceCommandService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing CortanaTodo.Models;\nusing CortanaTodo.Services;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.AppService;\nusing Windows.ApplicationModel.Background;\nusing Windows.ApplicationModel.VoiceCommands;\nusing Windows.Storage;\n\nnamespace CortanaTodo.Background\n{\n    /// <summary>\n    /// The VoiceCommandService implements the entrypoint for all headless voice commands\n    /// invoked via Cortana. The individual commands supported are described in the\n    /// VoiceCommands.xml VCD file in the CortanaTodo project. The service\n    /// entrypoint is defined in the Package Manifest (See section uap:Extension in \n    /// CortanaTodo:Package.appxmanifest)\n    /// </summary>\n    public sealed class VoiceCommandService : IBackgroundTask\n    {\n        #region Constants\n        /// <summary>\n        /// The number of characters a list name can be off by and still be considered a close match.\n        /// </summary>\n        private const int CloseMatchOffset = 4;\n        #endregion // Constants\n\n        #region Member Variables\n        /// <summary>\n        /// the service connection is maintained for the lifetime of a cortana session, once a voice command\n        /// has been triggered via Cortana.\n        /// </summary>\n        private VoiceCommandServiceConnection voiceConnection;\n\n        /// <summary>\n        /// Lifetime of the background service is controlled via the BackgroundTaskDeferral object, including\n        /// registering for cancellation events, signalling end of execution, etc. Cortana may terminate the \n        /// background service task if it loses focus, or the background task takes too long to provide.\n        /// \n        /// Background tasks can run for a maximum of 30 seconds.\n        /// </summary>\n        private BackgroundTaskDeferral serviceDeferral;\n        #endregion // Member Variables\n\n        #region Internal Methods\n        /// <summary>\n        /// Demonstrates providing the user with a choice between multiple items.\n        /// </summary>\n        /// <param name=\"items\">The set of items to choose between</param>\n        /// <param name=\"titleFunc\">\n        /// A function that returns the title of the item.\n        /// </param>\n        /// <param name=\"descriptionFunc\">\n        /// A function that returns the description of the item.\n        /// </param>\n        /// <param name=\"message\">The initial disambiguation message</param>\n        /// <param name=\"secondMessage\">Repeat prompt retry message</param>\n        /// <returns></returns>\n        private async Task<T> Disambiguate<T>(IEnumerable<T> items, Func<T,string> titleFunc, Func<T, string> descriptionFunc, string message, string secondMessage)\n        {\n            // Create the first prompt message.\n            var userPrompt = new VoiceCommandUserMessage();\n            userPrompt.DisplayMessage =\n                userPrompt.SpokenMessage = message;\n\n            // Create a re-prompt message if the user responds with an out-of-grammar response.\n            var userReprompt = new VoiceCommandUserMessage();\n            userPrompt.DisplayMessage =\n                userPrompt.SpokenMessage = secondMessage;\n\n            // Create items for each item. Ideally, should be limited to a small number of items.\n            var destinationContentTiles = new List<VoiceCommandContentTile>();\n            foreach (T item in items)\n            {\n                var destinationTile = new VoiceCommandContentTile();\n\n                // Use a generic background image. This can be fetched from a service call, potentially, but\n                // be aware of network latencies and ensure Cortana does not time out.\n                destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;\n                destinationTile.Image = await Package.Current.InstalledLocation.GetFileAsync(\"CortanaTodo.Background\\\\Images\\\\TodoIcon.png\");\n\n                // The AppContext can be any arbitrary object, and will be maintained for the\n                // response.\n                destinationTile.AppContext = item;\n\n                // Format title and description\n                destinationTile.Title = titleFunc(item);\n                destinationTile.TextLine1 = descriptionFunc(item);\n\n                // Add\n                destinationContentTiles.Add(destinationTile);\n            }\n\n            // Cortana will handle re-prompting if the user does not provide a valid response.\n            var response = VoiceCommandResponse.CreateResponseForPrompt(userPrompt, userReprompt, destinationContentTiles);\n\n            // If cortana is dismissed in this operation, null will be returned.\n            var result = await voiceConnection.RequestDisambiguationAsync(response);\n            if (result != null)\n            {\n                return (T)result.SelectedItem.AppContext;\n            }\n\n            return default(T);\n        }\n\n        /// <summary>\n        /// Attempts to find an item with the specified name, disambiguating if necessary.\n        /// </summary>\n        /// <param name=\"list\">\n        /// The list containing the item to find.\n        /// </param>\n        /// <param name=\"itemName\">\n        /// The name of the item to find.\n        /// </param>\n        /// <param name=\"requireExact\">\n        /// <c>true</c> if an exact match is required; otherwise <c>false</c> to allow disambiguation.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that yields the list if found; otherwise <see langword = \"null\" />.\n        /// </returns>\n        private async Task<TodoItem> FindItemAsync(TodoList list, string itemName, bool requireExact)\n        {\n            // Try to find the item that matches exactly\n            var item = list.Items.Where(i => i.Title.Equals(itemName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();\n\n            // If no exact match was found and it's allowed, disambiguate\n            if ((item == null) && (!requireExact))\n            {\n                var closeMatches = list.Items.Where(i => Math.Abs(i.Title.CompareTo(itemName)) < CloseMatchOffset);\n                if (closeMatches.Count() > 1)\n                {\n                    // Attempt to disambiguate\n                    item = await Disambiguate(\n                        closeMatches, // Which items?\n                        (l) => l.Title, // Title\n                        (l) => \"\", // Description\n                        \"Which item?\", // Message 1\n                        \"I'm sorry, which item?\" // Message 2\n                        );\n                }\n                else\n                {\n                    // Only one or no lists are close matches\n                    item = closeMatches.FirstOrDefault();\n                }\n            }\n\n            // Return whatever we've found\n            return item;\n        }\n\n        /// <summary>\n        /// Attempts to find a list with the specified name, disambiguating if necessary.\n        /// </summary>\n        /// <param name=\"listName\">\n        /// The name of the list to find.\n        /// </param>\n        /// <param name=\"requireExact\">\n        /// <c>true</c> if an exact match is required; otherwise <c>false</c> to allow disambiguation.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that yields the list if found; otherwise <see langword = \"null\" />.\n        /// </returns>\n        private async Task<TodoList> FindListAsync(string listName, bool requireExact)\n        {\n            // Get the service\n            var service = TodoService.GetDefault();\n\n            // Load all lists\n            var lists = await service.LoadListsAsync();\n\n            // Try to find a list that matches exactly\n            var list = lists.Where(l => l.Title.Equals(listName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();\n\n            // If no exact match was found and it's allowed, disambiguate\n            if ((list == null) && (!requireExact))\n            {\n                var closeMatches = lists.Where(l => Math.Abs(l.Title.CompareTo(listName)) < CloseMatchOffset);\n                if (closeMatches.Count() > 1)\n                {\n                    // Attempt to disambiguate\n                    list = await Disambiguate(\n                        closeMatches, // Which items?\n                        (l) => l.Title, // Title\n                        (l) => string.Format(\"{0} item{1}\", l.Items.Count, l.Items.Count != 1 ? \"s\" : \"\"), // Description\n                        \"Which list did you mean?\", // Message 1\n                        \"I'm sorry, which list?\" // Message 2\n                        );\n                }\n                else\n                {\n                    // Only one or no lists are close matches\n                    list = closeMatches.FirstOrDefault();\n                }\n            }\n\n            // Return whatever we've found\n            return list;\n        }\n\n        /// <summary>\n        /// Handle a request to add an item to a list. This task demonstrates how to prompt a user\n        /// for confirmation of an operation and showing a completion screen.\n        /// </summary>\n        /// <param name=\"listName\">\n        /// The name of the list.\n        /// </param>\n        /// <param name=\"itemName\">\n        /// The name of the item.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        private async Task HandleAddToListAsync(string listName, string itemName)\n        {\n            // Load all lists. If this operation could take a long time (e.g. requiring \n            // a response from a remote web service) consider inserting a progress screen \n            // here to prevent Cortana from timing out. \n            await ReportProgressAsync(string.Format(\"Looking for the {0} list\", listName));\n\n            // Find the list\n            var list = await FindListAsync(listName, false);\n\n            // If the list couldn't be found, notify the user and bail\n            if (list == null)\n            {\n                await ReportCompleteAsync(\"I'm sorry, a list couldn't be found with that name.\");\n                return;\n            }\n\n            // Add the item to the list\n            list.Items.Add(new TodoItem()\n            {\n                Title = itemName\n            });\n\n            // Save the list\n            await TodoService.GetDefault().SaveAsync(list);\n\n            // Notify complete\n            await ReportCompleteAsync(string.Format(\"Okay, I've added {0} to your {1} list.\", itemName, list.Title));\n        }\n\n        /// <summary>\n        /// Handles a request to mark an item complete in a list. This task demonstrates how to prompt a user\n        /// for confirmation of an operation and showing a completion screen.\n        /// </summary>\n        /// <param name=\"listName\">\n        /// The name of the list.\n        /// </param>\n        /// <param name=\"itemName\">\n        /// The name of the item.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        private async Task HandleMarkItemCompleteAsync(string listName, string itemName)\n        {\n            await ReportProgressAsync(string.Format(\"Looking for {0} in the {1} list\", itemName, listName));\n\n            // Find the list\n            var list = await FindListAsync(listName, false);\n\n            // If the list couldn't be found, notify the user and bail\n            if (list == null)\n            {\n                await ReportCompleteAsync(\"I'm sorry, a list couldn't be found with that name.\");\n                return;\n            }\n\n            // Find the item\n            var item = await FindItemAsync(list, itemName, false);\n\n            // If the item couldn't be found, notify the user and bail\n            if (item == null)\n            {\n                await ReportCompleteAsync(\"I'm sorry, an item couldn't be found with that name.\");\n                return;\n            }\n\n            // Mark the item complete\n            item.IsComplete = true;\n\n            // Save the list\n            await TodoService.GetDefault().SaveAsync(list);\n\n            // Notify complete\n            await ReportCompleteAsync(string.Format(\"Okay, {0} completed.\", itemName));\n        }\n\n        /// <summary>\n        /// Handle a request to create a new list with the specified name.\n        /// </summary>\n        /// <param name=\"listName\">\n        /// The name of the list.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        private async Task HandleNewListAsync(string listName)\n        {\n            // Load all lists. If this operation could take a long time (e.g. requiring \n            // a response from a remote web service) consider inserting a progress screen \n            // here to prevent Cortana from timing out. \n            await ReportProgressAsync(string.Format(\"Creating the {0} list\", listName));\n\n            // Look for existing list\n            var list = await FindListAsync(listName, true);\n\n            // If the list already exists, notify the user and bail\n            if (list == null)\n            {\n                await ReportCompleteAsync(string.Format(\"I'm sorry, there's already a list called {0}.\", listName));\n                return;\n            }\n\n            // Create the new list\n            list = new TodoList()\n            {\n                Title = listName\n            };\n\n            // Save the list\n            await TodoService.GetDefault().SaveAsync(list);\n\n            // Notify complete\n            await ReportCompleteAsync(string.Format(\"Sure, a {0} list was created.\", listName));\n        }\n\n        /// <summary>\n        /// Reports progress. These should be posted at least every 5 seconds for a \n        /// long-running operation, such as accessing network resources over a mobile \n        /// carrier network.\n        /// </summary>\n        /// <param name=\"message\">The message to display, relating to the task being performed.</param>\n        /// <returns></returns>\n        private async Task ReportProgressAsync(string message)\n        {\n            var userProgressMessage = new VoiceCommandUserMessage();\n            userProgressMessage.DisplayMessage = userProgressMessage.SpokenMessage = message;\n\n            VoiceCommandResponse response = VoiceCommandResponse.CreateResponse(userProgressMessage);\n            await voiceConnection.ReportProgressAsync(response);\n        }\n\n        /// <summary>\n        /// Shows a completion message to the user.\n        /// </summary>\n        /// <param name=\"message\">\n        /// The message to display (and speak).\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        private async Task ReportCompleteAsync(string message)\n        {\n            var userMessage = new VoiceCommandUserMessage();\n            userMessage.DisplayMessage = userMessage.SpokenMessage = message;\n\n            var response = VoiceCommandResponse.CreateResponse(userMessage);\n            await voiceConnection.ReportSuccessAsync(response);\n        }\n\n        /// <summary>\n        /// Provide a simple response that launches the app. Expected to be used in the\n        /// case where the voice command could not be recognized (eg, a VCD/code mismatch.)\n        /// </summary>\n        private async Task RequestAppLaunchAsync()\n        {\n            var userMessage = new VoiceCommandUserMessage();\n            userMessage.SpokenMessage = \"Launching Cortana Todo\";\n\n            var response = VoiceCommandResponse.CreateResponse(userMessage);\n\n            response.AppLaunchArgument = \"\";\n\n            await voiceConnection.RequestAppLaunchAsync(response);\n        }\n        #endregion // Internal Methods\n\n        /// <summary>\n        /// Background task entrypoint. Voice Commands using the <VoiceCommandService Target=\"...\">\n        /// tag will invoke this when they are recognized by Cortana, passing along details of the \n        /// invocation. \n        /// \n        /// Background tasks must respond to activation by Cortana within 0.5 seconds, and must \n        /// report progress to Cortana every 5 seconds (unless Cortana is waiting for user\n        /// input). There is no execution time limit on the background task managed by Cortana,\n        /// but developers should use plmdebug (https://msdn.microsoft.com/en-us/library/windows/hardware/jj680085%28v=vs.85%29.aspx)\n        /// on the Cortana app package in order to prevent Cortana timing out the task during\n        /// debugging.\n        /// \n        /// Cortana dismisses its UI if it loses focus. This will cause it to terminate the background\n        /// task, even if the background task is being debugged. Use of Remote Debugging is recommended\n        /// in order to debug background task behaviors. In order to debug background tasks, open the\n        /// project properties for the app package (not the background task project), and enable\n        /// Debug -> \"Do not launch, but debug my code when it starts\". Alternatively, add a long\n        /// initial progress screen, and attach to the background task process while it executes.\n        /// </summary>\n        /// <param name=\"taskInstance\">Connection to the hosting background service process.</param>\n        public async void Run(IBackgroundTaskInstance taskInstance)\n        {\n            serviceDeferral = taskInstance.GetDeferral();\n\n            // Register to receive an event if Cortana dismisses the background task. This will\n            // occur if the task takes too long to respond, or if Cortana's UI is dismissed.\n            // Any pending operations should be cancelled or waited on to clean up where possible.\n            taskInstance.Canceled += OnTaskCanceled;\n\n            var triggerDetails = taskInstance.TriggerDetails as AppServiceTriggerDetails;\n\n            // This should match the uap:AppService and VoiceCommandService references from the \n            // package manifest and VCD files, respectively. Make sure we've been launched by\n            // a Cortana Voice Command.\n            if (triggerDetails != null && triggerDetails.Name == \"CortanaTodoVoiceService\")\n            {\n                try\n                {\n                    // Get the connection\n                    voiceConnection = VoiceCommandServiceConnection.FromAppServiceTriggerDetails(triggerDetails);\n\n                    // Subscribe to commands completed\n                    voiceConnection.VoiceCommandCompleted += OnVoiceCommandCompleted;\n\n                    // Get the command\n                    VoiceCommand voiceCommand = await voiceConnection.GetVoiceCommandAsync();\n\n                    Debug.WriteLine(string.Format(\"Command Name: {0}\", voiceCommand.CommandName));\n                    Debug.WriteLine(string.Format(\"Result.Text: {0}\", voiceCommand.SpeechRecognitionResult.Text));\n                    foreach (var rule in voiceCommand.SpeechRecognitionResult.RulePath)\n                    {\n                        Debug.WriteLine(string.Format(\"Rule: {0}\", rule));\n                    }\n                    foreach (var prop in voiceCommand.Properties)\n                    {\n                        foreach (var value in prop.Value)\n                        {\n                            Debug.WriteLine(string.Format(\"Prop: {0} Val: {1}\", prop.Key, value));\n                        }\n                    }\n                    foreach (var prop in voiceCommand.SpeechRecognitionResult.SemanticInterpretation.Properties)\n                    {\n                        foreach (var value in prop.Value)\n                        {\n                            Debug.WriteLine(string.Format(\"S-Prop: {0} Val: {1}\", prop.Key, value));\n                        }\n                    }\n                    \n                    // Depending on the operation (defined in VoiceCommands.xml)\n                    // perform the appropriate command.\n                    string listName = null;\n                    string itemName = null;\n                    switch (voiceCommand.CommandName)\n                    {\n                        case \"addToList\":\n                            listName = voiceCommand.Properties[\"listName\"].FirstOrDefault();\n                            itemName = voiceCommand.Properties[\"itemName\"].FirstOrDefault();\n                            await HandleAddToListAsync(listName, itemName);\n                            break;\n\n                        case \"addNewList\":\n                            listName = voiceCommand.Properties[\"listNameNL\"].FirstOrDefault();\n                            await HandleNewListAsync(listName);\n                            break;\n\n                        case \"markItemComplete\":\n                            listName = voiceCommand.Properties[\"listName\"].FirstOrDefault();\n                            itemName = voiceCommand.Properties[\"itemName\"].FirstOrDefault();\n                            await HandleMarkItemCompleteAsync(listName, itemName);\n                            break;\n                            \n                        default:\n                            // As with app activation VCDs, we need to handle the possibility that\n                            // an app update may remove a voice command that is still registered.\n                            // This can happen if the user hasn't run an app since an update.\n                            await RequestAppLaunchAsync();\n                            break;\n                    }\n                }\n                catch (Exception ex)\n                {\n                    System.Diagnostics.Debug.WriteLine(\"Handling Voice Command failed \" + ex.ToString());\n                }\n            }\n        }\n\n\n\n        /// <summary>\n        /// Handle the completion of the voice command. Your app may be cancelled\n        /// for a variety of reasons, such as user cancellation or not providing \n        /// progress to Cortana in a timely fashion. Clean up any pending long-running\n        /// operations (eg, network requests).\n        /// </summary>\n        /// <param name=\"sender\">The voice connection associated with the command.</param>\n        /// <param name=\"args\">Contains an Enumeration indicating why the command was terminated.</param>\n        private void OnVoiceCommandCompleted(VoiceCommandServiceConnection sender, VoiceCommandCompletedEventArgs args)\n        {\n            if (this.serviceDeferral != null)\n            {\n                this.serviceDeferral.Complete();\n            }\n        }\n\n        /// <summary>\n        /// When the background task is cancelled, clean up/cancel any ongoing long-running operations.\n        /// This cancellation notice may not be due to Cortana directly. The voice command connection will\n        /// typically already be destroyed by this point and should not be expected to be active.\n        /// </summary>\n        /// <param name=\"sender\">This background task instance</param>\n        /// <param name=\"reason\">Contains an enumeration with the reason for task cancellation</param>\n        private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\n        {\n            System.Diagnostics.Debug.WriteLine(\"Task cancelled, clean up\");\n            if (this.serviceDeferral != null)\n            {\n                //Complete the service deferral\n                this.serviceDeferral.Complete();\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "Cortana/CortanaTodo.Background/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/CortanaTodo.Shared.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{0C4D6450-599D-445D-A20B-38F200201E71}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>CortanaTodo.Shared</RootNamespace>\n    <AssemblyName>CortanaTodo.Shared</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Models\\BindableBase.cs\" />\n    <Compile Include=\"Models\\DataObject.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\TaskHelper.cs\" />\n    <Compile Include=\"Services\\TodoService.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Models/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Template10.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public bool Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n                return true;\n            }\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Models/DataObject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\n#if MVVMLIGHT\nusing ObservableObject = GalaSoft.MvvmLight.ObservableObject;\n#else\nusing ObservableObject = Template10.Mvvm.BindableBase;\n#endif\n\nnamespace Template10.Models\n{\n    public class DataObject : ObservableObject\n    {\n        private string id = Guid.NewGuid().ToString();\n        /// <summary>\n        /// Gets or sets the unique ID of the list.\n        /// </summary>\n        /// <value>\n        /// The unique ID of the list.\n        /// </value>\n        public string Id\n        {\n            get\n            {\n                return id;\n            }\n            set\n            {\n                Set(ref id, value);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Models/TodoItem.cs",
    "content": "﻿using System;\nusing Template10.Models;\n\nnamespace CortanaTodo.Models\n{\n    /// <summary>\n    /// Represents an item in a <see cref=\"TodoList\"/>.\n    /// </summary>\n    public class TodoItem : DataObject\n    {\n        private DateTime? dueDate;\n        /// <summary>\n        /// Gets or sets the date and time the item is due.\n        /// </summary>\n        public DateTime? DueDate\n        {\n            get\n            {\n                return dueDate;\n            }\n            set\n            {\n                Set(ref dueDate, value);\n            }\n        }\n\n        private string title;\n        /// <summary>\n        /// Gets or sets the Title of the item.\n        /// </summary>\n        /// <value>\n        /// The Title of the item.\n        /// </value>\n        public string Title\n        {\n            get\n            {\n                return title;\n            }\n            set\n            {\n                Set(ref title, value);\n            }\n        }\n\n\n        private bool isComplete;\n        /// <summary>\n        /// Gets or sets a value that indicates if the item is complete.\n        /// </summary>\n        /// <value>\n        /// <c>true</c> if the item is complete; otherwise false.\n        /// </value>\n        public bool IsComplete\n        {\n            get\n            {\n                return isComplete;\n            }\n            set\n            {\n                Set(ref isComplete, value);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Template10.Models;\n\nnamespace CortanaTodo.Models\n{\n    /// <summary>\n    /// Represents a named list of <see cref=\"TodoItem\"/>s.\n    /// </summary>\n    public class TodoList : DataObject\n    {\n        private ObservableCollection<TodoItem> items = new ObservableCollection<TodoItem>();\n        /// <summary>\n        /// Gets or sets the collection of items in the list.\n        /// </summary>\n        /// <value>\n        /// The collection of items in the list.\n        /// </value>\n        public ObservableCollection<Models.TodoItem> Items\n        {\n            get\n            {\n                return items;\n            }\n            set\n            {\n                Set(ref items, value);\n            }\n        }\n\n        private string title;\n        /// <summary>\n        /// Gets or sets the Title of the list.\n        /// </summary>\n        /// <value>\n        /// The Title of the list.\n        /// </value>\n        public string Title\n        {\n            get\n            {\n                return title;\n            }\n            set\n            {\n                Set(ref title, value);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"CortanaTodo.Shared\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"CortanaTodo.Shared\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    static public class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        static public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        static public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        static public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        static public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(string.Format(\"Error Reading File: {0}\", ex.Message));\n                throw ex;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        static public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // create file\n                var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n                // convert to string\n                var _String = Serialize(value);\n                // save string to file\n                await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n                // result\n                return await FileExistsAsync(key, location);\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(string.Format(\"Error Writing File: {0}\", ex.Message));\n                throw ex;\n            }\n        }\n\n        static private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        static private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        static private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        static private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        static private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadListAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteListAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Services/TaskHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Popups;\n\nnamespace Template10.Services\n{\n    /// <summary>\n    /// Represents options for running tasks.\n    /// </summary>\n    public class TaskRunOptions\n    {\n        #region Static Version\n        static private TaskRunOptions defaultInstance;\n        #region Public Methods\n        /// <summary>\n        /// Creates a <see cref=\"TaskRunOptions\"/> instance with the specified failure message.\n        /// </summary>\n        /// <param name=\"failureMessage\">\n        /// The failure message to use.\n        /// </param>\n        /// <returns>\n        /// A new <see cref=\"TaskRunOptions\"/> instance.\n        /// </returns>\n        static public TaskRunOptions WithFailure(string failureMessage)\n        {\n            return new TaskRunOptions() { FailureMessge = failureMessage };\n        }\n        #endregion // Public Methods\n\n        /// <summary>\n        /// Gets the default <see cref=\"TaskRunOptions\"/>.\n        /// </summary>\n        static public TaskRunOptions Default\n        {\n            get\n            {\n                if (defaultInstance == null)\n                {\n                    defaultInstance = new TaskRunOptions();\n                }\n                return defaultInstance;\n            }\n        }\n        #endregion // Static Version\n\n        #region Instance Version\n        #region Public Properties\n        /// <summary>\n        /// <c>true</c> if the failure messages should be displayed to the user if the task fails; otherwise <c>false</c>. The default is <c>true</c>.\n        /// </summary>\n        public bool DisplayFailures { get; set; } = true;\n\n        /// <summary>\n        /// <c>true</c> if exception information should be displayed to the user if the task fails; otherwise <c>false</c>. The default is <c>true</c>.\n        /// </summary>\n        public bool DisplayExceptionInfo { get; set; } = true;\n\n        /// <summary>\n        /// Gets or sets a message to display if the operation fails e.g. \"There was a problem saving documents\" or \"Unable to load user data\".\n        /// </summary>\n        public string FailureMessge { get; set; } = \"Oops, there was a problem.\";\n\n        /// <summary>\n        /// <c>true</c> if the caller should be considered \"busy\" while the task is running; otherwise <c>false</c>. The default is <c>true</c>.\n        /// </summary>\n        public bool IsBusy { get; set; } = true;\n\n        /// <summary>\n        /// Gets or sets the <see cref=\"TaskScheduler\"/> used to execute the task or action.\n        /// </summary>\n        /// <remarks>\n        /// If this property is <see langword=\"null\"/> tasks will execute using their defult scheduler and actions will run using \n        /// <see cref=\"TaskScheduler.FromCurrentSynchronizationContext\"/>.\n        /// </remarks>\n        public TaskScheduler Scheduler { get; set; }\n        #endregion // Public Properties\n        #endregion // Instance Version\n    }\n\n    /// <summary>\n    /// A helper class for working with tasks.\n    /// </summary>\n    static public class TaskHelper\n    {\n        #region Member Variables\n        static Task completedTask;\n        #endregion // Member Variables\n\n\n        #region Internal Methods\n        /// <summary>\n        /// Display information about the error if error display is turned on.\n        /// </summary>\n        /// <param name=\"ex\">\n        /// The exception.\n        /// </param>\n        /// <param name=\"options\">\n        /// The <see cref=\"TaskRunOptions\"/> that controls how errors are displayed.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        static private async Task DisplayErrorAsync(Exception ex, TaskRunOptions options)\n        {\n            // Show failures?\n            if (options.DisplayFailures)\n            {\n                // Build failure message\n                string message;\n                if (options.DisplayExceptionInfo)\n                {\n                    message = string.Format(\"{0} \\r\\n\\r\\n{1}\", options.FailureMessge, ex.Message);\n                }\n                else\n                {\n                    message = options.FailureMessge;\n                }\n\n                // Show failure message\n                await new MessageDialog(message).ShowAsync();\n            }\n        }\n        #endregion // Internal Methods\n\n\n        #region Public Methods\n        /// <summary>\n        /// Executes a task and handles any errors that occur.\n        /// </summary>\n        /// <param name=\"taskFunction\">\n        /// A function that yields the <see cref=\"Task\"/> to execute.\n        /// </param>\n        /// <param name=\"options\">\n        /// A <see cref=\"TaskRunOptions\"/> instance that specifies options for running the task or <see langword=\"null\"/> \n        /// to use <see cref=\"TaskRunOptions.Default\"/>.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the wrapped execution of the inner task.\n        /// </returns>\n        static public async Task RunWithErrorHandling(Func<Task> taskFunction, TaskRunOptions options = null)\n        {\n            // Validate\n            if (taskFunction == null) throw new ArgumentNullException(\"taskFunction\");\n\n            // Options\n            if (options == null) { options = TaskRunOptions.Default; }\n\n            // Handle failure\n            try\n            {\n                // Custom scheduler?\n                if (options.Scheduler != null)\n                {\n                    await new TaskFactory(options.Scheduler).StartNew(taskFunction).Unwrap();\n                }\n                else\n                {\n                    await taskFunction();\n                }\n            }\n            catch (Exception ex)\n            {\n                await DisplayErrorAsync(ex, options);\n            }\n        }\n\n        /// <summary>\n        /// Executes a task and handles any errors that occur.\n        /// </summary>\n        /// <param name=\"action\">\n        /// The <see cref=\"Action\"/> to execute.\n        /// </param>\n        /// <param name=\"options\">\n        /// A <see cref=\"TaskRunOptions\"/> instance that specifies options for running the task or <see langword=\"null\"/> \n        /// to use <see cref=\"TaskRunOptions.Default\"/>.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the wrapped execution of the inner action.\n        /// </returns>\n        static public async Task RunWithErrorHandling(Action action, TaskRunOptions options = null)\n        {\n            // Validate\n            if (action == null) throw new ArgumentNullException(\"action\");\n\n            // Options\n            if (options == null) { options = TaskRunOptions.Default; }\n\n            // Handle failure\n            try\n            {\n                // Custom scheduler\n                if (options.Scheduler != null)\n                {\n                    await new TaskFactory(options.Scheduler).StartNew(action);\n                }\n                else\n                {\n                    await Task.Factory.StartNew(action);\n                }\n            }\n            catch (Exception ex)\n            {\n                await DisplayErrorAsync(ex, options);\n            }\n        }\n        #endregion // Public Methods\n\n\n        #region Public Properties\n        /// <summary>\n        /// Gets a task that can be returned to specify that a synchronous function has completed.\n        /// </summary>\n        static public Task CompletedTask\n        {\n            get\n            {\n                if (completedTask == null)\n                {\n                    completedTask = Task.FromResult(true);\n                }\n                return completedTask;\n            }\n        }\n        #endregion // Public Properties\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/Services/TodoService.cs",
    "content": "﻿using CortanaTodo.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Template10.Services;\nusing Template10.Services.FileService;\nusing Windows.ApplicationModel.VoiceCommands;\n\nnamespace CortanaTodo.Services\n{\n    /// <summary>\n    /// A service for loading and saving Todo items and lists.\n    /// </summary>\n    public class TodoService\n    {\n        #region Static Version\n        #region Constants\n        private const string ListFileName = \"ListData.json\";\n        #endregion // Constants\n\n        #region Member Variables\n        static private TodoService defaultInstance;\n        #endregion // Member Variables\n\n        #region Public Methods\n        /// <summary>\n        /// Gets the TodoService singleton.\n        /// </summary>\n        /// <returns>\n        /// The TodoService singleton.\n        /// </returns>\n        static public TodoService GetDefault()\n        {\n            if (defaultInstance == null)\n            {\n                defaultInstance = new TodoService();\n            }\n            return defaultInstance;\n        }\n        #endregion // Public Methods\n        #endregion // Static Version\n\n\n        #region Instance Version\n\n        #region Member Variables\n        private ObservableCollection<TodoList> cache;\n        #endregion // Member Variables\n\n        #region Constructors\n        /// <summary>\n        /// Initializes a new <see cref=\"TodoService\"/> instance.\n        /// </summary>\n        private TodoService()\n        {\n\n        }\n        #endregion // Constructors\n\n        #region Public Methods\n        /// <summary>\n        /// Deletes the specified list.\n        /// </summary>\n        /// <param name=\"list\">\n        /// The list to delete.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        public async Task DeleteAsync(TodoList list)\n        {\n            // Validate\n            if (list == null) throw new ArgumentNullException(\"list\");\n\n            // Only proceed if lists are loaded\n            if (cache != null)\n            {\n                // If found, remove and save\n                if (cache.Contains(list))\n                {\n                    cache.Remove(list);\n                    await SaveAllAsync();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Loads all lists.\n        /// </summary>\n        /// <param name=\"useCache\">\n        /// <c>true</c> if the cache should be used when available; otherwise false.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that yields the result of the operation.\n        /// </returns>\n        public async Task<ObservableCollection<TodoList>> LoadListsAsync(bool useCache = true)\n        {\n            // If cache loaded and cache okay, just return it\n            if ((useCache) && (cache != null))\n            {\n                return cache;\n            }\n\n            // Either no cache or cache not allowed\n\n            // Try to load from disk\n            cache = await FileHelper.ReadFileAsync<ObservableCollection<TodoList>>(ListFileName, FileHelper.StorageStrategies.Roaming);\n\n            // If still null, that means the file doesn't exist. Create a new list.\n            if (cache == null)\n            {\n                var defaultList = new TodoList()\n                {\n                    Title = \"New List\"\n                };\n                var defaultItem = new TodoItem()\n                {\n                    Title = \"New Item\"\n                };\n\n                defaultList.Items.Add(defaultItem);\n\n                cache = new ObservableCollection<TodoList>()\n                {\n                    defaultList\n                };\n            }\n\n            /*\n            cache = new ObservableCollection<TodoList>()\n            {\n                new TodoList()\n                {\n                    Title = \"Groceries\",\n                    Items = new ObservableCollection<TodoItem>()\n                    {\n                        new TodoItem() { Title = \"Item A\" },\n                        new TodoItem() { Title = \"Item B\" },\n                        new TodoItem() { Title = \"Item C\" },\n                        new TodoItem() { Title = \"Item D\" },\n                    }\n                },\n\n                new TodoList()\n                {\n                    Title = \"Home Supplies\",\n                    Items = new ObservableCollection<TodoItem>()\n                    {\n                        new TodoItem() { Title = \"Item A\" },\n                        new TodoItem() { Title = \"Item B\" },\n                        new TodoItem() { Title = \"Item C\" },\n                        new TodoItem() { Title = \"Item D\" },\n                    }\n                },\n            };\n            */\n            return cache;\n        }\n\n        /// <summary>\n        /// Savs the specified list.\n        /// </summary>\n        /// <param name=\"list\">\n        /// The list to save.\n        /// </param>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        public async Task SaveAsync(TodoList list)\n        {\n            // Validate\n            if (list == null) throw new ArgumentNullException(\"list\");\n\n            // Get the lists (loading if necessary)\n            var lists = await LoadListsAsync();\n\n            // If not in the lists, add\n            if (!lists.Contains(list))\n            {\n                lists.Add(list);\n            }\n\n            // Save all\n            await SaveAllAsync();\n        }\n\n        /// <summary>\n        /// Saves all lists.\n        /// </summary>\n        /// <returns>\n        /// A <see cref=\"Task\"/> that represents the operation.\n        /// </returns>\n        public async Task SaveAllAsync()\n        {\n            // If cache not loaded, ignore\n            if (cache == null) { return; }\n\n            // Try to save to disk\n            await FileHelper.WriteFileAsync<ObservableCollection<TodoList>>(ListFileName, cache, FileHelper.StorageStrategies.Roaming);\n\n            // When file saved to disk, update all phrase lists too\n            await UpdatePhraseLists();\n        }\n\n        /// <summary> \n        /// Whenever lists are added or removed we trigger an update of the voice command Phrase list. This allows \n        /// voice commands such as \"Cortana TODO show list {listName} to be up to date. \n        /// </summary> \n        public async Task UpdatePhraseLists()\n        {\n            // If the cache isn't loaded, load it\n            var lists = await LoadListsAsync();\n            try\n            {\n                VoiceCommandDefinition commandDefinitions;\n                if (VoiceCommandDefinitionManager.InstalledCommandDefinitions.TryGetValue(\"CortanaTodoCommandSet_en-us\", out commandDefinitions))\n                {\n                    //var listNames = (from l in lists\n                    //                 select l.Title).ToList();\n                    List<string> listNames = new List<string>();\n                    foreach (var list in lists)\n                    {\n                        listNames.Add(list.Title);\n                    }\n                    await commandDefinitions.SetPhraseListAsync(\"listName\", listNames);\n                }\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(\"Updating Phrase list for VCDs: \" + ex.ToString());\n            }\n        }\n        #endregion // Public Methods\n        #endregion // Instance Version\n    }\n}\n"
  },
  {
    "path": "Cortana/CortanaTodo.Shared/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "Cortana/CortanaTodo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"CortanaTodo\", \"CortanaTodo\\CortanaTodo.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"CortanaTodo.Shared\", \"CortanaTodo.Shared\\CortanaTodo.Shared.csproj\", \"{0C4D6450-599D-445D-A20B-38F200201E71}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"CortanaTodo.Background\", \"CortanaTodo.Background\\CortanaTodo.Background.csproj\", \"{987337EE-669C-4856-B425-68F1D0D3B9C6}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|x64.Build.0 = Debug|x64\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Debug|x86.Build.0 = Debug|x86\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|ARM.Build.0 = Release|ARM\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|x64.ActiveCfg = Release|x64\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|x64.Build.0 = Release|x64\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|x86.ActiveCfg = Release|x86\n\t\t{0C4D6450-599D-445D-A20B-38F200201E71}.Release|x86.Build.0 = Release|x86\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|x64.Build.0 = Debug|x64\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Debug|x86.Build.0 = Debug|x86\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|ARM.Build.0 = Release|ARM\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|x64.ActiveCfg = Release|x64\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|x64.Build.0 = Release|x64\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|x86.ActiveCfg = Release|x86\n\t\t{987337EE-669C-4856-B425-68F1D0D3B9C6}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/App.xaml",
    "content": "﻿<Application\n    x:Class=\"DragAndDropSample.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:DragAndDropSample\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace DragAndDropSample\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();\n\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/DragAndDropSample.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{C6E14731-1266-4159-ACD6-CDDA00801C35}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>DragAndDropSample</RootNamespace>\n    <AssemblyName>DragAndDropSample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>DragAndDropSample_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"DragAndDropSample_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\jerry.png\" />\n    <Content Include=\"Assets\\MSLogoImage.png\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.PersistenceChannel, Version=0.14.3.186, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.PersistenceChannel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"DragAndDropSample.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:DragAndDropSample\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n        <Style TargetType=\"TextBlock\">\n            <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n        </Style>\n\n        <Style x:Key=\"DropTargetButtonText\" TargetType=\"TextBlock\">\n            <Setter Property=\"FontSize\" Value=\"18\"/>\n            <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n            <Setter Property=\"TextWrapping\" Value=\"WrapWholeWords\"/>\n        </Style>\n\n        <Style x:Key=\"DropTargetButton\" TargetType=\"Button\">\n            <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\n            <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\n            <Setter Property=\"Background\" Value=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"/>\n        </Style>\n\n        <Style x:Key=\"DPInfo\" TargetType=\"TextBlock\">\n            <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n            <Setter Property=\"TextWrapping\" Value=\"WrapWholeWords\"/>\n        </Style>\n    </Page.Resources>\n\n    <Grid x:Name=\"MainGrid\" RequestedTheme=\"Light\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"20\"/>\n            <ColumnDefinition Width=\"*\"/>\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"20\"/>\n            <RowDefinition Height=\"60\"/>\n            <RowDefinition Height=\"20\"/>\n            <RowDefinition Height=\"100\"/>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"50\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <TextBlock Grid.Row=\"1\" Grid.Column=\"1\" Text=\"DropMe - UAP DnD sample app\" FontSize=\"40\" />\n        <StackPanel Grid.Row=\"3\" Grid.Column=\"1\" Orientation=\"Horizontal\">\n            <TextBlock Text=\"Stuff to drag\" VerticalAlignment=\"Center\" FontSize=\"20\"/>\n            <Border BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"10\">\n                <Image x:Name=\"DragImage\" Source=\"Assets/MSLogoImage.png\" CanDrag=\"True\" DragStarting=\"DragImage_DragStarting\"/>\n            </Border>\n            <Border BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"10\">\n                <TextBlock x:Name=\"DragText\" Text=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\" CanDrag=\"True\" FontSize=\"11\" VerticalAlignment=\"Center\" DragStarting=\"DragText_DragStarting\" />\n            </Border>\n        </StackPanel>\n\n        <StackPanel Grid.Row=\"4\" Grid.Column=\"1\">\n            <StackPanel Orientation=\"Horizontal\" Margin=\"0,5\">\n                <TextBlock Text=\"Set recommended datapackage operations:\" VerticalAlignment=\"Center\"/>\n                <CheckBox x:Name=\"MoveRequestedOperation\" Content=\"Move\"/>\n                <CheckBox x:Name=\"CopyRequestedOperation\" Content=\"Copy\" IsChecked=\"True\"/>\n                <CheckBox x:Name=\"LinkRequestedOperation\" Content=\"Link\"/>\n            </StackPanel>\n            <StackPanel Orientation=\"Horizontal\" Margin=\"0,5\">\n                <TextBlock Text=\"Enter some caption text:\" VerticalAlignment=\"Center\"/>\n                <TextBox x:Name=\"CustomText\" Text=\"Hello World!\" Width=\"150\" VerticalAlignment=\"Center\" />\n            </StackPanel>\n            <CheckBox x:Name=\"DragTriggerDetection\" Content=\"Use XAML drag trigger detection\" IsChecked=\"True\" Unchecked=\"DragTriggerDetection_Checked\" Checked=\"DragTriggerDetection_Checked\" Margin=\"0,5\"/>\n        </StackPanel>\n\n        <Grid Grid.Row=\"6\" Grid.Column=\"1\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"300\"/>\n                <ColumnDefinition Width=\"*\"/>\n                <ColumnDefinition Width=\"*\"/>\n                <ColumnDefinition Width=\"*\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\"/>\n                <RowDefinition Height=\"50\"/>\n                <RowDefinition Height=\"*\"/>\n            </Grid.RowDefinitions>\n\n            <Grid Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"3\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"150\"/>\n                    <ColumnDefinition Width=\"10\"/>\n                    <ColumnDefinition Width=\"140\"/>\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                    <RowDefinition Height=\"Auto\"/>\n                    <RowDefinition Height=\"10\"/>\n                </Grid.RowDefinitions>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"0\" Text=\"Cursor position\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"0\" x:Name=\"OutputCursorPosition\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"2\" Text=\"Modifiers\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"2\" x:Name=\"OutputModifiers\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"4\" Text=\"Accepted Operations\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"4\" x:Name=\"OutputAcceptedOperations\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"6\" Text=\"Requested Operations\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"6\" x:Name=\"OutputRequestedOperations\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"8\" Text=\"DataPackage - AppLink\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"8\" x:Name=\"OutputDPAppLink\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"10\" Text=\"DataPackage - WebLink\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"10\" x:Name=\"OutputDPWebLink\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"12\" Text=\"DataPackage - Text\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"12\" x:Name=\"OutputDPText\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"14\" Text=\"DataPackage - Rtf\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"14\" x:Name=\"OutputDPRtf\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"16\" Text=\"DataPackage - Bitmap\"/>\n                <Image Grid.Column=\"2\" Grid.Row=\"16\" x:Name=\"OutputDPBitmap\" MaxWidth=\"90\" Stretch=\"UniformToFill\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"18\" Text=\"DataPackage - Data\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"18\" x:Name=\"OutputDPData\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"20\" Text=\"DataPackage - HTML\"/>\n                <TextBlock Grid.Column=\"2\" Grid.Row=\"20\" x:Name=\"OutputDPHTML\" Style=\"{StaticResource DPInfo}\"/>\n\n                <TextBlock Grid.Column=\"0\" Grid.Row=\"22\" Text=\"DataPackage - Files\"/>\n                <StackPanel Grid.Column=\"2\" Grid.Row=\"22\" x:Name=\"OutputDPFiles\" />\n\n            </Grid>\n\n            <Border Grid.Column=\"1\" Grid.Row=\"0\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"Move\" AllowDrop=\"True\" DragOver=\"Move_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\" >\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to move\" Style=\"{StaticResource DropTargetButtonText}\" />\n                    </Button.Content>\n                </Button>\n            </Border>\n            <Border Grid.Column=\"2\" Grid.Row=\"0\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"Copy\" AllowDrop=\"True\" DragOver=\"Copy_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\"  >\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to copy\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n            <Border Grid.Column=\"3\" Grid.Row=\"0\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"Link\" AllowDrop=\"True\" DragOver=\"Link_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to link\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n            <Border Grid.Column=\"4\" Grid.Row=\"0\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"None\" AllowDrop=\"True\" DragOver=\"None_DragOver\" DragLeave=\"Clear_DragLeave\"  Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to refuse the drop\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n\n            <Border Grid.Column=\"1\" Grid.Row=\"2\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"RemoveDecoration\"   AllowDrop=\"True\" DragOver=\"RemoveDecoration_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to hide caption, glyph, and content\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n\n            <Border Grid.Column=\"2\" Grid.Row=\"2\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"ApplyDecoration\"  AllowDrop=\"True\" DragOver=\"ApplyDecoration_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to show glyph and content\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n\n            <Border Grid.Column=\"3\" Grid.Row=\"2\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"ApplyCustomText\"  AllowDrop=\"True\" DragOver=\"ApplyCustomText_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to show caption, glyph, and content\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n\n            <Border Grid.Column=\"4\" Grid.Row=\"2\" BorderThickness=\"2\" BorderBrush=\"Black\" Margin=\"20\">\n                <Button x:Name=\"Custom\"  AllowDrop=\"True\" DragOver=\"Custom_DragOver\" DragLeave=\"Clear_DragLeave\" Style=\"{StaticResource DropTargetButton}\">\n                    <Button.Content>\n                        <TextBlock Text=\"Drag here to use a custom visual\" Style=\"{StaticResource DropTargetButtonText}\"/>\n                    </Button.Content>\n                </Button>\n            </Border>\n\n            <!--<TextBlock x:Name=\"TitleTextBlock\"/>\n            <TextBlock x:Name=\"DescriptionTextBlock\"/>\n            <TextBlock x:Name=\"SharedTextTextBlock\"/>\n            <Image x:Name=\"sharedPhotoImage\"/>-->\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.ApplicationModel.DataTransfer.DragDrop;\nusing Windows.Foundation;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media.Imaging;\n\n\nnamespace DragAndDropSample\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        async private void UpdateOutput(DragEventArgs e)\n        {\n            ClearOutput();\n\n            OutputCursorPosition.Text = e.GetPosition(MainGrid).X + \",\" + e.GetPosition(MainGrid).Y;\n\n            string keys = \"\";\n            if (e.Modifiers.HasFlag(DragDropModifiers.Alt))\n                keys += \"Alt \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.Control))\n                keys += \"Control \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.LeftButton))\n                keys += \"LeftButton \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.MiddleButton))\n                keys += \"MiddleButton \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.None))\n                keys += \"None \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.RightButton))\n                keys += \"RightButton \";\n            if (e.Modifiers.HasFlag(DragDropModifiers.Shift))\n                keys += \"Shift \";\n            OutputModifiers.Text = keys;\n\n            string acceptedOperations = \"\";\n            if (e.AcceptedOperation.HasFlag(DataPackageOperation.Copy))\n                acceptedOperations += \"Copy \";\n            if (e.AcceptedOperation.HasFlag(DataPackageOperation.Move))\n                acceptedOperations += \"Move \";\n            if (e.AcceptedOperation.HasFlag(DataPackageOperation.Link))\n                acceptedOperations += \"Link \";\n            if (e.AcceptedOperation.HasFlag(DataPackageOperation.None))\n                acceptedOperations += \"None \";\n            OutputAcceptedOperations.Text = acceptedOperations;\n\n            string requestedOperations = \"\";\n            if (e.DataView.RequestedOperation.HasFlag(DataPackageOperation.Copy))\n                requestedOperations += \"Copy \";\n            if (e.DataView.RequestedOperation.HasFlag(DataPackageOperation.Move))\n                requestedOperations += \"Move \";\n            if (e.DataView.RequestedOperation.HasFlag(DataPackageOperation.Link))\n                requestedOperations += \"Link \";\n            if (e.DataView.RequestedOperation.HasFlag(DataPackageOperation.None))\n                requestedOperations += \"None \";\n            OutputRequestedOperations.Text = requestedOperations;\n\n            if (e.DataView.Contains(StandardDataFormats.ApplicationLink))\n                OutputDPAppLink.Text = (await e.DataView.GetApplicationLinkAsync()).ToString();\n            if (e.DataView.Contains(StandardDataFormats.WebLink))\n                OutputDPWebLink.Text = (await e.DataView.GetWebLinkAsync()).ToString();\n            if (e.DataView.Contains(StandardDataFormats.Text))\n                OutputDPText.Text = await e.DataView.GetTextAsync();\n            if (e.DataView.Contains(StandardDataFormats.Rtf))\n                OutputDPRtf.Text = await e.DataView.GetRtfAsync();\n            if (e.DataView.Contains(StandardDataFormats.Html))\n                OutputDPHTML.Text = await e.DataView.GetHtmlFormatAsync();\n\n            if (e.DataView.Contains(StandardDataFormats.Bitmap))\n            {\n                BitmapImage image = new BitmapImage();\n                var streamRef = await e.DataView.GetBitmapAsync();\n                var stream = await streamRef.OpenReadAsync();\n                image.SetSource(stream);\n                OutputDPBitmap.Source = image;\n            }\n\n            if (e.DataView.Contains(StandardDataFormats.StorageItems))\n            {\n                var files = await e.DataView.GetStorageItemsAsync();\n                foreach (var file in files)\n                {\n                    TextBlock t = new TextBlock();\n                    t.Text = file.Name;\n                    OutputDPFiles.Children.Add(t);\n                }\n            }\n        }\n\n        private void ClearOutput()\n        {\n            OutputCursorPosition.Text = \"\";\n            OutputModifiers.Text = \"\";\n            OutputAcceptedOperations.Text = \"\";\n            OutputRequestedOperations.Text = \"\";\n            OutputDPAppLink.Text = \"\";\n            OutputDPWebLink.Text = \"\";\n            OutputDPText.Text = \"\";\n            OutputDPRtf.Text = \"\";\n            OutputDPHTML.Text = \"\";\n            OutputDPBitmap.Source = null;\n            OutputDPFiles.Children.Clear();\n        }\n\n        private void Move_DragOver(object sender, DragEventArgs e)\n        {\n            e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Move;\n            UpdateOutput(e);\n        }\n\n        private void Copy_DragOver(object sender, DragEventArgs e)\n        {\n            e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Copy;\n            UpdateOutput(e);\n        }\n\n        private void Link_DragOver(object sender, DragEventArgs e)\n        {\n            e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Link;\n            UpdateOutput(e);\n        }\n\n        private void None_DragOver(object sender, DragEventArgs e)\n        {\n            e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.None;\n            UpdateOutput(e);\n        }\n\n        private void RemoveDecoration_DragOver(object sender, DragEventArgs e)\n        {\n            e.DragUIOverride.IsCaptionVisible = false;\n            e.DragUIOverride.IsGlyphVisible = false;\n            e.DragUIOverride.IsContentVisible = false;\n            UpdateOutput(e);\n        }\n\n        private void ApplyDecoration_DragOver(object sender, DragEventArgs e)\n        {\n            e.DragUIOverride.IsCaptionVisible = true;\n            e.DragUIOverride.IsGlyphVisible = true;\n            e.DragUIOverride.IsContentVisible = true;\n            UpdateOutput(e);\n        }\n\n        private void Custom_DragOver(object sender, DragEventArgs e)\n        {\n            e.DragUIOverride.SetContentFromBitmapImage(new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(\"ms-appx:///Assets/jerry.png\")));\n            e.DragUIOverride.IsGlyphVisible = true;\n            e.DragUIOverride.IsContentVisible = true;\n            UpdateOutput(e);\n        }\n\n        private void ApplyCustomText_DragOver(object sender, DragEventArgs e)\n        {\n            e.DragUIOverride.IsCaptionVisible = true;\n            e.DragUIOverride.IsGlyphVisible = true;\n            e.DragUIOverride.IsContentVisible = true;\n            e.DragUIOverride.Caption = CustomText.Text;\n            UpdateOutput(e);\n        }\n\n        private void Clear_DragLeave(object sender, DragEventArgs e)\n        {\n            ClearOutput();\n        }\n\n        async private void DragImage_DragStarting(UIElement sender, DragStartingEventArgs args)\n        {\n            // get the file\n            StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;\n            StorageFolder subFolder = await installFolder.GetFolderAsync(\"Assets\");\n            var file = await subFolder.GetFileAsync(\"MSLogoImage.png\");\n\n            // turn it into a stream and set it as a bitmap in the datapackage\n            var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);\n            args.Data.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));\n\n            // also set it as a file in the datapackage\n            var files = new List<StorageFile>();\n            files.Add(file);\n            args.Data.SetStorageItems(files);\n\n            args.Data.RequestedOperation = SetRequestedOperation();\n        }\n\n        private void DragText_DragStarting(UIElement sender, DragStartingEventArgs args)\n        {\n            args.Data.SetText(DragText.Text);\n            args.Data.SetRtf(DragText.Text);\n            args.Data.RequestedOperation = SetRequestedOperation();\n        }\n\n        private DataPackageOperation SetRequestedOperation()\n        {\n            if (MoveRequestedOperation.IsChecked.Value && CopyRequestedOperation.IsChecked.Value && LinkRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Move | DataPackageOperation.Copy | DataPackageOperation.Link;\n            else if (MoveRequestedOperation.IsChecked.Value && CopyRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Move | DataPackageOperation.Copy;\n            else if (MoveRequestedOperation.IsChecked.Value && LinkRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Move | DataPackageOperation.Link;\n            else if (CopyRequestedOperation.IsChecked.Value && LinkRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Copy | DataPackageOperation.Link;\n            else if (CopyRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Copy;\n            else if (MoveRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Move;\n            else if (LinkRequestedOperation.IsChecked.Value)\n                return DataPackageOperation.Link;\n            else\n                return DataPackageOperation.None;\n        }\n\n        private void DragTriggerDetection_Checked(object sender, RoutedEventArgs e)\n        {\n            if (DragTriggerDetection.IsChecked.Value) // let xaml do the drag trigger detection\n            {\n                DragImage.PointerPressed -= DragImage_PointerPressed;\n                DragImage.PointerReleased -= DragImage_PointerReleased;\n                DragImage.PointerMoved -= DragImage_PointerMoved;\n                DragImage.CanDrag = true;\n\n                DragText.PointerPressed -= DragText_PointerPressed;\n                DragText.PointerReleased -= DragText_PointerReleased;\n                DragText.PointerMoved -= DragText_PointerMoved;\n                DragText.CanDrag = true;\n            }\n            else // use manual drag trigger and call StartDragAsync\n            {\n                DragImage.PointerPressed += DragImage_PointerPressed;\n                DragImage.PointerReleased += DragImage_PointerReleased;\n                DragImage.PointerMoved += DragImage_PointerMoved;\n                DragImage.CanDrag = false;\n\n                DragText.PointerPressed += DragText_PointerPressed;\n                DragText.PointerReleased += DragText_PointerReleased;\n                DragText.PointerMoved += DragText_PointerMoved;\n                DragText.CanDrag = false;\n            }\n        }\n\n        #region DetectDragStartForDragImage\n        uint _dragPointerId;\n        Point _lastPressedPosition;\n\n        private void DragImage_PointerPressed(object sender, PointerRoutedEventArgs e)\n        {\n            if (_dragPointerId == 0)\n            {\n                _dragPointerId = e.Pointer.PointerId;\n                _lastPressedPosition = e.GetCurrentPoint(this).Position;\n            }\n        }\n\n        private void DragImage_PointerReleased(object sender, PointerRoutedEventArgs e)\n        {\n            _dragPointerId = 0;\n        }\n\n        private async void DragImage_PointerMoved(object sender, PointerRoutedEventArgs e)\n        {\n            if (_dragPointerId == e.Pointer.PointerId)\n            {\n                var pt = e.GetCurrentPoint(this).Position;\n                if (Math.Abs(pt.X - _lastPressedPosition.X) >= 5 || Math.Abs(pt.Y - _lastPressedPosition.Y) >= 5)\n                {\n                    _dragPointerId = 0;\n                    await DragImage.StartDragAsync(e.GetCurrentPoint(DragImage));\n                }\n            }\n        }\n        #endregion\n\n        #region DetectDragStartForDragText\n        private void DragText_PointerPressed(object sender, PointerRoutedEventArgs e)\n        {\n            if (_dragPointerId == 0)\n            {\n                _dragPointerId = e.Pointer.PointerId;\n                _lastPressedPosition = e.GetCurrentPoint(this).Position;\n            }\n        }\n\n        private void DragText_PointerReleased(object sender, PointerRoutedEventArgs e)\n        {\n            _dragPointerId = 0;\n        }\n\n        private async void DragText_PointerMoved(object sender, PointerRoutedEventArgs e)\n        {\n            if (_dragPointerId == e.Pointer.PointerId)\n            {\n                var pt = e.GetCurrentPoint(this).Position;\n                if (Math.Abs(pt.X - _lastPressedPosition.X) >= 5 || Math.Abs(pt.Y - _lastPressedPosition.Y) >= 5)\n                {\n                    _dragPointerId = 0;\n                    await DragText.StartDragAsync(e.GetCurrentPoint(DragText));\n                }\n            }\n        }\n        #endregion\n\n    }\n}\n"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"33aecf35-9068-44c9-99cb-aaa023f808af\"\n    Publisher=\"CN=anwigley\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"33aecf35-9068-44c9-99cb-aaa023f808af\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>DragAndDropSample</DisplayName>\n    <PublisherDisplayName>anwigley</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"DragAndDropSample.App\">\n      <uap:VisualElements\n        DisplayName=\"DragAndDropSample\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"DragAndDropSample\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"DragAndDropSample\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"DragAndDropSample\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.PersistenceChannel\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsApps\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.16-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "DragAndDropSample/DragAndDropSample.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"DragAndDropSample\", \"DragAndDropSample\\DragAndDropSample.csproj\", \"{C6E14731-1266-4159-ACD6-CDDA00801C35}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x64.Build.0 = Debug|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x86.Build.0 = Debug|x86\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|ARM.Build.0 = Release|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x64.ActiveCfg = Release|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x64.Build.0 = Release|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x64.Deploy.0 = Release|x64\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x86.ActiveCfg = Release|x86\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x86.Build.0 = Release|x86\n\t\t{C6E14731-1266-4159-ACD6-CDDA00801C35}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "HelloWorld/HelloWorld/Services/AdService/AdHelper.cs",
    "content": "﻿using Microsoft.Advertising.WinRT.UI;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.AdService\n{\n    public class AdHelper\n    {\n        private InterstitialAd _ad;\n        string _applicationId = string.Empty;\n        string _adUnitId = string.Empty;\n\n        public AdHelper(string applicationId, string adUnitId)\n        {\n            _applicationId = applicationId;\n            _adUnitId = adUnitId;\n\n            _ad = new InterstitialAd();\n            _ad.AdReady += (s, e) => AfterReady?.Invoke();\n            _ad.Completed += (s, e) => { if (IsReady) AfterComplete?.Invoke(); };\n            _ad.Cancelled += (s, e) => AfterCanceled?.Invoke();\n            _ad.ErrorOccurred += (s, e) => AfterError?.Invoke(e);\n        }\n\n        public bool IsReady { get { return _ad?.State == InterstitialAdState.Ready; } }\n        public Action AfterReady { get; set; }\n        public Action AfterComplete { get; set; }\n        public Action AfterCanceled { get; set; }\n        public Action<AdErrorEventArgs> AfterError { get; set; }\n\n        public void Preload(bool show = false)\n        {\n            if (show)\n                this.AfterReady += () => Show();\n            _ad.RequestAd(AdType.Video, _applicationId, _adUnitId);\n        }\n\n        public void Show()\n        {\n            _ad.Show();\n        }\n    }\n}\n"
  },
  {
    "path": "HelloWorld/HelloWorld/Services/AdService/AdService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.AdService\n{\n    class AdService\n    {\n        AdHelper _helper;\n\n        public AdService()\n        {\n            // for demo only\n            var adUnitId = \"11389925\";\n            var appId = \"d25517cb-12d4-4699-8bdc-52040c712cab\";\n            _helper = new AdHelper(appId, adUnitId);\n        }\n\n        // don't try to show while showing\n        private bool _busy = false;\n\n        // don't show in some other instance if already shown\n        private static bool _shown = false;\n\n        public void Show()\n        {\n            if (_busy)\n                return;\n            _busy = true;\n\n            if (_shown)\n                return;\n\n            _helper.AfterComplete = () => { _shown = true; AfterShown?.Invoke(); };\n            _helper.AfterCanceled = () => { _shown = false; };\n            _helper.AfterError = (e) => { _shown = true; };\n            _helper.Preload(true);\n        }\n\n        public Action AfterReady { get; set; }\n        public Action AfterShown { get; set; }\n    }\n}\n"
  },
  {
    "path": "HelloWorld/HelloWorld/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Mvvm;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update Commands\n                PropertyChanged += (s, e) =>\n                {\n                    AddListCommand.RaiseCanExecuteChanged();\n                    RemoveListCommand.RaiseCanExecuteChanged();\n                    RemoveAdsCommand.RaiseCanExecuteChanged();\n                    ShowVideoAdCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        bool _showAd = true;\n        public bool ShowAd { get { return _showAd; } set { Set(ref _showAd, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = TodoLists.IndexOf(list);\n                TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                var data = _todoListRepository.Sample(10).Select(x => new ViewModels.TodoListViewModel(x));\n                TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _RemoveAdsCommand = default(Mvvm.Command);\n        public Mvvm.Command RemoveAdsCommand { get { return _RemoveAdsCommand ?? (_RemoveAdsCommand = new Mvvm.Command(ExecuteRemoveAdsCommand, CanExecuteRemoveAdsCommand)); } }\n        private bool CanExecuteRemoveAdsCommand() { return !Busy && ShowAd; }\n        private async void ExecuteRemoveAdsCommand()\n        {\n            try\n            {\n                Busy = true;\n                var iapService = new Services.InAppPurchaseService.InAppPurchaseService();\n                ShowAd = !(await iapService.PurchaseAsync());\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _ShowVideoAdCommand = default(Mvvm.Command);\n        public Mvvm.Command ShowVideoAdCommand { get { return _ShowVideoAdCommand ?? (_ShowVideoAdCommand = new Mvvm.Command(ExecuteShowVideoAdCommand, CanExecuteShowVideoAdCommand)); } }\n        private bool CanExecuteShowVideoAdCommand() { return !Busy; }\n        private void ExecuteShowVideoAdCommand()\n        {\n            try\n            {\n                Busy = true;\n                var adService = new Services.AdService.AdService();\n                adService.AfterShown = () => ShowAd = false;\n                adService.Show();\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Category.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Category\n    {\n        public Category()\n        {\n            this.Products = new HashSet<Product>();\n        }\n    \n        public int Category_ID { get; set; }\n        public string Category_Name { get; set; }\n        public string Description { get; set; }\n        public byte[] Picture { get; set; }\n    \n        public virtual ICollection<Product> Products { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Customer.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Customer\n    {\n        public Customer()\n        {\n            this.Orders = new HashSet<Order>();\n        }\n    \n        public string Customer_ID { get; set; }\n        public string Company_Name { get; set; }\n        public string Contact_Name { get; set; }\n        public string Contact_Title { get; set; }\n        public string Address { get; set; }\n        public string City { get; set; }\n        public string Region { get; set; }\n        public string Postal_Code { get; set; }\n        public string Country { get; set; }\n        public string Phone { get; set; }\n        public string Fax { get; set; }\n    \n        public virtual ICollection<Order> Orders { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Employee.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Employee\n    {\n        public Employee()\n        {\n            this.Orders = new HashSet<Order>();\n        }\n    \n        public int Employee_ID { get; set; }\n        public string Last_Name { get; set; }\n        public string First_Name { get; set; }\n        public string Title { get; set; }\n        public Nullable<System.DateTime> Birth_Date { get; set; }\n        public Nullable<System.DateTime> Hire_Date { get; set; }\n        public string Address { get; set; }\n        public string City { get; set; }\n        public string Region { get; set; }\n        public string Postal_Code { get; set; }\n        public string Country { get; set; }\n        public string Home_Phone { get; set; }\n        public string Extension { get; set; }\n        public byte[] Photo { get; set; }\n        public string Notes { get; set; }\n        public Nullable<int> Reports_To { get; set; }\n    \n        public virtual ICollection<Order> Orders { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.Context.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Data.Entity;\n    using System.Data.Entity.Infrastructure;\n    \n    public partial class NorthwindEntities : DbContext\n    {\n        public NorthwindEntities()\n            : base(\"name=NorthwindEntities\")\n        {\n        }\n    \n        protected override void OnModelCreating(DbModelBuilder modelBuilder)\n        {\n            throw new UnintentionalCodeFirstException();\n        }\n    \n        public DbSet<Category> Categories { get; set; }\n        public DbSet<Customer> Customers { get; set; }\n        public DbSet<Employee> Employees { get; set; }\n        public DbSet<Order_Detail> Order_Details { get; set; }\n        public DbSet<Order> Orders { get; set; }\n        public DbSet<Product> Products { get; set; }\n        public DbSet<Shipper> Shippers { get; set; }\n        public DbSet<Supplier> Suppliers { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.Context.tt",
    "content": "﻿<#@ template language=\"C#\" debug=\"false\" hostspecific=\"true\"#>\n<#@ include file=\"EF.Utility.CS.ttinclude\"#><#@\n output extension=\".cs\"#><#\n\nconst string inputFile = @\"Northwind.edmx\";\nvar textTransform = DynamicTextTransformation.Create(this);\nvar code = new CodeGenerationTools(this);\nvar ef = new MetadataTools(this);\nvar typeMapper = new TypeMapper(code, ef, textTransform.Errors);\nvar loader = new EdmMetadataLoader(textTransform.Host, textTransform.Errors);\nvar itemCollection = loader.CreateEdmItemCollection(inputFile);\nvar modelNamespace = loader.GetModelNamespace(inputFile);\nvar codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);\n\nvar container = itemCollection.OfType<EntityContainer>().FirstOrDefault();\nif (container == null)\n{\n    return string.Empty;\n}\n#>\n//------------------------------------------------------------------------------\n// <auto-generated>\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine1\")#>\n//\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine2\")#>\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine3\")#>\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n<#\n\nvar codeNamespace = code.VsNamespaceSuggestion();\nif (!String.IsNullOrEmpty(codeNamespace))\n{\n#>\nnamespace <#=code.EscapeNamespace(codeNamespace)#>\n{\n<#\n    PushIndent(\"    \");\n}\n\n#>\nusing System;\nusing System.Data.Entity;\nusing System.Data.Entity.Infrastructure;\n<#\nif (container.FunctionImports.Any())\n{\n#>\nusing System.Data.Objects;\nusing System.Data.Objects.DataClasses;\nusing System.Linq;\n<#\n}\n#>\n\n<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext\n{\n    public <#=code.Escape(container)#>()\n        : base(\"name=<#=container.Name#>\")\n    {\n<#\nif (!loader.IsLazyLoadingEnabled(container))\n{\n#>\n        this.Configuration.LazyLoadingEnabled = false;\n<#\n}\n#>\n    }\n\n    protected override void OnModelCreating(DbModelBuilder modelBuilder)\n    {\n        throw new UnintentionalCodeFirstException();\n    }\n\n<#\n    foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())\n    {\n#>\n    <#=codeStringGenerator.DbSet(entitySet)#>\n<#\n    }\n\n    foreach (var edmFunction in container.FunctionImports)\n    {\n        WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: false);\n    }\n#>\n}\n<#\n\nif (!String.IsNullOrEmpty(codeNamespace))\n{\n    PopIndent();\n#>\n}\n<#\n}\n#>\n<#+\n\nprivate void WriteFunctionImport(TypeMapper typeMapper, CodeStringGenerator codeStringGenerator, EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)\n{\n    if (typeMapper.IsComposable(edmFunction))\n    {\n#>\n\n    [EdmFunction(\"<#=edmFunction.NamespaceName#>\", \"<#=edmFunction.Name#>\")]\n    <#=codeStringGenerator.ComposableFunctionMethod(edmFunction, modelNamespace)#>\n    {\n<#+\n        codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);\n#>\n        <#=codeStringGenerator.ComposableCreateQuery(edmFunction, modelNamespace)#>\n    }\n<#+\n    }\n    else\n    {\n#>\n\n    <#=codeStringGenerator.FunctionMethod(edmFunction, modelNamespace, includeMergeOption)#>\n    {\n<#+\n        codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);\n#>\n        <#=codeStringGenerator.ExecuteFunction(edmFunction, modelNamespace, includeMergeOption)#>\n    }\n<#+\n        if (typeMapper.GenerateMergeOptionFunction(edmFunction, includeMergeOption))\n        {\n            WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: true);\n        }\n    }\n}\n\npublic void WriteFunctionParameter(string name, string isNotNull, string notNullInit, string nullInit)\n{\n#>\n        var <#=name#> = <#=isNotNull#> ?\n            <#=notNullInit#> :\n            <#=nullInit#>;\n\n<#+\n}\n\npublic const string TemplateId = \"CSharp_DbContext_Context_EF5\";\n\npublic class CodeStringGenerator\n{\n    private readonly CodeGenerationTools _code;\n    private readonly TypeMapper _typeMapper;\n    private readonly MetadataTools _ef;\n\n    public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)\n    {\n        ArgumentNotNull(code, \"code\");\n        ArgumentNotNull(typeMapper, \"typeMapper\");\n        ArgumentNotNull(ef, \"ef\");\n\n        _code = code;\n        _typeMapper = typeMapper;\n        _ef = ef;\n    }\n\n    public string Property(EdmProperty edmProperty)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2} {{ {3}get; {4}set; }}\",\n            Accessibility.ForProperty(edmProperty),\n            _typeMapper.GetTypeName(edmProperty.TypeUsage),\n            _code.Escape(edmProperty),\n            _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),\n            _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));\n    }\n\n    public string NavigationProperty(NavigationProperty navigationProperty)\n    {\n        var endType = _typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType());\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2} {{ {3}get; {4}set; }}\",\n            AccessibilityAndVirtual(Accessibility.ForProperty(navigationProperty)),\n            navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? (\"ICollection<\" + endType + \">\") : endType,\n            _code.Escape(navigationProperty),\n            _code.SpaceAfter(Accessibility.ForGetter(navigationProperty)),\n            _code.SpaceAfter(Accessibility.ForSetter(navigationProperty)));\n    }\n    \n    public string AccessibilityAndVirtual(string accessibility)\n    {\n        return accessibility + (accessibility != \"private\" ? \" virtual\" : \"\");\n    }\n    \n    public string EntityClassOpening(EntityType entity)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1}partial class {2}{3}\",\n            Accessibility.ForType(entity),\n            _code.SpaceAfter(_code.AbstractOption(entity)),\n            _code.Escape(entity),\n            _code.StringBefore(\" : \", _typeMapper.GetTypeName(entity.BaseType)));\n    }\n    \n    public string EnumOpening(SimpleType enumType)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} enum {1} : {2}\",\n            Accessibility.ForType(enumType),\n            _code.Escape(enumType),\n            _code.Escape(_typeMapper.UnderlyingClrType(enumType)));\n        }\n    \n    public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)\n    {\n        var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);\n        foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))\n        {\n            var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + \".HasValue\" : parameter.FunctionParameterName + \" != null\";\n            var notNullInit = \"new ObjectParameter(\\\"\" + parameter.EsqlParameterName + \"\\\", \" + parameter.FunctionParameterName + \")\";\n            var nullInit = \"new ObjectParameter(\\\"\" + parameter.EsqlParameterName + \"\\\", typeof(\" + parameter.RawClrTypeName + \"))\";\n            writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);\n        }\n    }\n    \n    public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} IQueryable<{1}> {2}({3})\",\n            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),\n            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),\n            _code.Escape(edmFunction),\n            string.Join(\", \", parameters.Select(p => p.FunctionParameterType + \" \" + p.FunctionParameterName).ToArray()));\n    }\n    \n    public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\\\"[{1}].[{2}]({3})\\\"{4});\",\n            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),\n            edmFunction.NamespaceName,\n            edmFunction.Name,\n            string.Join(\", \", parameters.Select(p => \"@\" + p.EsqlParameterName).ToArray()),\n            _code.StringBefore(\", \", string.Join(\", \", parameters.Select(p => p.ExecuteParameterName).ToArray())));\n    }\n    \n    public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        var returnType = _typeMapper.GetReturnType(edmFunction);\n\n        var paramList = String.Join(\", \", parameters.Select(p => p.FunctionParameterType + \" \" + p.FunctionParameterName).ToArray());\n        if (includeMergeOption)\n        {\n            paramList = _code.StringAfter(paramList, \", \") + \"MergeOption mergeOption\";\n        }\n\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2}({3})\",\n            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),\n            returnType == null ? \"int\" : \"ObjectResult<\" + _typeMapper.GetTypeName(returnType, modelNamespace) + \">\",\n            _code.Escape(edmFunction),\n            paramList);\n    }\n    \n    public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        var returnType = _typeMapper.GetReturnType(edmFunction);\n\n        var callParams = _code.StringBefore(\", \", String.Join(\", \", parameters.Select(p => p.ExecuteParameterName).ToArray()));\n        if (includeMergeOption)\n        {\n            callParams = \", mergeOption\" + callParams;\n        }\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\\\"{1}\\\"{2});\",\n            returnType == null ? \"\" : \"<\" + _typeMapper.GetTypeName(returnType, modelNamespace) + \">\",\n            edmFunction.Name,\n            callParams);\n    }\n    \n    public string DbSet(EntitySet entitySet)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} DbSet<{1}> {2} {{ get; set; }}\",\n            Accessibility.ForReadOnlyProperty(entitySet),\n            _typeMapper.GetTypeName(entitySet.ElementType),\n            _code.Escape(entitySet));\n    }\n\n    public string UsingDirectives(bool inHeader, bool includeCollections = true)\n    {\n        return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())\n            ? string.Format(\n                CultureInfo.InvariantCulture,\n                \"{0}using System;{1}\" +\n                \"{2}\",\n                inHeader ? Environment.NewLine : \"\",\n                includeCollections ? (Environment.NewLine + \"using System.Collections.Generic;\") : \"\",\n                inHeader ? \"\" : Environment.NewLine)\n            : \"\";\n    }\n}\n\npublic class TypeMapper\n{\n    private const string ExternalTypeNameAttributeName = @\"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName\";\n\n    private readonly System.Collections.IList _errors;\n    private readonly CodeGenerationTools _code;\n    private readonly MetadataTools _ef;\n\n    public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)\n    {\n        ArgumentNotNull(code, \"code\");\n        ArgumentNotNull(ef, \"ef\");\n        ArgumentNotNull(errors, \"errors\");\n\n        _code = code;\n        _ef = ef;\n        _errors = errors;\n    }\n\n    public string GetTypeName(TypeUsage typeUsage)\n    {\n        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);\n    }\n\n    public string GetTypeName(EdmType edmType)\n    {\n        return GetTypeName(edmType, isNullable: null, modelNamespace: null);\n    }\n\n    public string GetTypeName(TypeUsage typeUsage, string modelNamespace)\n    {\n        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);\n    }\n\n    public string GetTypeName(EdmType edmType, string modelNamespace)\n    {\n        return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);\n    }\n\n    public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)\n    {\n        if (edmType == null)\n        {\n            return null;\n        }\n\n        var collectionType = edmType as CollectionType;\n        if (collectionType != null)\n        {\n            return String.Format(CultureInfo.InvariantCulture, \"ICollection<{0}>\", GetTypeName(collectionType.TypeUsage, modelNamespace));\n        }\n\n        var typeName = _code.Escape(edmType.MetadataProperties\n                                .Where(p => p.Name == ExternalTypeNameAttributeName)\n                                .Select(p => (string)p.Value)\n                                .FirstOrDefault())\n            ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?\n                _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :\n                _code.Escape(edmType));\n\n        if (edmType is StructuralType)\n        {\n            return typeName;\n        }\n\n        if (edmType is SimpleType)\n        {\n            var clrType = UnderlyingClrType(edmType);\n            if (!IsEnumType(edmType))\n            {\n                typeName = _code.Escape(clrType);\n            }\n\n            return clrType.IsValueType && isNullable == true ?\n                String.Format(CultureInfo.InvariantCulture, \"Nullable<{0}>\", typeName) :\n                typeName;\n        }\n\n        throw new ArgumentException(\"edmType\");\n    }\n    \n    public Type UnderlyingClrType(EdmType edmType)\n    {\n        ArgumentNotNull(edmType, \"edmType\");\n\n        var primitiveType = edmType as PrimitiveType;\n        if (primitiveType != null)\n        {\n            return primitiveType.ClrEquivalentType;\n        }\n\n        if (IsEnumType(edmType))\n        {\n            return GetEnumUnderlyingType(edmType).ClrEquivalentType;\n        }\n\n        return typeof(object);\n    }\n    \n    public object GetEnumMemberValue(MetadataItem enumMember)\n    {\n        ArgumentNotNull(enumMember, \"enumMember\");\n        \n        var valueProperty = enumMember.GetType().GetProperty(\"Value\");\n        return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);\n    }\n    \n    public string GetEnumMemberName(MetadataItem enumMember)\n    {\n        ArgumentNotNull(enumMember, \"enumMember\");\n        \n        var nameProperty = enumMember.GetType().GetProperty(\"Name\");\n        return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);\n    }\n\n    public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n\n        var membersProperty = enumType.GetType().GetProperty(\"Members\");\n        return membersProperty != null \n            ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)\n            : Enumerable.Empty<MetadataItem>();\n    }\n    \n    public bool EnumIsFlags(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n        \n        var isFlagsProperty = enumType.GetType().GetProperty(\"IsFlags\");\n        return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);\n    }\n\n    public bool IsEnumType(GlobalItem edmType)\n    {\n        ArgumentNotNull(edmType, \"edmType\");\n\n        return edmType.GetType().Name == \"EnumType\";\n    }\n\n    public PrimitiveType GetEnumUnderlyingType(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n\n        return (PrimitiveType)enumType.GetType().GetProperty(\"UnderlyingType\").GetValue(enumType, null);\n    }\n\n    public string CreateLiteral(object value)\n    {\n        if (value == null || value.GetType() != typeof(TimeSpan))\n        {\n            return _code.CreateLiteral(value);\n        }\n\n        return string.Format(CultureInfo.InvariantCulture, \"new TimeSpan({0})\", ((TimeSpan)value).Ticks);\n    }\n    \n    public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)\n    {\n        ArgumentNotNull(types, \"types\");\n        ArgumentNotNull(sourceFile, \"sourceFile\");\n        \n        var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);\n        if (types.Any(item => !hash.Add(item)))\n        {\n            _errors.Add(\n                new CompilerError(sourceFile, -1, -1, \"6023\",\n                    String.Format(CultureInfo.CurrentCulture, GetResourceString(\"Template_CaseInsensitiveTypeConflict\"))));\n            return false;\n        }\n        return true;\n    }\n    \n    public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)\n    {\n        return GetItemsToGenerate<SimpleType>(itemCollection)\n            .Where(e => IsEnumType(e));\n    }\n    \n    public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType\n    {\n        return itemCollection\n            .OfType<T>()\n            .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))\n            .OrderBy(i => i.Name);\n    }\n\n    public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)\n    {\n        return itemCollection\n            .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))\n            .Select(g => GetGlobalItemName(g));\n    }\n\n    public string GetGlobalItemName(GlobalItem item)\n    {\n        if (item is EdmType)\n        {\n            return ((EdmType)item).Name;\n        }\n        else\n        {\n            return ((EntityContainer)item).Name;\n        }\n    }\n\n    public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);\n    }\n\n    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);\n    }\n    \n    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);\n    }\n\n    public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)\n    {\n        return type.NavigationProperties.Where(np => np.DeclaringType == type);\n    }\n    \n    public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)\n    {\n        return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);\n    }\n    \n    public FunctionParameter GetReturnParameter(EdmFunction edmFunction)\n    {\n        ArgumentNotNull(edmFunction, \"edmFunction\");\n\n        var returnParamsProperty = edmFunction.GetType().GetProperty(\"ReturnParameters\");\n        return returnParamsProperty == null\n            ? edmFunction.ReturnParameter\n            : ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();\n    }\n\n    public bool IsComposable(EdmFunction edmFunction)\n    {\n        ArgumentNotNull(edmFunction, \"edmFunction\");\n\n        var isComposableProperty = edmFunction.GetType().GetProperty(\"IsComposableAttribute\");\n        return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);\n    }\n\n    public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)\n    {\n        return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);\n    }\n\n    public TypeUsage GetReturnType(EdmFunction edmFunction)\n    {\n        var returnParam = GetReturnParameter(edmFunction);\n        return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);\n    }\n    \n    public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)\n    {\n        var returnType = GetReturnType(edmFunction);\n        return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;\n    }\n}\n\npublic class EdmMetadataLoader\n{\n    private readonly IDynamicHost _host;\n    private readonly System.Collections.IList _errors;\n\n    public EdmMetadataLoader(IDynamicHost host, System.Collections.IList errors)\n    {\n        ArgumentNotNull(host, \"host\");\n        ArgumentNotNull(errors, \"errors\");\n\n        _host = host;\n        _errors = errors;\n    }\n\n    public IEnumerable<GlobalItem> CreateEdmItemCollection(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        if (!ValidateInputPath(sourcePath))\n        {\n            return new EdmItemCollection();\n        }\n\n        var schemaElement = LoadRootElement(_host.ResolvePath(sourcePath));\n        if (schemaElement != null)\n        {\n            using (var reader = schemaElement.CreateReader())\n            {\n                IList<EdmSchemaError> errors;\n                var itemCollection = MetadataItemCollectionFactory.CreateEdmItemCollection(new[] { reader }, out errors);\n\n                ProcessErrors(errors, sourcePath);\n\n                return itemCollection;\n            }\n        }\n        return new EdmItemCollection();\n    }\n\n    public string GetModelNamespace(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        if (!ValidateInputPath(sourcePath))\n        {\n            return string.Empty;\n        }\n\n        var model = LoadRootElement(_host.ResolvePath(sourcePath));\n        if (model == null)\n        {\n            return string.Empty;\n        }\n\n        var attribute = model.Attribute(\"Namespace\");\n        return attribute != null ? attribute.Value : \"\";\n    }\n\n    private bool ValidateInputPath(string sourcePath)\n    {\n        if (sourcePath == \"$\" + \"edmxInputFile\" + \"$\")\n        {\n            _errors.Add(\n                new CompilerError(_host.TemplateFile ?? sourcePath, 0, 0, string.Empty,\n                    GetResourceString(\"Template_ReplaceVsItemTemplateToken\")));\n            return false;\n        }\n\n        return true;\n    }\n\n    public XElement LoadRootElement(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        var root = XElement.Load(sourcePath, LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);\n        return root.Elements()\n            .Where(e => e.Name.LocalName == \"Runtime\")\n            .Elements()\n            .Where(e => e.Name.LocalName == \"ConceptualModels\")\n            .Elements()\n            .Where(e => e.Name.LocalName == \"Schema\")\n            .FirstOrDefault()\n                ?? root;\n    }\n\n    private void ProcessErrors(IEnumerable<EdmSchemaError> errors, string sourceFilePath)\n    {\n        foreach (var error in errors)\n        {\n            _errors.Add(\n                new CompilerError(\n                    error.SchemaLocation ?? sourceFilePath,\n                    error.Line,\n                    error.Column,\n                    error.ErrorCode.ToString(CultureInfo.InvariantCulture),\n                    error.Message)\n                {\n                    IsWarning = error.Severity == EdmSchemaErrorSeverity.Warning\n                });\n        }\n    }\n    \n    public bool IsLazyLoadingEnabled(EntityContainer container)\n    {\n        string lazyLoadingAttributeValue;\n        var lazyLoadingAttributeName = MetadataConstants.EDM_ANNOTATION_09_02 + \":LazyLoadingEnabled\";\n        bool isLazyLoading;\n        return !MetadataTools.TryGetStringMetadataPropertySetting(container, lazyLoadingAttributeName, out lazyLoadingAttributeValue)\n            || !bool.TryParse(lazyLoadingAttributeValue, out isLazyLoading)\n            || isLazyLoading;\n    }\n}\n\npublic static void ArgumentNotNull<T>(T arg, string name) where T : class\n{\n    if (arg == null)\n    {\n        throw new ArgumentNullException(name);\n    }\n}\n    \nprivate static readonly Lazy<System.Resources.ResourceManager> ResourceManager =\n    new Lazy<System.Resources.ResourceManager>(\n        () => new System.Resources.ResourceManager(\"System.Data.Entity.Design\", typeof(MetadataItemCollectionFactory).Assembly), isThreadSafe: true);\n\npublic static string GetResourceString(string resourceName)\n{\n    ArgumentNotNull(resourceName, \"resourceName\");\n\n    return ResourceManager.Value.GetString(resourceName, null);\n}\n\n#>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.Designer.cs",
    "content": "﻿// Default code generation is disabled for model 'C:\\WP8 Developer Training Final\\S12 Network Communication\\Demos\\Demo 6 Wire Serialization\\WireSerialization\\NorthwindService\\Northwind.edmx'. \n// To enable default code generation, change the value of the 'Code Generation Strategy' designer\n// property to an alternate value. This property is available in the Properties Window when the model is\n// open in the designer."
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.edmx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<edmx:Edmx Version=\"2.0\" xmlns:edmx=\"http://schemas.microsoft.com/ado/2008/10/edmx\">\n  <!-- EF Runtime content -->\n  <edmx:Runtime>\n    <!-- SSDL content -->\n    <edmx:StorageModels>\n      <Schema Namespace=\"NorthwindModel.Store\" Alias=\"Self\" Provider=\"System.Data.SqlServerCe.4.0\" ProviderManifestToken=\"4.0\" xmlns:store=\"http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator\" xmlns=\"http://schemas.microsoft.com/ado/2009/02/edm/ssdl\">\n        <EntityContainer Name=\"NorthwindModelStoreContainer\">\n          <EntitySet Name=\"Categories\" EntityType=\"NorthwindModel.Store.Categories\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Customers\" EntityType=\"NorthwindModel.Store.Customers\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Employees\" EntityType=\"NorthwindModel.Store.Employees\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Order Details\" EntityType=\"NorthwindModel.Store.Order Details\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Orders\" EntityType=\"NorthwindModel.Store.Orders\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Products\" EntityType=\"NorthwindModel.Store.Products\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Shippers\" EntityType=\"NorthwindModel.Store.Shippers\" store:Type=\"Tables\" />\n          <EntitySet Name=\"Suppliers\" EntityType=\"NorthwindModel.Store.Suppliers\" store:Type=\"Tables\" />\n          <AssociationSet Name=\"Order Details_FK00\" Association=\"NorthwindModel.Store.Order Details_FK00\">\n            <End Role=\"Products\" EntitySet=\"Products\" />\n            <End Role=\"Order Details\" EntitySet=\"Order Details\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Order Details_FK01\" Association=\"NorthwindModel.Store.Order Details_FK01\">\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n            <End Role=\"Order Details\" EntitySet=\"Order Details\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK00\" Association=\"NorthwindModel.Store.Orders_FK00\">\n            <End Role=\"Customers\" EntitySet=\"Customers\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK01\" Association=\"NorthwindModel.Store.Orders_FK01\">\n            <End Role=\"Shippers\" EntitySet=\"Shippers\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK02\" Association=\"NorthwindModel.Store.Orders_FK02\">\n            <End Role=\"Employees\" EntitySet=\"Employees\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Products_FK00\" Association=\"NorthwindModel.Store.Products_FK00\">\n            <End Role=\"Suppliers\" EntitySet=\"Suppliers\" />\n            <End Role=\"Products\" EntitySet=\"Products\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Products_FK01\" Association=\"NorthwindModel.Store.Products_FK01\">\n            <End Role=\"Categories\" EntitySet=\"Categories\" />\n            <End Role=\"Products\" EntitySet=\"Products\" />\n          </AssociationSet>\n        </EntityContainer>\n        <EntityType Name=\"Categories\">\n          <Key>\n            <PropertyRef Name=\"Category ID\" />\n          </Key>\n          <Property Name=\"Category ID\" Type=\"int\" Nullable=\"false\" StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Category Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"15\" />\n          <Property Name=\"Description\" Type=\"ntext\" />\n          <Property Name=\"Picture\" Type=\"image\" />\n        </EntityType>\n        <EntityType Name=\"Customers\">\n          <Key>\n            <PropertyRef Name=\"Customer ID\" />\n          </Key>\n          <Property Name=\"Customer ID\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"5\" />\n          <Property Name=\"Company Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"40\" />\n          <Property Name=\"Contact Name\" Type=\"nvarchar\" MaxLength=\"30\" />\n          <Property Name=\"Contact Title\" Type=\"nvarchar\" MaxLength=\"30\" />\n          <Property Name=\"Address\" Type=\"nvarchar\" MaxLength=\"60\" />\n          <Property Name=\"City\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Region\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Postal Code\" Type=\"nvarchar\" MaxLength=\"10\" />\n          <Property Name=\"Country\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Phone\" Type=\"nvarchar\" MaxLength=\"24\" />\n          <Property Name=\"Fax\" Type=\"nvarchar\" MaxLength=\"24\" />\n        </EntityType>\n        <EntityType Name=\"Employees\">\n          <Key>\n            <PropertyRef Name=\"Employee ID\" />\n          </Key>\n          <Property Name=\"Employee ID\" Type=\"int\" Nullable=\"false\" StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Last Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"20\" />\n          <Property Name=\"First Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"10\" />\n          <Property Name=\"Title\" Type=\"nvarchar\" MaxLength=\"30\" />\n          <Property Name=\"Birth Date\" Type=\"datetime\" />\n          <Property Name=\"Hire Date\" Type=\"datetime\" />\n          <Property Name=\"Address\" Type=\"nvarchar\" MaxLength=\"60\" />\n          <Property Name=\"City\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Region\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Postal Code\" Type=\"nvarchar\" MaxLength=\"10\" />\n          <Property Name=\"Country\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Home Phone\" Type=\"nvarchar\" MaxLength=\"24\" />\n          <Property Name=\"Extension\" Type=\"nvarchar\" MaxLength=\"4\" />\n          <Property Name=\"Photo\" Type=\"image\" />\n          <Property Name=\"Notes\" Type=\"ntext\" />\n          <Property Name=\"Reports To\" Type=\"int\" />\n        </EntityType>\n        <EntityType Name=\"Order Details\">\n          <Key>\n            <PropertyRef Name=\"Order ID\" />\n            <PropertyRef Name=\"Product ID\" />\n          </Key>\n          <Property Name=\"Order ID\" Type=\"int\" Nullable=\"false\" />\n          <Property Name=\"Product ID\" Type=\"int\" Nullable=\"false\" />\n          <Property Name=\"Unit Price\" Type=\"money\" Nullable=\"false\" />\n          <Property Name=\"Quantity\" Type=\"smallint\" Nullable=\"false\" />\n          <Property Name=\"Discount\" Type=\"real\" Nullable=\"false\" />\n        </EntityType>\n        <EntityType Name=\"Orders\">\n          <Key>\n            <PropertyRef Name=\"Order ID\" />\n          </Key>\n          <Property Name=\"Order ID\" Type=\"int\" Nullable=\"false\" />\n          <Property Name=\"Customer ID\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"5\" />\n          <Property Name=\"Employee ID\" Type=\"int\" />\n          <Property Name=\"Ship Name\" Type=\"nvarchar\" MaxLength=\"40\" />\n          <Property Name=\"Ship Address\" Type=\"nvarchar\" MaxLength=\"60\" />\n          <Property Name=\"Ship City\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Ship Region\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Ship Postal Code\" Type=\"nvarchar\" MaxLength=\"10\" />\n          <Property Name=\"Ship Country\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Ship Via\" Type=\"int\" />\n          <Property Name=\"Order Date\" Type=\"datetime\" />\n          <Property Name=\"Required Date\" Type=\"datetime\" />\n          <Property Name=\"Shipped Date\" Type=\"datetime\" />\n          <Property Name=\"Freight\" Type=\"money\" />\n        </EntityType>\n        <EntityType Name=\"Products\">\n          <Key>\n            <PropertyRef Name=\"Product ID\" />\n          </Key>\n          <Property Name=\"Product ID\" Type=\"int\" Nullable=\"false\" StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Supplier ID\" Type=\"int\" />\n          <Property Name=\"Category ID\" Type=\"int\" />\n          <Property Name=\"Product Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"40\" />\n          <Property Name=\"English Name\" Type=\"nvarchar\" MaxLength=\"40\" />\n          <Property Name=\"Quantity Per Unit\" Type=\"nvarchar\" MaxLength=\"20\" />\n          <Property Name=\"Unit Price\" Type=\"money\" />\n          <Property Name=\"Units In Stock\" Type=\"smallint\" />\n          <Property Name=\"Units On Order\" Type=\"smallint\" />\n          <Property Name=\"Reorder Level\" Type=\"smallint\" />\n          <Property Name=\"Discontinued\" Type=\"bit\" Nullable=\"false\" />\n        </EntityType>\n        <EntityType Name=\"Shippers\">\n          <Key>\n            <PropertyRef Name=\"Shipper ID\" />\n          </Key>\n          <Property Name=\"Shipper ID\" Type=\"int\" Nullable=\"false\" StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Company Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"40\" />\n        </EntityType>\n        <EntityType Name=\"Suppliers\">\n          <Key>\n            <PropertyRef Name=\"Supplier ID\" />\n          </Key>\n          <Property Name=\"Supplier ID\" Type=\"int\" Nullable=\"false\" StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Company Name\" Type=\"nvarchar\" Nullable=\"false\" MaxLength=\"40\" />\n          <Property Name=\"Contact Name\" Type=\"nvarchar\" MaxLength=\"30\" />\n          <Property Name=\"Contact Title\" Type=\"nvarchar\" MaxLength=\"30\" />\n          <Property Name=\"Address\" Type=\"nvarchar\" MaxLength=\"60\" />\n          <Property Name=\"City\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Region\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Postal Code\" Type=\"nvarchar\" MaxLength=\"10\" />\n          <Property Name=\"Country\" Type=\"nvarchar\" MaxLength=\"15\" />\n          <Property Name=\"Phone\" Type=\"nvarchar\" MaxLength=\"24\" />\n          <Property Name=\"Fax\" Type=\"nvarchar\" MaxLength=\"24\" />\n        </EntityType>\n        <Association Name=\"Order Details_FK00\">\n          <End Role=\"Products\" Type=\"NorthwindModel.Store.Products\" Multiplicity=\"1\" />\n          <End Role=\"Order Details\" Type=\"NorthwindModel.Store.Order Details\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Products\">\n              <PropertyRef Name=\"Product ID\" />\n            </Principal>\n            <Dependent Role=\"Order Details\">\n              <PropertyRef Name=\"Product ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Order Details_FK01\">\n          <End Role=\"Orders\" Type=\"NorthwindModel.Store.Orders\" Multiplicity=\"1\">\n            <OnDelete Action=\"Cascade\" />\n          </End>\n          <End Role=\"Order Details\" Type=\"NorthwindModel.Store.Order Details\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Orders\">\n              <PropertyRef Name=\"Order ID\" />\n            </Principal>\n            <Dependent Role=\"Order Details\">\n              <PropertyRef Name=\"Order ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK00\">\n          <End Role=\"Customers\" Type=\"NorthwindModel.Store.Customers\" Multiplicity=\"1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Store.Orders\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Customers\">\n              <PropertyRef Name=\"Customer ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Customer ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK01\">\n          <End Role=\"Shippers\" Type=\"NorthwindModel.Store.Shippers\" Multiplicity=\"0..1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Store.Orders\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Shippers\">\n              <PropertyRef Name=\"Shipper ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Ship Via\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK02\">\n          <End Role=\"Employees\" Type=\"NorthwindModel.Store.Employees\" Multiplicity=\"0..1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Store.Orders\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Employees\">\n              <PropertyRef Name=\"Employee ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Employee ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Products_FK00\">\n          <End Role=\"Suppliers\" Type=\"NorthwindModel.Store.Suppliers\" Multiplicity=\"0..1\" />\n          <End Role=\"Products\" Type=\"NorthwindModel.Store.Products\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Suppliers\">\n              <PropertyRef Name=\"Supplier ID\" />\n            </Principal>\n            <Dependent Role=\"Products\">\n              <PropertyRef Name=\"Supplier ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Products_FK01\">\n          <End Role=\"Categories\" Type=\"NorthwindModel.Store.Categories\" Multiplicity=\"0..1\" />\n          <End Role=\"Products\" Type=\"NorthwindModel.Store.Products\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Categories\">\n              <PropertyRef Name=\"Category ID\" />\n            </Principal>\n            <Dependent Role=\"Products\">\n              <PropertyRef Name=\"Category ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n      </Schema>\n    </edmx:StorageModels>\n    <!-- CSDL content -->\n    <edmx:ConceptualModels>\n      <Schema Namespace=\"NorthwindModel\" Alias=\"Self\" xmlns:annotation=\"http://schemas.microsoft.com/ado/2009/02/edm/annotation\" xmlns=\"http://schemas.microsoft.com/ado/2008/09/edm\">\n        <EntityContainer Name=\"NorthwindEntities\" annotation:LazyLoadingEnabled=\"true\">\n          <EntitySet Name=\"Categories\" EntityType=\"NorthwindModel.Category\" />\n          <EntitySet Name=\"Customers\" EntityType=\"NorthwindModel.Customer\" />\n          <EntitySet Name=\"Employees\" EntityType=\"NorthwindModel.Employee\" />\n          <EntitySet Name=\"Order_Details\" EntityType=\"NorthwindModel.Order_Detail\" />\n          <EntitySet Name=\"Orders\" EntityType=\"NorthwindModel.Order\" />\n          <EntitySet Name=\"Products\" EntityType=\"NorthwindModel.Product\" />\n          <EntitySet Name=\"Shippers\" EntityType=\"NorthwindModel.Shipper\" />\n          <EntitySet Name=\"Suppliers\" EntityType=\"NorthwindModel.Supplier\" />\n          <AssociationSet Name=\"Products_FK01\" Association=\"NorthwindModel.Products_FK01\">\n            <End Role=\"Categories\" EntitySet=\"Categories\" />\n            <End Role=\"Products\" EntitySet=\"Products\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK00\" Association=\"NorthwindModel.Orders_FK00\">\n            <End Role=\"Customers\" EntitySet=\"Customers\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK02\" Association=\"NorthwindModel.Orders_FK02\">\n            <End Role=\"Employees\" EntitySet=\"Employees\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Order_Details_FK00\" Association=\"NorthwindModel.Order_Details_FK00\">\n            <End Role=\"Products\" EntitySet=\"Products\" />\n            <End Role=\"Order_Details\" EntitySet=\"Order_Details\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Order_Details_FK01\" Association=\"NorthwindModel.Order_Details_FK01\">\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n            <End Role=\"Order_Details\" EntitySet=\"Order_Details\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Orders_FK01\" Association=\"NorthwindModel.Orders_FK01\">\n            <End Role=\"Shippers\" EntitySet=\"Shippers\" />\n            <End Role=\"Orders\" EntitySet=\"Orders\" />\n          </AssociationSet>\n          <AssociationSet Name=\"Products_FK00\" Association=\"NorthwindModel.Products_FK00\">\n            <End Role=\"Suppliers\" EntitySet=\"Suppliers\" />\n            <End Role=\"Products\" EntitySet=\"Products\" />\n          </AssociationSet>\n        </EntityContainer>\n        <EntityType Name=\"Category\">\n          <Key>\n            <PropertyRef Name=\"Category_ID\" />\n          </Key>\n          <Property Name=\"Category_ID\" Type=\"Int32\" Nullable=\"false\" annotation:StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Category_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Description\" Type=\"String\" MaxLength=\"Max\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Picture\" Type=\"Binary\" MaxLength=\"Max\" FixedLength=\"false\" />\n          <NavigationProperty Name=\"Products\" Relationship=\"NorthwindModel.Products_FK01\" FromRole=\"Categories\" ToRole=\"Products\" />\n        </EntityType>\n        <EntityType Name=\"Customer\">\n          <Key>\n            <PropertyRef Name=\"Customer_ID\" />\n          </Key>\n          <Property Name=\"Customer_ID\" Type=\"String\" Nullable=\"false\" MaxLength=\"5\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Company_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Contact_Name\" Type=\"String\" MaxLength=\"30\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Contact_Title\" Type=\"String\" MaxLength=\"30\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Address\" Type=\"String\" MaxLength=\"60\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"City\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Region\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Postal_Code\" Type=\"String\" MaxLength=\"10\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Country\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Phone\" Type=\"String\" MaxLength=\"24\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Fax\" Type=\"String\" MaxLength=\"24\" Unicode=\"true\" FixedLength=\"false\" />\n          <NavigationProperty Name=\"Orders\" Relationship=\"NorthwindModel.Orders_FK00\" FromRole=\"Customers\" ToRole=\"Orders\" />\n        </EntityType>\n        <EntityType Name=\"Employee\">\n          <Key>\n            <PropertyRef Name=\"Employee_ID\" />\n          </Key>\n          <Property Name=\"Employee_ID\" Type=\"Int32\" Nullable=\"false\" annotation:StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Last_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"20\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"First_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"10\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Title\" Type=\"String\" MaxLength=\"30\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Birth_Date\" Type=\"DateTime\" Precision=\"3\" />\n          <Property Name=\"Hire_Date\" Type=\"DateTime\" Precision=\"3\" />\n          <Property Name=\"Address\" Type=\"String\" MaxLength=\"60\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"City\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Region\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Postal_Code\" Type=\"String\" MaxLength=\"10\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Country\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Home_Phone\" Type=\"String\" MaxLength=\"24\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Extension\" Type=\"String\" MaxLength=\"4\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Photo\" Type=\"Binary\" MaxLength=\"Max\" FixedLength=\"false\" />\n          <Property Name=\"Notes\" Type=\"String\" MaxLength=\"Max\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Reports_To\" Type=\"Int32\" />\n          <NavigationProperty Name=\"Orders\" Relationship=\"NorthwindModel.Orders_FK02\" FromRole=\"Employees\" ToRole=\"Orders\" />\n        </EntityType>\n        <EntityType Name=\"Order_Detail\">\n          <Key>\n            <PropertyRef Name=\"Order_ID\" />\n            <PropertyRef Name=\"Product_ID\" />\n          </Key>\n          <Property Name=\"Order_ID\" Type=\"Int32\" Nullable=\"false\" />\n          <Property Name=\"Product_ID\" Type=\"Int32\" Nullable=\"false\" />\n          <Property Name=\"Unit_Price\" Type=\"Decimal\" Nullable=\"false\" Precision=\"19\" Scale=\"4\" />\n          <Property Name=\"Quantity\" Type=\"Int16\" Nullable=\"false\" />\n          <Property Name=\"Discount\" Type=\"Single\" Nullable=\"false\" />\n          <NavigationProperty Name=\"Product\" Relationship=\"NorthwindModel.Order_Details_FK00\" FromRole=\"Order_Details\" ToRole=\"Products\" />\n          <NavigationProperty Name=\"Order\" Relationship=\"NorthwindModel.Order_Details_FK01\" FromRole=\"Order_Details\" ToRole=\"Orders\" />\n        </EntityType>\n        <EntityType Name=\"Order\">\n          <Key>\n            <PropertyRef Name=\"Order_ID\" />\n          </Key>\n          <Property Name=\"Order_ID\" Type=\"Int32\" Nullable=\"false\" />\n          <Property Name=\"Customer_ID\" Type=\"String\" Nullable=\"false\" MaxLength=\"5\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Employee_ID\" Type=\"Int32\" />\n          <Property Name=\"Ship_Name\" Type=\"String\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_Address\" Type=\"String\" MaxLength=\"60\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_City\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_Region\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_Postal_Code\" Type=\"String\" MaxLength=\"10\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_Country\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Ship_Via\" Type=\"Int32\" />\n          <Property Name=\"Order_Date\" Type=\"DateTime\" Precision=\"3\" />\n          <Property Name=\"Required_Date\" Type=\"DateTime\" Precision=\"3\" />\n          <Property Name=\"Shipped_Date\" Type=\"DateTime\" Precision=\"3\" />\n          <Property Name=\"Freight\" Type=\"Decimal\" Precision=\"19\" Scale=\"4\" />\n          <NavigationProperty Name=\"Customer\" Relationship=\"NorthwindModel.Orders_FK00\" FromRole=\"Orders\" ToRole=\"Customers\" />\n          <NavigationProperty Name=\"Employee\" Relationship=\"NorthwindModel.Orders_FK02\" FromRole=\"Orders\" ToRole=\"Employees\" />\n          <NavigationProperty Name=\"Order_Details\" Relationship=\"NorthwindModel.Order_Details_FK01\" FromRole=\"Orders\" ToRole=\"Order_Details\" />\n          <NavigationProperty Name=\"Shipper\" Relationship=\"NorthwindModel.Orders_FK01\" FromRole=\"Orders\" ToRole=\"Shippers\" />\n        </EntityType>\n        <EntityType Name=\"Product\">\n          <Key>\n            <PropertyRef Name=\"Product_ID\" />\n          </Key>\n          <Property Name=\"Product_ID\" Type=\"Int32\" Nullable=\"false\" annotation:StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Supplier_ID\" Type=\"Int32\" />\n          <Property Name=\"Category_ID\" Type=\"Int32\" />\n          <Property Name=\"Product_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"English_Name\" Type=\"String\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Quantity_Per_Unit\" Type=\"String\" MaxLength=\"20\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Unit_Price\" Type=\"Decimal\" Precision=\"19\" Scale=\"4\" />\n          <Property Name=\"Units_In_Stock\" Type=\"Int16\" />\n          <Property Name=\"Units_On_Order\" Type=\"Int16\" />\n          <Property Name=\"Reorder_Level\" Type=\"Int16\" />\n          <Property Name=\"Discontinued\" Type=\"Boolean\" Nullable=\"false\" />\n          <NavigationProperty Name=\"Category\" Relationship=\"NorthwindModel.Products_FK01\" FromRole=\"Products\" ToRole=\"Categories\" />\n          <NavigationProperty Name=\"Order_Details\" Relationship=\"NorthwindModel.Order_Details_FK00\" FromRole=\"Products\" ToRole=\"Order_Details\" />\n          <NavigationProperty Name=\"Supplier\" Relationship=\"NorthwindModel.Products_FK00\" FromRole=\"Products\" ToRole=\"Suppliers\" />\n        </EntityType>\n        <EntityType Name=\"Shipper\">\n          <Key>\n            <PropertyRef Name=\"Shipper_ID\" />\n          </Key>\n          <Property Name=\"Shipper_ID\" Type=\"Int32\" Nullable=\"false\" annotation:StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Company_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <NavigationProperty Name=\"Orders\" Relationship=\"NorthwindModel.Orders_FK01\" FromRole=\"Shippers\" ToRole=\"Orders\" />\n        </EntityType>\n        <EntityType Name=\"Supplier\">\n          <Key>\n            <PropertyRef Name=\"Supplier_ID\" />\n          </Key>\n          <Property Name=\"Supplier_ID\" Type=\"Int32\" Nullable=\"false\" annotation:StoreGeneratedPattern=\"Identity\" />\n          <Property Name=\"Company_Name\" Type=\"String\" Nullable=\"false\" MaxLength=\"40\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Contact_Name\" Type=\"String\" MaxLength=\"30\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Contact_Title\" Type=\"String\" MaxLength=\"30\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Address\" Type=\"String\" MaxLength=\"60\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"City\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Region\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Postal_Code\" Type=\"String\" MaxLength=\"10\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Country\" Type=\"String\" MaxLength=\"15\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Phone\" Type=\"String\" MaxLength=\"24\" Unicode=\"true\" FixedLength=\"false\" />\n          <Property Name=\"Fax\" Type=\"String\" MaxLength=\"24\" Unicode=\"true\" FixedLength=\"false\" />\n          <NavigationProperty Name=\"Products\" Relationship=\"NorthwindModel.Products_FK00\" FromRole=\"Suppliers\" ToRole=\"Products\" />\n        </EntityType>\n        <Association Name=\"Products_FK01\">\n          <End Role=\"Categories\" Type=\"NorthwindModel.Category\" Multiplicity=\"0..1\" />\n          <End Role=\"Products\" Type=\"NorthwindModel.Product\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Categories\">\n              <PropertyRef Name=\"Category_ID\" />\n            </Principal>\n            <Dependent Role=\"Products\">\n              <PropertyRef Name=\"Category_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK00\">\n          <End Role=\"Customers\" Type=\"NorthwindModel.Customer\" Multiplicity=\"1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Order\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Customers\">\n              <PropertyRef Name=\"Customer_ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Customer_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK02\">\n          <End Role=\"Employees\" Type=\"NorthwindModel.Employee\" Multiplicity=\"0..1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Order\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Employees\">\n              <PropertyRef Name=\"Employee_ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Employee_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Order_Details_FK00\">\n          <End Role=\"Products\" Type=\"NorthwindModel.Product\" Multiplicity=\"1\" />\n          <End Role=\"Order_Details\" Type=\"NorthwindModel.Order_Detail\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Products\">\n              <PropertyRef Name=\"Product_ID\" />\n            </Principal>\n            <Dependent Role=\"Order_Details\">\n              <PropertyRef Name=\"Product_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Order_Details_FK01\">\n          <End Role=\"Orders\" Type=\"NorthwindModel.Order\" Multiplicity=\"1\">\n            <OnDelete Action=\"Cascade\" />\n          </End>\n          <End Role=\"Order_Details\" Type=\"NorthwindModel.Order_Detail\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Orders\">\n              <PropertyRef Name=\"Order_ID\" />\n            </Principal>\n            <Dependent Role=\"Order_Details\">\n              <PropertyRef Name=\"Order_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Orders_FK01\">\n          <End Role=\"Shippers\" Type=\"NorthwindModel.Shipper\" Multiplicity=\"0..1\" />\n          <End Role=\"Orders\" Type=\"NorthwindModel.Order\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Shippers\">\n              <PropertyRef Name=\"Shipper_ID\" />\n            </Principal>\n            <Dependent Role=\"Orders\">\n              <PropertyRef Name=\"Ship_Via\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n        <Association Name=\"Products_FK00\">\n          <End Role=\"Suppliers\" Type=\"NorthwindModel.Supplier\" Multiplicity=\"0..1\" />\n          <End Role=\"Products\" Type=\"NorthwindModel.Product\" Multiplicity=\"*\" />\n          <ReferentialConstraint>\n            <Principal Role=\"Suppliers\">\n              <PropertyRef Name=\"Supplier_ID\" />\n            </Principal>\n            <Dependent Role=\"Products\">\n              <PropertyRef Name=\"Supplier_ID\" />\n            </Dependent>\n          </ReferentialConstraint>\n        </Association>\n      </Schema>\n    </edmx:ConceptualModels>\n    <!-- C-S mapping content -->\n    <edmx:Mappings>\n      <Mapping Space=\"C-S\" xmlns=\"http://schemas.microsoft.com/ado/2008/09/mapping/cs\">\n        <EntityContainerMapping StorageEntityContainer=\"NorthwindModelStoreContainer\" CdmEntityContainer=\"NorthwindEntities\">\n          <EntitySetMapping Name=\"Categories\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Category\">\n              <MappingFragment StoreEntitySet=\"Categories\">\n                <ScalarProperty Name=\"Category_ID\" ColumnName=\"Category ID\" />\n                <ScalarProperty Name=\"Category_Name\" ColumnName=\"Category Name\" />\n                <ScalarProperty Name=\"Description\" ColumnName=\"Description\" />\n                <ScalarProperty Name=\"Picture\" ColumnName=\"Picture\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Customers\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Customer\">\n              <MappingFragment StoreEntitySet=\"Customers\">\n                <ScalarProperty Name=\"Customer_ID\" ColumnName=\"Customer ID\" />\n                <ScalarProperty Name=\"Company_Name\" ColumnName=\"Company Name\" />\n                <ScalarProperty Name=\"Contact_Name\" ColumnName=\"Contact Name\" />\n                <ScalarProperty Name=\"Contact_Title\" ColumnName=\"Contact Title\" />\n                <ScalarProperty Name=\"Address\" ColumnName=\"Address\" />\n                <ScalarProperty Name=\"City\" ColumnName=\"City\" />\n                <ScalarProperty Name=\"Region\" ColumnName=\"Region\" />\n                <ScalarProperty Name=\"Postal_Code\" ColumnName=\"Postal Code\" />\n                <ScalarProperty Name=\"Country\" ColumnName=\"Country\" />\n                <ScalarProperty Name=\"Phone\" ColumnName=\"Phone\" />\n                <ScalarProperty Name=\"Fax\" ColumnName=\"Fax\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Employees\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Employee\">\n              <MappingFragment StoreEntitySet=\"Employees\">\n                <ScalarProperty Name=\"Employee_ID\" ColumnName=\"Employee ID\" />\n                <ScalarProperty Name=\"Last_Name\" ColumnName=\"Last Name\" />\n                <ScalarProperty Name=\"First_Name\" ColumnName=\"First Name\" />\n                <ScalarProperty Name=\"Title\" ColumnName=\"Title\" />\n                <ScalarProperty Name=\"Birth_Date\" ColumnName=\"Birth Date\" />\n                <ScalarProperty Name=\"Hire_Date\" ColumnName=\"Hire Date\" />\n                <ScalarProperty Name=\"Address\" ColumnName=\"Address\" />\n                <ScalarProperty Name=\"City\" ColumnName=\"City\" />\n                <ScalarProperty Name=\"Region\" ColumnName=\"Region\" />\n                <ScalarProperty Name=\"Postal_Code\" ColumnName=\"Postal Code\" />\n                <ScalarProperty Name=\"Country\" ColumnName=\"Country\" />\n                <ScalarProperty Name=\"Home_Phone\" ColumnName=\"Home Phone\" />\n                <ScalarProperty Name=\"Extension\" ColumnName=\"Extension\" />\n                <ScalarProperty Name=\"Photo\" ColumnName=\"Photo\" />\n                <ScalarProperty Name=\"Notes\" ColumnName=\"Notes\" />\n                <ScalarProperty Name=\"Reports_To\" ColumnName=\"Reports To\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Order_Details\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Order_Detail\">\n              <MappingFragment StoreEntitySet=\"Order Details\">\n                <ScalarProperty Name=\"Order_ID\" ColumnName=\"Order ID\" />\n                <ScalarProperty Name=\"Product_ID\" ColumnName=\"Product ID\" />\n                <ScalarProperty Name=\"Unit_Price\" ColumnName=\"Unit Price\" />\n                <ScalarProperty Name=\"Quantity\" ColumnName=\"Quantity\" />\n                <ScalarProperty Name=\"Discount\" ColumnName=\"Discount\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Orders\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Order\">\n              <MappingFragment StoreEntitySet=\"Orders\">\n                <ScalarProperty Name=\"Order_ID\" ColumnName=\"Order ID\" />\n                <ScalarProperty Name=\"Customer_ID\" ColumnName=\"Customer ID\" />\n                <ScalarProperty Name=\"Employee_ID\" ColumnName=\"Employee ID\" />\n                <ScalarProperty Name=\"Ship_Name\" ColumnName=\"Ship Name\" />\n                <ScalarProperty Name=\"Ship_Address\" ColumnName=\"Ship Address\" />\n                <ScalarProperty Name=\"Ship_City\" ColumnName=\"Ship City\" />\n                <ScalarProperty Name=\"Ship_Region\" ColumnName=\"Ship Region\" />\n                <ScalarProperty Name=\"Ship_Postal_Code\" ColumnName=\"Ship Postal Code\" />\n                <ScalarProperty Name=\"Ship_Country\" ColumnName=\"Ship Country\" />\n                <ScalarProperty Name=\"Ship_Via\" ColumnName=\"Ship Via\" />\n                <ScalarProperty Name=\"Order_Date\" ColumnName=\"Order Date\" />\n                <ScalarProperty Name=\"Required_Date\" ColumnName=\"Required Date\" />\n                <ScalarProperty Name=\"Shipped_Date\" ColumnName=\"Shipped Date\" />\n                <ScalarProperty Name=\"Freight\" ColumnName=\"Freight\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Products\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Product\">\n              <MappingFragment StoreEntitySet=\"Products\">\n                <ScalarProperty Name=\"Product_ID\" ColumnName=\"Product ID\" />\n                <ScalarProperty Name=\"Supplier_ID\" ColumnName=\"Supplier ID\" />\n                <ScalarProperty Name=\"Category_ID\" ColumnName=\"Category ID\" />\n                <ScalarProperty Name=\"Product_Name\" ColumnName=\"Product Name\" />\n                <ScalarProperty Name=\"English_Name\" ColumnName=\"English Name\" />\n                <ScalarProperty Name=\"Quantity_Per_Unit\" ColumnName=\"Quantity Per Unit\" />\n                <ScalarProperty Name=\"Unit_Price\" ColumnName=\"Unit Price\" />\n                <ScalarProperty Name=\"Units_In_Stock\" ColumnName=\"Units In Stock\" />\n                <ScalarProperty Name=\"Units_On_Order\" ColumnName=\"Units On Order\" />\n                <ScalarProperty Name=\"Reorder_Level\" ColumnName=\"Reorder Level\" />\n                <ScalarProperty Name=\"Discontinued\" ColumnName=\"Discontinued\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Shippers\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Shipper\">\n              <MappingFragment StoreEntitySet=\"Shippers\">\n                <ScalarProperty Name=\"Shipper_ID\" ColumnName=\"Shipper ID\" />\n                <ScalarProperty Name=\"Company_Name\" ColumnName=\"Company Name\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n          <EntitySetMapping Name=\"Suppliers\">\n            <EntityTypeMapping TypeName=\"NorthwindModel.Supplier\">\n              <MappingFragment StoreEntitySet=\"Suppliers\">\n                <ScalarProperty Name=\"Supplier_ID\" ColumnName=\"Supplier ID\" />\n                <ScalarProperty Name=\"Company_Name\" ColumnName=\"Company Name\" />\n                <ScalarProperty Name=\"Contact_Name\" ColumnName=\"Contact Name\" />\n                <ScalarProperty Name=\"Contact_Title\" ColumnName=\"Contact Title\" />\n                <ScalarProperty Name=\"Address\" ColumnName=\"Address\" />\n                <ScalarProperty Name=\"City\" ColumnName=\"City\" />\n                <ScalarProperty Name=\"Region\" ColumnName=\"Region\" />\n                <ScalarProperty Name=\"Postal_Code\" ColumnName=\"Postal Code\" />\n                <ScalarProperty Name=\"Country\" ColumnName=\"Country\" />\n                <ScalarProperty Name=\"Phone\" ColumnName=\"Phone\" />\n                <ScalarProperty Name=\"Fax\" ColumnName=\"Fax\" />\n              </MappingFragment>\n            </EntityTypeMapping>\n          </EntitySetMapping>\n        </EntityContainerMapping>\n      </Mapping>\n    </edmx:Mappings>\n  </edmx:Runtime>\n  <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->\n  <Designer xmlns=\"http://schemas.microsoft.com/ado/2008/10/edmx\">\n    <Connection>\n      <DesignerInfoPropertySet>\n        <DesignerProperty Name=\"MetadataArtifactProcessing\" Value=\"EmbedInOutputAssembly\" />\n      </DesignerInfoPropertySet>\n    </Connection>\n    <Options>\n      <DesignerInfoPropertySet>\n        <DesignerProperty Name=\"ValidateOnBuild\" Value=\"true\" />\n        <DesignerProperty Name=\"EnablePluralization\" Value=\"True\" />\n        <DesignerProperty Name=\"IncludeForeignKeysInModel\" Value=\"True\" />\n        <DesignerProperty Name=\"CodeGenerationStrategy\" Value=\"None\" />\n      </DesignerInfoPropertySet>\n    </Options>\n    <!-- Diagram content (shape and connector positions) -->\n    <Diagrams></Diagrams>\n  </Designer>\n</edmx:Edmx>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.edmx.diagram",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<edmx:Edmx Version=\"2.0\" xmlns:edmx=\"http://schemas.microsoft.com/ado/2008/10/edmx\">\n <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->\n  <edmx:Designer xmlns=\"http://schemas.microsoft.com/ado/2008/10/edmx\">\n    <!-- Diagram content (shape and connector positions) -->\n    <edmx:Diagrams>\n      <Diagram DiagramId=\"6dc8dad363854dbfa1ead24878453e75\" Name=\"Diagram1\">\n        <EntityTypeShape EntityType=\"NorthwindModel.Category\" Width=\"1.5\" PointX=\"0.75\" PointY=\"15.75\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Customer\" Width=\"1.5\" PointX=\"0.75\" PointY=\"1.625\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Employee\" Width=\"1.5\" PointX=\"0.75\" PointY=\"8.375\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Order_Detail\" Width=\"1.5\" PointX=\"5.25\" PointY=\"2.125\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Order\" Width=\"1.5\" PointX=\"3\" PointY=\"1\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Product\" Width=\"1.5\" PointX=\"3\" PointY=\"16.875\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Shipper\" Width=\"1.5\" PointX=\"0.75\" PointY=\"13.375\" IsExpanded=\"true\" />\n        <EntityTypeShape EntityType=\"NorthwindModel.Supplier\" Width=\"1.5\" PointX=\"0.75\" PointY=\"18.5\" IsExpanded=\"true\" />\n        <AssociationConnector Association=\"NorthwindModel.Products_FK01\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Orders_FK00\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Orders_FK02\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Order_Details_FK00\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Order_Details_FK01\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Orders_FK01\" ManuallyRouted=\"false\" />\n        <AssociationConnector Association=\"NorthwindModel.Products_FK00\" ManuallyRouted=\"false\" />\n      </Diagram>\n    </edmx:Diagrams>\n  </edmx:Designer>\n</edmx:Edmx>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.svc",
    "content": "﻿\n\n<%@ ServiceHost Language=\"C#\" Factory=\"System.ServiceModel.Activation.WebServiceHostFactory, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" Service=\"NorthwindService.Northwind\" %>\n\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.svc.cs",
    "content": "//------------------------------------------------------------------------------\n// <copyright file=\"WebDataService.svc.cs\" company=\"Microsoft\">\n//     Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n//------------------------------------------------------------------------------\nusing System;\nusing System.Collections.Generic;\nusing System.Data.Services;\nusing System.Data.Services.Common;\nusing System.IO;\nusing System.Linq;\nusing System.ServiceModel.Web;\nusing System.Web;\nusing Newtonsoft.Json;\n\nnamespace NorthwindService\n{\n    public class Northwind : DataService< NorthwindEntities >\n    {\n        // This method is called only once to initialize service-wide policies.\n        public static void InitializeService(DataServiceConfiguration config)\n        {\n            // Set rules to indicate which entity sets and service operations are visible, updatable, etc.\n            config.SetEntitySetAccessRule(\"*\", EntitySetRights.AllRead);\n            config.SetServiceOperationAccessRule(\"GetSuppliersLiteZip\", ServiceOperationRights.All);\n            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;\n        }\n\n        private string GetSuppliersLite()\n        {\n            // Get the ObjectContext that is the data source for the service.\n            NorthwindEntities context = this.CurrentDataSource;\n\n            try\n            {\n                var suppliers = (from s in context.Suppliers\n                                 select new\n                                 {\n                                     Address = s.Address,\n                                     City = s.City,\n                                     CompanyName = s.Company_Name,\n                                     ContactName = s.Contact_Name,\n                                     ContactTitle = s.Contact_Title,\n                                     Country = s.Country,\n                                     Fax = s.Fax,\n                                     Phone = s.Phone,\n                                     PostalCode = s.Postal_Code,\n                                     Region = s.Region,\n                                     SupplierID = s.Supplier_ID,\n                                 }\n                                ).ToList();\n\n                string jsonClient = null;\n                JsonSerializer jsonSerializer = new JsonSerializer();\n                jsonSerializer.NullValueHandling = NullValueHandling.Ignore;\n                jsonSerializer.MissingMemberHandling = MissingMemberHandling.Error;\n                jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Error;\n                try\n                {\n                    using (StringWriter sw = new StringWriter())\n                    {\n                        using (JsonTextWriter jtw = new JsonTextWriter(sw))\n                        {\n                            jsonSerializer.Serialize(jtw, suppliers);\n                        }\n                        jsonClient = sw.ToString();\n                    }\n                }\n                catch (Exception ex)\n                {\n                    ex = ex; // have a breakpoint here so can inspect exception\n                }\n                return jsonClient;\n            }\n            catch (Exception ex)\n            {\n                throw new ApplicationException(string.Format(\n                    \"An error occurred: {0}\", ex.Message));\n            }\n        }\n\n        [WebGet]\n        public string GetSuppliersLiteZip()\n        {\n            return Zip(GetSuppliersLite());\n        }\n\n        private string Zip(string value)\n        {\n            //Transform string into byte[]  \n            byte[] byteArray = new byte[value.Length];\n            int indexBA = 0;\n            foreach (char item in value.ToCharArray())\n            {\n                byteArray[indexBA++] = (byte)item;\n            }\n\n            //Prepare for compress\n            System.IO.MemoryStream ms = new System.IO.MemoryStream();\n            System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms,\n                System.IO.Compression.CompressionMode.Compress);\n\n            //Compress\n            sw.Write(byteArray, 0, byteArray.Length);\n            //Close, DO NOT FLUSH cause bytes will go missing...\n            sw.Close();\n\n            //Transform byte[] zip data to string\n            byteArray = ms.ToArray();\n            System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);\n            foreach (byte item in byteArray)\n            {\n                sB.Append((char)item);\n            }\n            ms.Close();\n            sw.Dispose();\n            ms.Dispose();\n            return sB.ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Northwind.tt",
    "content": "﻿<#@ template language=\"C#\" debug=\"false\" hostspecific=\"true\"#>\n<#@ include file=\"EF.Utility.CS.ttinclude\"#><#@ \n output extension=\".cs\"#><#\n\nconst string inputFile = @\"Northwind.edmx\";\nvar textTransform = DynamicTextTransformation.Create(this);\nvar code = new CodeGenerationTools(this);\nvar ef = new MetadataTools(this);\nvar typeMapper = new TypeMapper(code, ef, textTransform.Errors);\nvar\tfileManager = EntityFrameworkTemplateFileManager.Create(this);\nvar itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);\nvar codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);\n\nif (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))\n{\n    return string.Empty;\n}\n\nWriteHeader(codeStringGenerator, fileManager);\n\nforeach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))\n{\n    fileManager.StartNewFile(entity.Name + \".cs\");\n    BeginNamespace(code);\n#>\n<#=codeStringGenerator.UsingDirectives(inHeader: false)#>\n<#=codeStringGenerator.EntityClassOpening(entity)#>\n{\n<#\n    var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(entity);\n    var collectionNavigationProperties = typeMapper.GetCollectionNavigationProperties(entity);\n    var complexProperties = typeMapper.GetComplexProperties(entity);\n\n    if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any())\n    {\n#>\n    public <#=code.Escape(entity)#>()\n    {\n<#\n        foreach (var edmProperty in propertiesWithDefaultValues)\n        {\n#>\n        this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;\n<#\n        }\n\n        foreach (var navigationProperty in collectionNavigationProperties)\n        {\n#>\n        this.<#=code.Escape(navigationProperty)#> = new HashSet<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>();\n<#\n        }\n\n        foreach (var complexProperty in complexProperties)\n        {\n#>\n        this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();\n<#\n        }\n#>\n    }\n\n<#\n    }\n\n    var simpleProperties = typeMapper.GetSimpleProperties(entity);\n    if (simpleProperties.Any())\n    {\n        foreach (var edmProperty in simpleProperties)\n        {\n#>\n    <#=codeStringGenerator.Property(edmProperty)#>\n<#\n        }\n    }\n\n    if (complexProperties.Any())\n    {\n#>\n\n<#\n        foreach(var complexProperty in complexProperties)\n        {\n#>\n    <#=codeStringGenerator.Property(complexProperty)#>\n<#\n        }\n    }\n\n    var navigationProperties = typeMapper.GetNavigationProperties(entity);\n    if (navigationProperties.Any())\n    {\n#>\n\n<#\n        foreach (var navigationProperty in navigationProperties)\n        {\n#>\n    <#=codeStringGenerator.NavigationProperty(navigationProperty)#>\n<#\n        }\n    }\n#>\n}\n<#\n    EndNamespace(code);\n}\n\nforeach (var complex in typeMapper.GetItemsToGenerate<ComplexType>(itemCollection))\n{\n    fileManager.StartNewFile(complex.Name + \".cs\");\n    BeginNamespace(code);\n#>\n<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>\n<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#>\n{\n<#\n    var complexProperties = typeMapper.GetComplexProperties(complex);\n    var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(complex);\n\n    if (propertiesWithDefaultValues.Any() || complexProperties.Any())\n    {\n#>\n    public <#=code.Escape(complex)#>()\n    {\n<#\n        foreach (var edmProperty in propertiesWithDefaultValues)\n        {\n#>\n        this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;\n<#\n        }\n\n        foreach (var complexProperty in complexProperties)\n        {\n#>\n        this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();\n<#\n        }\n#>\n    }\n\n<#\n    }\n\n    var simpleProperties = typeMapper.GetSimpleProperties(complex);\n    if (simpleProperties.Any())\n    {\n        foreach(var edmProperty in simpleProperties)\n        {\n#>\n    <#=codeStringGenerator.Property(edmProperty)#>\n<#\n        }\n    }\n\n    if (complexProperties.Any())\n    {\n#>\n\n<#\n        foreach(var edmProperty in complexProperties)\n        {\n#>\n    <#=codeStringGenerator.Property(edmProperty)#>\n<#\n        }\n    }\n#>\n}\n<#\n    EndNamespace(code);\n}\n\nforeach (var enumType in typeMapper.GetEnumItemsToGenerate(itemCollection))\n{\n    fileManager.StartNewFile(enumType.Name + \".cs\");\n    BeginNamespace(code);\n#>\n<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>\n<#\n    if (typeMapper.EnumIsFlags(enumType))\n    {\n#>\n[Flags]\n<#\n    }\n#>\n<#=codeStringGenerator.EnumOpening(enumType)#>\n{\n<#\n    var foundOne = false;\n    \n    foreach (MetadataItem member in typeMapper.GetEnumMembers(enumType))\n    {\n        foundOne = true;\n#>\n    <#=code.Escape(typeMapper.GetEnumMemberName(member))#> = <#=typeMapper.GetEnumMemberValue(member)#>,\n<#\n    }\n\n    if (foundOne)\n    {\n        this.GenerationEnvironment.Remove(this.GenerationEnvironment.Length - 3, 1);\n    }\n#>\n}\n<#\n    EndNamespace(code);\n}\n\nfileManager.Process();\n\n#>\n<#+\n\npublic void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager)\n{\n    fileManager.StartHeader();\n#>\n//------------------------------------------------------------------------------\n// <auto-generated>\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine1\")#>\n//\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine2\")#>\n// <#=GetResourceString(\"Template_GeneratedCodeCommentLine3\")#>\n// </auto-generated>\n//------------------------------------------------------------------------------\n<#=codeStringGenerator.UsingDirectives(inHeader: true)#>\n<#+\n    fileManager.EndBlock();\n}\n\npublic void BeginNamespace(CodeGenerationTools code)\n{\n    var codeNamespace = code.VsNamespaceSuggestion();\n    if (!String.IsNullOrEmpty(codeNamespace))\n    {\n#>\nnamespace <#=code.EscapeNamespace(codeNamespace)#>\n{\n<#+\n        PushIndent(\"    \");\n    }\n}\n\npublic void EndNamespace(CodeGenerationTools code)\n{\n    if (!String.IsNullOrEmpty(code.VsNamespaceSuggestion()))\n    {\n        PopIndent();\n#>\n}\n<#+\n    }\n}\n\npublic const string TemplateId = \"CSharp_DbContext_Types_EF5\";\n\npublic class CodeStringGenerator\n{\n    private readonly CodeGenerationTools _code;\n    private readonly TypeMapper _typeMapper;\n    private readonly MetadataTools _ef;\n\n    public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)\n    {\n        ArgumentNotNull(code, \"code\");\n        ArgumentNotNull(typeMapper, \"typeMapper\");\n        ArgumentNotNull(ef, \"ef\");\n\n        _code = code;\n        _typeMapper = typeMapper;\n        _ef = ef;\n    }\n\n    public string Property(EdmProperty edmProperty)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2} {{ {3}get; {4}set; }}\",\n            Accessibility.ForProperty(edmProperty),\n            _typeMapper.GetTypeName(edmProperty.TypeUsage),\n            _code.Escape(edmProperty),\n            _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),\n            _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));\n    }\n\n    public string NavigationProperty(NavigationProperty navigationProperty)\n    {\n        var endType = _typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType());\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2} {{ {3}get; {4}set; }}\",\n            AccessibilityAndVirtual(Accessibility.ForProperty(navigationProperty)),\n            navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? (\"ICollection<\" + endType + \">\") : endType,\n            _code.Escape(navigationProperty),\n            _code.SpaceAfter(Accessibility.ForGetter(navigationProperty)),\n            _code.SpaceAfter(Accessibility.ForSetter(navigationProperty)));\n    }\n    \n    public string AccessibilityAndVirtual(string accessibility)\n    {\n        return accessibility + (accessibility != \"private\" ? \" virtual\" : \"\");\n    }\n    \n    public string EntityClassOpening(EntityType entity)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1}partial class {2}{3}\",\n            Accessibility.ForType(entity),\n            _code.SpaceAfter(_code.AbstractOption(entity)),\n            _code.Escape(entity),\n            _code.StringBefore(\" : \", _typeMapper.GetTypeName(entity.BaseType)));\n    }\n    \n    public string EnumOpening(SimpleType enumType)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} enum {1} : {2}\",\n            Accessibility.ForType(enumType),\n            _code.Escape(enumType),\n            _code.Escape(_typeMapper.UnderlyingClrType(enumType)));\n        }\n    \n    public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)\n    {\n        var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);\n        foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))\n        {\n            var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + \".HasValue\" : parameter.FunctionParameterName + \" != null\";\n            var notNullInit = \"new ObjectParameter(\\\"\" + parameter.EsqlParameterName + \"\\\", \" + parameter.FunctionParameterName + \")\";\n            var nullInit = \"new ObjectParameter(\\\"\" + parameter.EsqlParameterName + \"\\\", typeof(\" + parameter.RawClrTypeName + \"))\";\n            writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);\n        }\n    }\n    \n    public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} IQueryable<{1}> {2}({3})\",\n            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),\n            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),\n            _code.Escape(edmFunction),\n            string.Join(\", \", parameters.Select(p => p.FunctionParameterType + \" \" + p.FunctionParameterName).ToArray()));\n    }\n    \n    public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\\\"[{1}].[{2}]({3})\\\"{4});\",\n            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),\n            edmFunction.NamespaceName,\n            edmFunction.Name,\n            string.Join(\", \", parameters.Select(p => \"@\" + p.EsqlParameterName).ToArray()),\n            _code.StringBefore(\", \", string.Join(\", \", parameters.Select(p => p.ExecuteParameterName).ToArray())));\n    }\n    \n    public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        var returnType = _typeMapper.GetReturnType(edmFunction);\n\n        var paramList = String.Join(\", \", parameters.Select(p => p.FunctionParameterType + \" \" + p.FunctionParameterName).ToArray());\n        if (includeMergeOption)\n        {\n            paramList = _code.StringAfter(paramList, \", \") + \"MergeOption mergeOption\";\n        }\n\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} {1} {2}({3})\",\n            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),\n            returnType == null ? \"int\" : \"ObjectResult<\" + _typeMapper.GetTypeName(returnType, modelNamespace) + \">\",\n            _code.Escape(edmFunction),\n            paramList);\n    }\n    \n    public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)\n    {\n        var parameters = _typeMapper.GetParameters(edmFunction);\n        var returnType = _typeMapper.GetReturnType(edmFunction);\n\n        var callParams = _code.StringBefore(\", \", String.Join(\", \", parameters.Select(p => p.ExecuteParameterName).ToArray()));\n        if (includeMergeOption)\n        {\n            callParams = \", mergeOption\" + callParams;\n        }\n        \n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\\\"{1}\\\"{2});\",\n            returnType == null ? \"\" : \"<\" + _typeMapper.GetTypeName(returnType, modelNamespace) + \">\",\n            edmFunction.Name,\n            callParams);\n    }\n    \n    public string DbSet(EntitySet entitySet)\n    {\n        return string.Format(\n            CultureInfo.InvariantCulture,\n            \"{0} DbSet<{1}> {2} {{ get; set; }}\",\n            Accessibility.ForReadOnlyProperty(entitySet),\n            _typeMapper.GetTypeName(entitySet.ElementType),\n            _code.Escape(entitySet));\n    }\n\n    public string UsingDirectives(bool inHeader, bool includeCollections = true)\n    {\n        return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())\n            ? string.Format(\n                CultureInfo.InvariantCulture,\n                \"{0}using System;{1}\" +\n                \"{2}\",\n                inHeader ? Environment.NewLine : \"\",\n                includeCollections ? (Environment.NewLine + \"using System.Collections.Generic;\") : \"\",\n                inHeader ? \"\" : Environment.NewLine)\n            : \"\";\n    }\n}\n\npublic class TypeMapper\n{\n    private const string ExternalTypeNameAttributeName = @\"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName\";\n\n    private readonly System.Collections.IList _errors;\n    private readonly CodeGenerationTools _code;\n    private readonly MetadataTools _ef;\n\n    public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)\n    {\n        ArgumentNotNull(code, \"code\");\n        ArgumentNotNull(ef, \"ef\");\n        ArgumentNotNull(errors, \"errors\");\n\n        _code = code;\n        _ef = ef;\n        _errors = errors;\n    }\n\n    public string GetTypeName(TypeUsage typeUsage)\n    {\n        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);\n    }\n\n    public string GetTypeName(EdmType edmType)\n    {\n        return GetTypeName(edmType, isNullable: null, modelNamespace: null);\n    }\n\n    public string GetTypeName(TypeUsage typeUsage, string modelNamespace)\n    {\n        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);\n    }\n\n    public string GetTypeName(EdmType edmType, string modelNamespace)\n    {\n        return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);\n    }\n\n    public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)\n    {\n        if (edmType == null)\n        {\n            return null;\n        }\n\n        var collectionType = edmType as CollectionType;\n        if (collectionType != null)\n        {\n            return String.Format(CultureInfo.InvariantCulture, \"ICollection<{0}>\", GetTypeName(collectionType.TypeUsage, modelNamespace));\n        }\n\n        var typeName = _code.Escape(edmType.MetadataProperties\n                                .Where(p => p.Name == ExternalTypeNameAttributeName)\n                                .Select(p => (string)p.Value)\n                                .FirstOrDefault())\n            ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?\n                _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :\n                _code.Escape(edmType));\n\n        if (edmType is StructuralType)\n        {\n            return typeName;\n        }\n\n        if (edmType is SimpleType)\n        {\n            var clrType = UnderlyingClrType(edmType);\n            if (!IsEnumType(edmType))\n            {\n                typeName = _code.Escape(clrType);\n            }\n\n            return clrType.IsValueType && isNullable == true ?\n                String.Format(CultureInfo.InvariantCulture, \"Nullable<{0}>\", typeName) :\n                typeName;\n        }\n\n        throw new ArgumentException(\"edmType\");\n    }\n    \n    public Type UnderlyingClrType(EdmType edmType)\n    {\n        ArgumentNotNull(edmType, \"edmType\");\n\n        var primitiveType = edmType as PrimitiveType;\n        if (primitiveType != null)\n        {\n            return primitiveType.ClrEquivalentType;\n        }\n\n        if (IsEnumType(edmType))\n        {\n            return GetEnumUnderlyingType(edmType).ClrEquivalentType;\n        }\n\n        return typeof(object);\n    }\n    \n    public object GetEnumMemberValue(MetadataItem enumMember)\n    {\n        ArgumentNotNull(enumMember, \"enumMember\");\n        \n        var valueProperty = enumMember.GetType().GetProperty(\"Value\");\n        return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);\n    }\n    \n    public string GetEnumMemberName(MetadataItem enumMember)\n    {\n        ArgumentNotNull(enumMember, \"enumMember\");\n        \n        var nameProperty = enumMember.GetType().GetProperty(\"Name\");\n        return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);\n    }\n\n    public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n\n        var membersProperty = enumType.GetType().GetProperty(\"Members\");\n        return membersProperty != null \n            ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)\n            : Enumerable.Empty<MetadataItem>();\n    }\n    \n    public bool EnumIsFlags(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n        \n        var isFlagsProperty = enumType.GetType().GetProperty(\"IsFlags\");\n        return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);\n    }\n\n    public bool IsEnumType(GlobalItem edmType)\n    {\n        ArgumentNotNull(edmType, \"edmType\");\n\n        return edmType.GetType().Name == \"EnumType\";\n    }\n\n    public PrimitiveType GetEnumUnderlyingType(EdmType enumType)\n    {\n        ArgumentNotNull(enumType, \"enumType\");\n\n        return (PrimitiveType)enumType.GetType().GetProperty(\"UnderlyingType\").GetValue(enumType, null);\n    }\n\n    public string CreateLiteral(object value)\n    {\n        if (value == null || value.GetType() != typeof(TimeSpan))\n        {\n            return _code.CreateLiteral(value);\n        }\n\n        return string.Format(CultureInfo.InvariantCulture, \"new TimeSpan({0})\", ((TimeSpan)value).Ticks);\n    }\n    \n    public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)\n    {\n        ArgumentNotNull(types, \"types\");\n        ArgumentNotNull(sourceFile, \"sourceFile\");\n        \n        var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);\n        if (types.Any(item => !hash.Add(item)))\n        {\n            _errors.Add(\n                new CompilerError(sourceFile, -1, -1, \"6023\",\n                    String.Format(CultureInfo.CurrentCulture, GetResourceString(\"Template_CaseInsensitiveTypeConflict\"))));\n            return false;\n        }\n        return true;\n    }\n    \n    public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)\n    {\n        return GetItemsToGenerate<SimpleType>(itemCollection)\n            .Where(e => IsEnumType(e));\n    }\n    \n    public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType\n    {\n        return itemCollection\n            .OfType<T>()\n            .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))\n            .OrderBy(i => i.Name);\n    }\n\n    public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)\n    {\n        return itemCollection\n            .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))\n            .Select(g => GetGlobalItemName(g));\n    }\n\n    public string GetGlobalItemName(GlobalItem item)\n    {\n        if (item is EdmType)\n        {\n            return ((EdmType)item).Name;\n        }\n        else\n        {\n            return ((EntityContainer)item).Name;\n        }\n    }\n\n    public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);\n    }\n    \n    public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);\n    }\n\n    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);\n    }\n    \n    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)\n    {\n        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);\n    }\n\n    public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)\n    {\n        return type.NavigationProperties.Where(np => np.DeclaringType == type);\n    }\n    \n    public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)\n    {\n        return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);\n    }\n    \n    public FunctionParameter GetReturnParameter(EdmFunction edmFunction)\n    {\n        ArgumentNotNull(edmFunction, \"edmFunction\");\n\n        var returnParamsProperty = edmFunction.GetType().GetProperty(\"ReturnParameters\");\n        return returnParamsProperty == null\n            ? edmFunction.ReturnParameter\n            : ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();\n    }\n\n    public bool IsComposable(EdmFunction edmFunction)\n    {\n        ArgumentNotNull(edmFunction, \"edmFunction\");\n\n        var isComposableProperty = edmFunction.GetType().GetProperty(\"IsComposableAttribute\");\n        return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);\n    }\n\n    public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)\n    {\n        return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);\n    }\n\n    public TypeUsage GetReturnType(EdmFunction edmFunction)\n    {\n        var returnParam = GetReturnParameter(edmFunction);\n        return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);\n    }\n    \n    public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)\n    {\n        var returnType = GetReturnType(edmFunction);\n        return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;\n    }\n}\n\npublic class EdmMetadataLoader\n{\n    private readonly IDynamicHost _host;\n    private readonly System.Collections.IList _errors;\n\n    public EdmMetadataLoader(IDynamicHost host, System.Collections.IList errors)\n    {\n        ArgumentNotNull(host, \"host\");\n        ArgumentNotNull(errors, \"errors\");\n\n        _host = host;\n        _errors = errors;\n    }\n\n    public IEnumerable<GlobalItem> CreateEdmItemCollection(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        if (!ValidateInputPath(sourcePath))\n        {\n            return new EdmItemCollection();\n        }\n\n        var schemaElement = LoadRootElement(_host.ResolvePath(sourcePath));\n        if (schemaElement != null)\n        {\n            using (var reader = schemaElement.CreateReader())\n            {\n                IList<EdmSchemaError> errors;\n                var itemCollection = MetadataItemCollectionFactory.CreateEdmItemCollection(new[] { reader }, out errors);\n\n                ProcessErrors(errors, sourcePath);\n\n                return itemCollection;\n            }\n        }\n        return new EdmItemCollection();\n    }\n\n    public string GetModelNamespace(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        if (!ValidateInputPath(sourcePath))\n        {\n            return string.Empty;\n        }\n\n        var model = LoadRootElement(_host.ResolvePath(sourcePath));\n        if (model == null)\n        {\n            return string.Empty;\n        }\n\n        var attribute = model.Attribute(\"Namespace\");\n        return attribute != null ? attribute.Value : \"\";\n    }\n\n    private bool ValidateInputPath(string sourcePath)\n    {\n        if (sourcePath == \"$\" + \"edmxInputFile\" + \"$\")\n        {\n            _errors.Add(\n                new CompilerError(_host.TemplateFile ?? sourcePath, 0, 0, string.Empty,\n                    GetResourceString(\"Template_ReplaceVsItemTemplateToken\")));\n            return false;\n        }\n\n        return true;\n    }\n\n    public XElement LoadRootElement(string sourcePath)\n    {\n        ArgumentNotNull(sourcePath, \"sourcePath\");\n\n        var root = XElement.Load(sourcePath, LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);\n        return root.Elements()\n            .Where(e => e.Name.LocalName == \"Runtime\")\n            .Elements()\n            .Where(e => e.Name.LocalName == \"ConceptualModels\")\n            .Elements()\n            .Where(e => e.Name.LocalName == \"Schema\")\n            .FirstOrDefault()\n                ?? root;\n    }\n\n    private void ProcessErrors(IEnumerable<EdmSchemaError> errors, string sourceFilePath)\n    {\n        foreach (var error in errors)\n        {\n            _errors.Add(\n                new CompilerError(\n                    error.SchemaLocation ?? sourceFilePath,\n                    error.Line,\n                    error.Column,\n                    error.ErrorCode.ToString(CultureInfo.InvariantCulture),\n                    error.Message)\n                {\n                    IsWarning = error.Severity == EdmSchemaErrorSeverity.Warning\n                });\n        }\n    }\n    \n    public bool IsLazyLoadingEnabled(EntityContainer container)\n    {\n        string lazyLoadingAttributeValue;\n        var lazyLoadingAttributeName = MetadataConstants.EDM_ANNOTATION_09_02 + \":LazyLoadingEnabled\";\n        bool isLazyLoading;\n        return !MetadataTools.TryGetStringMetadataPropertySetting(container, lazyLoadingAttributeName, out lazyLoadingAttributeValue)\n            || !bool.TryParse(lazyLoadingAttributeValue, out isLazyLoading)\n            || isLazyLoading;\n    }\n}\n\npublic static void ArgumentNotNull<T>(T arg, string name) where T : class\n{\n    if (arg == null)\n    {\n        throw new ArgumentNullException(name);\n    }\n}\n    \nprivate static readonly Lazy<System.Resources.ResourceManager> ResourceManager =\n    new Lazy<System.Resources.ResourceManager>(\n        () => new System.Resources.ResourceManager(\"System.Data.Entity.Design\", typeof(MetadataItemCollectionFactory).Assembly), isThreadSafe: true);\n\npublic static string GetResourceString(string resourceName)\n{\n    ArgumentNotNull(resourceName, \"resourceName\");\n\n    return ResourceManager.Value.GetString(resourceName, null);\n}\n\n#>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/NorthwindService.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>\n    </ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{99BE95F8-B044-497E-9893-9485E0143A6B}</ProjectGuid>\n    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>NorthwindService</RootNamespace>\n    <AssemblyName>NorthwindService</AssemblyName>\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\n    <UseIISExpress>true</UseIISExpress>\n    <IISExpressSSLPort />\n    <IISExpressAnonymousAuthentication />\n    <IISExpressWindowsAuthentication />\n    <IISExpressUseClassicPipelineMode />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"EntityFramework\">\n      <HintPath>..\\packages\\EntityFramework.5.0.0\\lib\\net40\\EntityFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"Microsoft.Data.Edm, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Edm.5.1.0\\lib\\net40\\Microsoft.Data.Edm.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.OData, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.OData.5.1.0\\lib\\net40\\Microsoft.Data.OData.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Services, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Services.5.1.0\\lib\\net40\\Microsoft.Data.Services.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Services.Client, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Services.Client.5.1.0\\lib\\net40\\Microsoft.Data.Services.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\..\\WP8 Developer Training Final\\S12 Network Communication\\Demos\\Demo 6 Wire Serialization\\WireSerialization\\packages\\Newtonsoft.Json.4.5.11\\lib\\net40\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Entity\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.Security\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.ServiceModel.Web\" />\n    <Reference Include=\"System.Spatial, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Spatial.5.1.0\\lib\\net40\\System.Spatial.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Web.DynamicData\" />\n    <Reference Include=\"System.Web.Entity\" />\n    <Reference Include=\"System.Web.ApplicationServices\" />\n    <Reference Include=\"System.ComponentModel.DataAnnotations\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Web.Extensions\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Web\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Web.Services\" />\n    <Reference Include=\"System.EnterpriseServices\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"App_Data\\Northwind.sdf\" />\n    <Content Include=\"Northwind.svc\" />\n    <Content Include=\"Web.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Category.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Customer.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Employee.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Northwind.Context.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Northwind.Context.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Northwind.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Northwind.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Northwind.edmx</DependentUpon>\n    </Compile>\n    <Compile Include=\"Northwind.svc.cs\">\n      <DependentUpon>Northwind.svc</DependentUpon>\n    </Compile>\n    <Compile Include=\"Order.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Order_Detail.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Product.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Shipper.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n    <Compile Include=\"Supplier.cs\">\n      <DependentUpon>Northwind.tt</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <EntityDeploy Include=\"Northwind.edmx\">\n      <Generator>EntityModelCodeGenerator</Generator>\n      <LastGenOutput>Northwind.Designer.cs</LastGenOutput>\n    </EntityDeploy>\n    <Content Include=\"Northwind.Context.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <DependentUpon>Northwind.edmx</DependentUpon>\n      <LastGenOutput>Northwind.Context.cs</LastGenOutput>\n    </Content>\n    <Content Include=\"Northwind.edmx.diagram\">\n      <DependentUpon>Northwind.edmx</DependentUpon>\n    </Content>\n    <Content Include=\"Northwind.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <DependentUpon>Northwind.edmx</DependentUpon>\n      <LastGenOutput>Northwind.cs</LastGenOutput>\n    </Content>\n    <Content Include=\"packages.config\" />\n    <None Include=\"Web.Debug.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </None>\n    <None Include=\"Web.Release.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{508349B6-6B84-4DF5-91F0-309BEEBAD82D}\" />\n  </ItemGroup>\n  <PropertyGroup>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildBinPath)\\Microsoft.CSharp.targets\" />\n  <Import Project=\"$(VSToolsPath)\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"'$(VSToolsPath)' != ''\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"false\" />\n  <ProjectExtensions>\n    <VisualStudio>\n      <FlavorProperties GUID=\"{349c5851-65df-11da-9384-00065b846f21}\">\n        <WebProjectProperties>\n          <UseIIS>True</UseIIS>\n          <AutoAssignPort>True</AutoAssignPort>\n          <DevelopmentServerPort>0</DevelopmentServerPort>\n          <DevelopmentServerVPath>/</DevelopmentServerVPath>\n          <IISUrl>http://localhost:1494/</IISUrl>\n          <NTLMAuthentication>False</NTLMAuthentication>\n          <UseCustomServer>False</UseCustomServer>\n          <CustomServerUrl>\n          </CustomServerUrl>\n          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>\n        </WebProjectProperties>\n      </FlavorProperties>\n    </VisualStudio>\n  </ProjectExtensions>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Order.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Order\n    {\n        public Order()\n        {\n            this.Order_Details = new HashSet<Order_Detail>();\n        }\n    \n        public int Order_ID { get; set; }\n        public string Customer_ID { get; set; }\n        public Nullable<int> Employee_ID { get; set; }\n        public string Ship_Name { get; set; }\n        public string Ship_Address { get; set; }\n        public string Ship_City { get; set; }\n        public string Ship_Region { get; set; }\n        public string Ship_Postal_Code { get; set; }\n        public string Ship_Country { get; set; }\n        public Nullable<int> Ship_Via { get; set; }\n        public Nullable<System.DateTime> Order_Date { get; set; }\n        public Nullable<System.DateTime> Required_Date { get; set; }\n        public Nullable<System.DateTime> Shipped_Date { get; set; }\n        public Nullable<decimal> Freight { get; set; }\n    \n        public virtual Customer Customer { get; set; }\n        public virtual Employee Employee { get; set; }\n        public virtual ICollection<Order_Detail> Order_Details { get; set; }\n        public virtual Shipper Shipper { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Order_Detail.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Order_Detail\n    {\n        public int Order_ID { get; set; }\n        public int Product_ID { get; set; }\n        public decimal Unit_Price { get; set; }\n        public short Quantity { get; set; }\n        public float Discount { get; set; }\n    \n        public virtual Product Product { get; set; }\n        public virtual Order Order { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Product.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Product\n    {\n        public Product()\n        {\n            this.Order_Details = new HashSet<Order_Detail>();\n        }\n    \n        public int Product_ID { get; set; }\n        public Nullable<int> Supplier_ID { get; set; }\n        public Nullable<int> Category_ID { get; set; }\n        public string Product_Name { get; set; }\n        public string English_Name { get; set; }\n        public string Quantity_Per_Unit { get; set; }\n        public Nullable<decimal> Unit_Price { get; set; }\n        public Nullable<short> Units_In_Stock { get; set; }\n        public Nullable<short> Units_On_Order { get; set; }\n        public Nullable<short> Reorder_Level { get; set; }\n        public bool Discontinued { get; set; }\n    \n        public virtual Category Category { get; set; }\n        public virtual ICollection<Order_Detail> Order_Details { get; set; }\n        public virtual Supplier Supplier { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"NorthwindService\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"NorthwindService\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2012\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"bd03d991-dc00-4c74-8981-c1777f01bdfd\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Revision and Build Numbers \n// by using the '*' as shown below:\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Shipper.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Shipper\n    {\n        public Shipper()\n        {\n            this.Orders = new HashSet<Order>();\n        }\n    \n        public int Shipper_ID { get; set; }\n        public string Company_Name { get; set; }\n    \n        public virtual ICollection<Order> Orders { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Supplier.cs",
    "content": "//------------------------------------------------------------------------------\n// <auto-generated>\n//    This code was generated from a template.\n//\n//    Manual changes to this file may cause unexpected behavior in your application.\n//    Manual changes to this file will be overwritten if the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NorthwindService\n{\n    using System;\n    using System.Collections.Generic;\n    \n    public partial class Supplier\n    {\n        public Supplier()\n        {\n            this.Products = new HashSet<Product>();\n        }\n    \n        public int Supplier_ID { get; set; }\n        public string Company_Name { get; set; }\n        public string Contact_Name { get; set; }\n        public string Contact_Title { get; set; }\n        public string Address { get; set; }\n        public string City { get; set; }\n        public string Region { get; set; }\n        public string Postal_Code { get; set; }\n        public string Country { get; set; }\n        public string Phone { get; set; }\n        public string Fax { get; set; }\n    \n        public virtual ICollection<Product> Products { get; set; }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Web.Debug.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of \n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \n    finds an attribute \"name\" that has a value of \"MyDB\".\n    \n    <connectionStrings>\n      <add name=\"MyDB\" \n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire \n      <customErrors> section of your web.config file.\n      Note that because there is only one customErrors section under the \n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n      \n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Web.Release.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of \n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \n    finds an attribute \"name\" that has a value of \"MyDB\".\n    \n    <connectionStrings>\n      <add name=\"MyDB\" \n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <compilation xdt:Transform=\"RemoveAttributes(debug)\" />\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire \n      <customErrors> section of your web.config file.\n      Note that because there is only one customErrors section under the \n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n      \n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/Web.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n  For more information on how to configure your ASP.NET application, please visit\n  http://go.microsoft.com/fwlink/?LinkId=169433\n  -->\n<configuration>\n  <configSections>\n    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->\n    <section name=\"entityFramework\" type=\"System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" requirePermission=\"false\" />\n  </configSections>\n  <system.web>\n    <compilation debug=\"true\" targetFramework=\"4.0\">\n      <assemblies>\n        <add assembly=\"System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n      </assemblies>\n    </compilation>\n  </system.web>\n  <connectionStrings>\n    <add name=\"NorthwindEntities\" connectionString=\"metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;data source=|DataDirectory|\\Northwind.sdf&quot;\" providerName=\"System.Data.EntityClient\" />\n  </connectionStrings>\n  <entityFramework>\n    <defaultConnectionFactory type=\"System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework\">\n      <parameters>\n        <parameter value=\"v11.0\" />\n      </parameters>\n    </defaultConnectionFactory>\n  </entityFramework>\n  <system.serviceModel>\n    <serviceHostingEnvironment aspNetCompatibilityEnabled=\"true\" />\n  </system.serviceModel>\n</configuration>"
  },
  {
    "path": "HttpClient WireSerialization/NorthwindService/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"EntityFramework\" version=\"5.0.0\" targetFramework=\"net40\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.1.0\" targetFramework=\"net40\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.1.0\" targetFramework=\"net40\" />\n  <package id=\"Microsoft.Data.Services\" version=\"5.1.0\" targetFramework=\"net40\" />\n  <package id=\"Microsoft.Data.Services.Client\" version=\"5.1.0\" targetFramework=\"net40\" />\n  <package id=\"Newtonsoft.Json\" version=\"4.5.11\" targetFramework=\"net40\" />\n  <package id=\"System.Spatial\" version=\"5.1.0\" targetFramework=\"net40\" />\n</packages>"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/App.xaml",
    "content": "﻿<Application\n    x:Class=\"UWPclient.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPclient\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace UWPclient\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();\n\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"UWPclient.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPclient\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid x:Name=\"LayoutRoot\" Background=\"Transparent\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!--TitlePanel contains the name of the application and page title-->\n        <StackPanel x:Name=\"TitlePanel\" Grid.Row=\"0\" Margin=\"12,17,0,28\">\n            <TextBlock x:Name=\"ApplicationTitle\" Text=\"Network Transfer\" Style=\"{StaticResource SubtitleTextBlockStyle}\"/>\n            <TextBlock x:Name=\"PageTitle\" Text=\"wire formats\" Margin=\"9,-7,0,0\" Style=\"{StaticResource SubheaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--ContentPanel - place additional content here-->\n        <Grid x:Name=\"ContentPanel\" Grid.Row=\"1\" Margin=\"12,0,12,0\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"11*\"/>\n                <ColumnDefinition Width=\"8*\"/>\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"100*\"/>\n                <RowDefinition Height=\"100*\"/>\n                <RowDefinition Height=\"100*\"/>\n                <RowDefinition Height=\"100*\"/>\n            </Grid.RowDefinitions>\n            <Button Content=\"OData ATOM\" Name=\"button2\" Height=\"72\" Click=\"button2_Click\" Grid.Row=\"0\" Grid.Column=\"0\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"210\" />\n            <Button Content=\"OData JSON\" Height=\"72\" HorizontalAlignment=\"Center\" Name=\"button3\" VerticalAlignment=\"Center\" Width=\"210\" Click=\"button3_Click\" Grid.Row=\"1\" />\n            <Button Content=\"JSON REST\" Height=\"73\" HorizontalAlignment=\"Center\" Name=\"button4\" VerticalAlignment=\"Center\" Width=\"210\" Click=\"button4_Click\" Grid.Row=\"2\" />\n            <Button Content=\"JSON REST Zip\" Height=\"73\" HorizontalAlignment=\"Center\" Name=\"button5\" VerticalAlignment=\"Center\" Width=\"210\" Click=\"button5_Click\" Grid.Row=\"3\" />\n            <TextBlock x:Name=\"ATOMCount\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" TextWrapping=\"Wrap\" VerticalAlignment=\"Center\" Style=\"{StaticResource BodyTextBlockStyle}\" Width=\"100\"/>\n            <TextBlock x:Name=\"JSONVerboseCount\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" TextWrapping=\"Wrap\" VerticalAlignment=\"Center\" Style=\"{StaticResource BodyTextBlockStyle}\" Width=\"100\" Grid.Row=\"1\"/>\n            <TextBlock x:Name=\"JSONLiteCount\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" TextWrapping=\"Wrap\" VerticalAlignment=\"Center\" Style=\"{StaticResource BodyTextBlockStyle}\" Width=\"100\" Grid.Row=\"2\"/>\n            <TextBlock x:Name=\"JSONZipCount\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" TextWrapping=\"Wrap\" VerticalAlignment=\"Center\" Style=\"{StaticResource BodyTextBlockStyle}\" Width=\"100\" Grid.Row=\"3\"/>\n        </Grid>\n    </Grid>\n \n</Page>\n"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.Web.Http;\nusing Windows.Web.Http.Filters;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace UWPclient\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n\n        private async void button2_Click(object sender, RoutedEventArgs e)\n        {\n            HttpClient webclient = new HttpClient();\n            // Get the atom+xml feed\n            var result = await webclient.GetStringAsync(new Uri(\"http://localhost:1494/Northwind.svc/Suppliers\"));\n            await new MessageDialog(\"Received payload of \" + result.Length + \" characters\").ShowAsync();\n\n            ATOMCount.Text = result.Length.ToString();\n        }\n\n        private async void button3_Click(object sender, RoutedEventArgs e)\n        {\n            HttpClient webclient = new HttpClient();\n            // Get the 'traditional' (i.e. verbose) JSON feed\n            webclient.DefaultRequestHeaders.Accept.TryParseAdd(\"application/json;odata=verbose\");\n            var result = await webclient.GetStringAsync(new Uri(\"http://localhost:1494/Northwind.svc/Suppliers\"));\n            await new MessageDialog(\"Received payload of \" + result.Length + \" characters\").ShowAsync();\n\n            JSONVerboseCount.Text = result.Length.ToString();\n        }\n\n        private async void button4_Click(object sender, RoutedEventArgs e)\n        {\n            HttpClient webclient = new HttpClient();\n            // Get the JSON Light feed (default in WCF Data services 5.1)\n            webclient.DefaultRequestHeaders.Accept.TryParseAdd(\"application/json\");\n            var result = await webclient.GetStringAsync(new Uri(\"http://localhost:1494/Northwind.svc/Suppliers\"));\n            await new MessageDialog(\"Received payload of \" + result.Length + \" characters\").ShowAsync();\n\n            JSONLiteCount.Text = result.Length.ToString();\n        }\n\n        private async void button5_Click(object sender, RoutedEventArgs e)\n        {\n            HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();\n            filter.AutomaticDecompression = true;\n            HttpClient webclient = new HttpClient(filter);\n\n            // Get the custom JSON Light feed Zipped service method\n            var result = await webclient.GetStringAsync(new Uri(\"http://localhost:1494/Northwind.svc/GetSuppliersLiteZip\"));\n            await new MessageDialog(\"Received payload of \" + result.Length + \" characters\").ShowAsync();\n\n            JSONZipCount.Text = result.Length.ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"4d7a59fb-9ae9-4f4e-88c4-d115c3787acd\"\n    Publisher=\"CN=anwigley\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"4d7a59fb-9ae9-4f4e-88c4-d115c3787acd\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>UWPclient</DisplayName>\n    <PublisherDisplayName>anwigley</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"UWPclient.App\">\n      <uap:VisualElements\n        DisplayName=\"UWPclient\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"UWPclient\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UWPclient\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UWPclient\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/UWPclient.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{E38A3F10-FB0D-4841-A543-87F7B0DDE988}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UWPclient</RootNamespace>\n    <AssemblyName>UWPclient</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>UWPclient_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"UWPclient_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.PersistenceChannel, Version=0.14.3.186, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.PersistenceChannel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "HttpClient WireSerialization/UWPclient/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.PersistenceChannel\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsApps\" version=\"0.14.3-build00177\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.16-beta\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "HttpClient WireSerialization/WireSerialization.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"NorthwindService\", \"NorthwindService\\NorthwindService.csproj\", \"{99BE95F8-B044-497E-9893-9485E0143A6B}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UWPclient\", \"UWPclient\\UWPclient.csproj\", \"{E38A3F10-FB0D-4841-A543-87F7B0DDE988}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|ARM.ActiveCfg = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|ARM.ActiveCfg = Release|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|x64.Build.0 = Release|Any CPU\n\t\t{99BE95F8-B044-497E-9893-9485E0143A6B}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|Any CPU.Build.0 = Debug|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x64.Build.0 = Debug|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x86.Build.0 = Debug|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|ARM.Build.0 = Release|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x64.ActiveCfg = Release|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x64.Build.0 = Release|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x64.Deploy.0 = Release|x64\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x86.ActiveCfg = Release|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x86.Build.0 = Release|x86\n\t\t{E38A3F10-FB0D-4841-A543-87F7B0DDE988}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/App.xaml",
    "content": "﻿<Application\n    x:Class=\"KeepTheKeys.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:KeepTheKeys\">\n\n</Application>"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/App.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace KeepTheKeys\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    public sealed partial class App : Application\n    {\n        private TransitionCollection transitions;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += this.OnSuspending;\n        }\n\n        /// <summary>\n        /// Handles the back button press and navigates through the history of the root frame.\n        /// </summary>\n        /// <param name=\"sender\">The source of the event.</param>\n        /// <param name=\"e\">Details about the back button press.</param>\n        private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            Frame frame = Window.Current.Content as Frame;\n            if (frame == null)\n            {\n                return;\n            }\n\n            var handler = this.BackPressed;\n            if (handler != null)\n            {\n                handler(sender, e);\n            }\n\n            if (frame.CanGoBack && !e.Handled)\n            {\n                frame.GoBack();\n                e.Handled = true;\n            }\n        }\n\n\n        /// <summary>\n        /// This event wraps SystemNavigationManager.BackRequested to ensure that any pages that\n        /// want to override the default behavior can subscribe to this event to potentially\n        /// handle the back button press a different way (e.g. dismissing dialogs).\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackPressed;\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                // TODO: change this value to a cache size that is appropriate for your application\n                rootFrame.CacheSize = 1;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    // TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // Removes the turnstile navigation for startup.\n                if (rootFrame.ContentTransitions != null)\n                {\n                    this.transitions = new TransitionCollection();\n                    foreach (var c in rootFrame.ContentTransitions)\n                    {\n                        this.transitions.Add(c);\n                    }\n                }\n\n                rootFrame.ContentTransitions = null;\n                rootFrame.Navigated += this.RootFrame_FirstNavigated;\n\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n\n            // Ensure the current window is active\n            Window.Current.Activate();\n\n            // Handle Back Requested\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;\n        }\n\n        /// <summary>\n        /// Restores the content transitions after the app has launched.\n        /// </summary>\n        /// <param name=\"sender\">The object where the handler is attached.</param>\n        /// <param name=\"e\">Details about the navigation event.</param>\n        private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)\n        {\n            var rootFrame = sender as Frame;\n            rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };\n            rootFrame.Navigated -= this.RootFrame_FirstNavigated;\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n\n            // TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/DevicePage.xaml",
    "content": "﻿<Page\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:KeepTheKeys\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:KeepTheKeysBackground=\"using:KeepTheKeysBackground\" x:Name=\"page\"\n    xmlns:KeepTheKeysCommon=\"using:KeepTheKeysCommon\"\n    x:Class=\"KeepTheKeys.DevicePage\"\n    mc:Ignorable=\"d\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n    d:DataContext=\"{d:DesignInstance Type=KeepTheKeysCommon:KeyFob}\">\n    \n    <Page.Resources>\n        <local:AlertLevelRadioButtonValueConverter x:Key=\"AlertLevelRadioButtonValueConverter\"/>\n    </Page.Resources>\n\n    <Grid Margin=\"10,0,10,0\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"Auto\"/>\n        </Grid.RowDefinitions>\n\n        <TextBlock Grid.Row=\"0\" Text=\"keep the keys\" FontSize=\"40\"/>\n        <TextBlock Grid.Row=\"1\" Text=\"{Binding Name, Mode=OneTime}\" FontSize=\"50\"/>\n        <CheckBox Grid.Row=\"2\" x:Name=\"alertOnPhoneCheckBox\" Content=\"Create phone notification on link loss\" FontSize=\"20\"\n\t\t\tIsChecked=\"{Binding AlertOnPhone, Mode=TwoWay}\"/>\n        <CheckBox Grid.Row=\"3\" x:Name=\"alertOnDeviceCheckBox\" Content=\"Set device alert level on link loss\" FontSize=\"20\"\n\t\t\tIsEnabled=\"{Binding HasLinkLossService, Mode=OneTime}\"\n\t\t\tIsChecked=\"{Binding AlertOnDevice, Mode=TwoWay}\"/>\n        <StackPanel Grid.Row=\"4\" Orientation=\"Vertical\" Margin=\"40,0,0,0\">\n            <RadioButton Content=\"No alert\"\n                         IsEnabled=\"{Binding IsChecked, ElementName=alertOnDeviceCheckBox}\"\n                         IsChecked=\"{Binding AlertLevel, ConverterParameter=None, Converter={StaticResource AlertLevelRadioButtonValueConverter}, Mode=TwoWay}\"/>\n            <RadioButton Content=\"Mild alert\"\n                         IsEnabled=\"{Binding IsChecked, ElementName=alertOnDeviceCheckBox}\"\n                         IsChecked=\"{Binding AlertLevel, ConverterParameter=Mild, Converter={StaticResource AlertLevelRadioButtonValueConverter}, Mode=TwoWay}\"/>\n            <RadioButton Content=\"High alert\"\n                         IsEnabled=\"{Binding IsChecked, ElementName=alertOnDeviceCheckBox}\"\n                         IsChecked=\"{Binding AlertLevel, ConverterParameter=High, Converter={StaticResource AlertLevelRadioButtonValueConverter}, Mode=TwoWay}\"/>\n        </StackPanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/DevicePage.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nusing KeyFob = KeepTheKeysCommon.KeyFob;\n\nnamespace KeepTheKeys\n{\n    public sealed partial class DevicePage : Page\n    {\n        public DevicePage()\n        {\n            this.InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            DataContext = e.Parameter;\n        }\n    }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/KeepTheKeys.csproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{C51D8C90-18B1-4649-87DE-6AED44DF6E58}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>KeepTheKeys</RootNamespace>\n    <AssemblyName>KeepTheKeys</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>\n    <AppxBundlePlatforms>neutral</AppxBundlePlatforms>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <ProjectReference Include=\"..\\KeepTheKeysBackground\\KeepTheKeysBackground.csproj\">\n      <Project>{ec849c2c-c169-4d33-890f-3767471d01ef}</Project>\n      <Name>KeepTheKeysBackground</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\KeepTheKeysCommon\\KeepTheKeysCommon.csproj\">\n      <Project>{20433324-be6b-49f0-8fe3-cfeff108086d}</Project>\n      <Name>KeepTheKeysCommon</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"DevicePage.xaml.cs\">\n      <DependentUpon>DevicePage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"RadioButtonValueConverter.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"DevicePage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  \n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>\n\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/MainPage.xaml",
    "content": "﻿<Page x:Name=\"page\"\n    x:Class=\"KeepTheKeys.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:KeepTheKeys\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:controls=\"using:Windows.UI.Xaml.Controls\"\n    mc:Ignorable=\"d\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    <Grid Margin=\"10,0,10,0\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <TextBlock Grid.Row=\"0\" Text=\"keep the keys\" FontSize=\"40\"/>\n        <TextBlock Grid.Row=\"1\" Text=\"Tap a device below to configure:\"\n                   FontSize=\"20\" Margin=\"0,10,0,0\"/>\n        <ListBox Grid.Row=\"2\" x:Name=\"deviceListBox\" FontSize=\"30\"\n                 ItemsSource=\"{Binding Devices, ElementName=page}\"\n                 SelectionChanged=\"deviceListBox_SelectionChanged\"/>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\n//  Make it obvious which namespace provided each referenced type:\nusing BackgroundAccessStatus = Windows.ApplicationModel.Background.BackgroundAccessStatus;\nusing BackgroundExecutiondManager = Windows.ApplicationModel.Background.BackgroundExecutionManager;\nusing BackgroundTaskRegistration = Windows.ApplicationModel.Background.BackgroundTaskRegistration;\nusing DeviceInformation = Windows.Devices.Enumeration.DeviceInformation;\nusing BluetoothLEDevice = Windows.Devices.Bluetooth.BluetoothLEDevice;\nusing KeyFob = KeepTheKeysCommon.KeyFob;\n\nnamespace KeepTheKeys\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public ObservableCollection<KeyFob> Devices { get; private set; }\n\n        public MainPage()\n        {\n            Devices = new ObservableCollection<KeyFob>();\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = NavigationCacheMode.Required;\n        }\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.\n        /// This parameter is typically used to configure the page.</param>\n        protected override async void OnNavigatedTo(NavigationEventArgs e)\n        {\n            // Request the right to have background tasks run in the future. This need only be done once\n            // after the app is installed, but it is harmless to do it every time the app is launched.\n            if (await BackgroundExecutiondManager.RequestAccessAsync() == BackgroundAccessStatus.Denied)\n            {\n                // TODO: What?\n            }\n\n            // Acquire the set of background tasks that we already have registered. Store them into a dictionary, keyed\n            // by task name. (For each LE device, we will use a task name that is derived from its Bluetooth address).\n            Dictionary<string, BackgroundTaskRegistration> taskRegistrations = new Dictionary<string, BackgroundTaskRegistration>();\n            foreach (BackgroundTaskRegistration reg in BackgroundTaskRegistration.AllTasks.Values)\n            {\n                taskRegistrations[reg.Name] = reg;                \n            }\n\n            // Get the list of paired Bluetooth LE devices, and add them to our 'devices' list. Associate each device with\n            // its pre-existing registration if any, and remove that registration from our dictionary.\n            Devices.Clear();\n            foreach (DeviceInformation di in await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector()))\n            {\n                BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(di.Id);\n                KeyFob device = new KeyFob(bleDevice);\n                if (taskRegistrations.ContainsKey(device.TaskName))\n                {\n                    device.TaskRegistration = taskRegistrations[device.TaskName];\n                    taskRegistrations.Remove(device.TaskName);\n                }\n                Devices.Add(device);\n            }\n\n            // Unregister any remaining background tasks that remain in our dictionary. These are tasks that we registered\n            // for Bluetooth LE devices that have since been unpaired.\n            foreach (BackgroundTaskRegistration reg in taskRegistrations.Values)\n            {\n                reg.Unregister(false);\n            }\n        }\n\n        private void deviceListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (deviceListBox.SelectedItem != null)\n            {\n                Frame.Navigate(typeof(DevicePage), deviceListBox.SelectedItem);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n  <Identity Name=\"b86c429b-0b09-44c8-97ac-b5ab63c0964e\" Publisher=\"CN=Jim\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"b86c429b-0b09-44c8-97ac-b5ab63c0964e\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>KeepTheKeys</DisplayName>\n    <PublisherDisplayName>Jim</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"KeepTheKeys.App\">\n      <uap:VisualElements DisplayName=\"KeepTheKeys\" Square150x150Logo=\"Assets\\Logo.png\" Square44x44Logo=\"Assets\\SmallLogo.png\" \n                          Description=\"KeepTheKeys\"  BackgroundColor=\"#00A2E8\" >\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        <!--Used in XAML Designer. DO NOT REMOVE-->\n      </uap:VisualElements>\n      <Extensions>\n        <Extension Category=\"windows.backgroundTasks\" EntryPoint=\"KeepTheKeysBackground.KeyFobTask\">\n          <BackgroundTasks>\n            <Task Type=\"deviceConnectionChange\" />\n          </BackgroundTasks>\n        </Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <DeviceCapability Name=\"bluetooth.genericAttributeProfile\">\n      <Device Id=\"any\">\n        <Function Type=\"serviceId:1803\" />\n      </Device>\n    </DeviceCapability>\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"KeepTheKeys\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"KeepTheKeys\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys/RadioButtonValueConverter.cs",
    "content": "﻿using System;\n\nusing AlertLevel = KeepTheKeysCommon.AlertLevel;\nusing DependencyProperty = Windows.UI.Xaml.DependencyProperty;\n\nnamespace KeepTheKeys\n{\n    // This class converts between a value of an enumerated type and a boolean suitable for a binding\n    // from the IsChecked property of a RadioButton to an enum-typed property of an object.\n    // The converter parameter should be the name of the enum value for that RadioButton.\n\n    public class RadioButtonValueConverter<EnumType> : Windows.UI.Xaml.Data.IValueConverter\n        where EnumType : struct\n    {\n        // Convert from enum value to boolean. Return true iff value == converter parameter.\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            return value.Equals(Enum.Parse(typeof(EnumType), (string)parameter));\n        }\n\n        // Convert from bool to enum value. If the input is true, return the parameter value.\n        // Otherwise return DependencyProperty.UnsetValue, which means that the value will not\n        // be propagated from the UI control to the bound property.\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            if ((bool)value)\n            {\n                return Enum.Parse(typeof(EnumType), (string)parameter);\n            }\n            else\n            {\n                return DependencyProperty.UnsetValue;\n            }\n        }\n    }\n    public class AlertLevelRadioButtonValueConverter : RadioButtonValueConverter<AlertLevel> { }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeys.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KeepTheKeys\", \"KeepTheKeys\\KeepTheKeys.csproj\", \"{C51D8C90-18B1-4649-87DE-6AED44DF6E58}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KeepTheKeysBackground\", \"KeepTheKeysBackground\\KeepTheKeysBackground.csproj\", \"{EC849C2C-C169-4D33-890F-3767471D01EF}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KeepTheKeysCommon\", \"KeepTheKeysCommon\\KeepTheKeysCommon.csproj\", \"{20433324-BE6B-49F0-8FE3-CFEFF108086D}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|x86.Build.0 = Debug|x86\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|ARM.Build.0 = Release|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|x86.ActiveCfg = Release|x86\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|x86.Build.0 = Release|x86\n\t\t{C51D8C90-18B1-4649-87DE-6AED44DF6E58}.Release|x86.Deploy.0 = Release|x86\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Debug|x86.Build.0 = Debug|x86\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Release|ARM.Build.0 = Release|ARM\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Release|x86.ActiveCfg = Release|x86\n\t\t{EC849C2C-C169-4D33-890F-3767471D01EF}.Release|x86.Build.0 = Release|x86\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Debug|x86.Build.0 = Debug|x86\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Release|ARM.Build.0 = Release|ARM\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Release|x86.ActiveCfg = Release|x86\n\t\t{20433324-BE6B-49F0-8FE3-CFEFF108086D}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysBackground/KeepTheKeysBackground.csproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{EC849C2C-C169-4D33-890F-3767471D01EF}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>KeepTheKeysBackground</RootNamespace>\n    <AssemblyName>KeepTheKeysBackground</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <ProjectReference Include=\"..\\KeepTheKeysCommon\\KeepTheKeysCommon.csproj\">\n      <Project>{20433324-be6b-49f0-8fe3-cfeff108086d}</Project>\n      <Name>KeepTheKeysCommon</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"KeyFobTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  \n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>\n\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysBackground/KeyFobTask.cs",
    "content": "﻿using System;\n\n//  Make it obvious which namespace provided each referenced type:\nusing BackgroundTaskDeferral = Windows.ApplicationModel.Background.BackgroundTaskDeferral;\nusing BluetoothConnectionStatus = Windows.Devices.Bluetooth.BluetoothConnectionStatus;\nusing BluetoothLEDevice = Windows.Devices.Bluetooth.BluetoothLEDevice;\nusing DeviceConnectionChangeTriggerDetails = Windows.Devices.Enumeration.DeviceConnectionChangeTriggerDetails;\nusing DeviceInformation = Windows.Devices.Enumeration.DeviceInformation;\nusing IBackgroundTask = Windows.ApplicationModel.Background.IBackgroundTask;\nusing KeyFob = KeepTheKeysCommon.KeyFob;\nusing ToastNotificationManager = Windows.UI.Notifications.ToastNotificationManager;\nusing ToastNotifier = Windows.UI.Notifications.ToastNotifier;\nusing ToastNotification = Windows.UI.Notifications.ToastNotification;\nusing ToastTemplateType = Windows.UI.Notifications.ToastTemplateType;\nusing XmlDocument = Windows.Data.Xml.Dom.XmlDocument;\n\nnamespace KeepTheKeysBackground\n{\n    public sealed class KeyFobTask : IBackgroundTask\n    {\n        public async void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)\n        {\n            BackgroundTaskDeferral deferral = taskInstance.GetDeferral();\n            try\n            {\n                DeviceConnectionChangeTriggerDetails details = (DeviceConnectionChangeTriggerDetails)taskInstance.TriggerDetails;\n                BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(details.DeviceId);\n                KeyFob device = new KeyFob(bleDevice);\n\n                if (bleDevice.ConnectionStatus == BluetoothConnectionStatus.Connected)\n                {\n                    if (device.AlertOnDevice && device.HasLinkLossService)\n                    {\n                        await device.SetAlertLevelCharacteristic();\n                    }\n                }\n                else\n                {\n                    if (device.AlertOnPhone)\n                    {\n                        XmlDocument xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n                        xml.SelectSingleNode(\"/toast/visual/binding/text\").InnerText = string.Format(\"Device {0} is out of range.\", device.Name);\n                        ToastNotification toast = new ToastNotification(xml);\n                        ToastNotifier notifier = ToastNotificationManager.CreateToastNotifier();\n                        notifier.Show(toast);\n                    }\n                }\n            }\n            finally\n            {\n                deferral.Complete();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysBackground/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"KeepTheKeysBackground\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"KeepTheKeysBackground\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysCommon/AlertLevel.cs",
    "content": "﻿namespace KeepTheKeysCommon\n{\n    // Values for GATT Alert Level characteristic.\n    // Reference:  https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.alert_level.xml\n    public enum AlertLevel : byte\n    {\n        None = 0,\n        Mild = 1,\n        High = 2,\n    }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysCommon/KeepTheKeysCommon.csproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{20433324-BE6B-49F0-8FE3-CFEFF108086D}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>KeepTheKeysCommon</RootNamespace>\n    <AssemblyName>KeepTheKeysCommon</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AlertLevel.cs\" />\n    <Compile Include=\"KeyFob.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  \n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>\n\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysCommon/KeyFob.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices.WindowsRuntime; // extension method byte[].AsBuffer()\n\n//  Make it obvious which namespace provided each referenced type:\nusing ApplicationData = Windows.Storage.ApplicationData;\nusing ApplicationDataContainer = Windows.Storage.ApplicationDataContainer;\nusing BackgroundTaskBuilder = Windows.ApplicationModel.Background.BackgroundTaskBuilder;\nusing BackgroundTaskRegistration = Windows.ApplicationModel.Background.BackgroundTaskRegistration;\nusing BluetoothConnectionStatus = Windows.Devices.Bluetooth.BluetoothConnectionStatus;\nusing BluetoothLEDevice = Windows.Devices.Bluetooth.BluetoothLEDevice;\nusing DeviceConnectionChangeTrigger = Windows.ApplicationModel.Background.DeviceConnectionChangeTrigger;\nusing GattCharacteristic = Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristic;\nusing GattCharacteristicUuids = Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristicUuids;\nusing GattDeviceService = Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceService;\nusing GattServiceUuids = Windows.Devices.Bluetooth.GenericAttributeProfile.GattServiceUuids;\nusing GattWriteOption = Windows.Devices.Bluetooth.GenericAttributeProfile.GattWriteOption;\nusing Task = System.Threading.Tasks.Task;\n\nnamespace KeepTheKeysCommon\n{\n    public class KeyFob\n    {\n        // static data\n        private static ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;\n\n        // data members\n        private BluetoothLEDevice device;           // constant, always non-null\n        private string addressString;               // constant, Bluetooth address as 12 hex digits\n        private GattDeviceService linkLossService;  // constant, may be null\n        private bool alertOnPhone;                  // true iff we want a popup when this device disconnects\n        private bool alertOnDevice;                 // true iff we want device to alert upon disconnection\n        private AlertLevel alertLevel;              // alert level that device will set upon disconnection\n\n        // trivial properties\n        public BackgroundTaskRegistration TaskRegistration { get; set; }\n\n        // readonly properties\n        public bool HasLinkLossService { get { return linkLossService != null; } }\n        public string Name { get { return device.Name; } }\n        public string TaskName { get { return addressString; } }\n\n        // settable properties, persisted in LocalSettings\n\n        public bool AlertOnPhone\n        {\n            get { return alertOnPhone; }\n            set\n            {\n                alertOnPhone = value;\n                SaveSettings();\n            }\n        }\n\n        public bool AlertOnDevice\n        {\n            get { return alertOnDevice; }\n            set\n            {\n                alertOnDevice = value;\n                SaveSettings();\n            }\n        }\n\n\n        public AlertLevel AlertLevel\n        {\n            get { return alertLevel; }\n            set\n            {\n                alertLevel = value;\n                SaveSettings();\n            }\n        }\n\n        // Constructor\n        public KeyFob(BluetoothLEDevice device)\n        {\n            this.device = device;\n            addressString = device.BluetoothAddress.ToString(\"x012\");\n            try\n            {\n                linkLossService = device.GetGattService(GattServiceUuids.LinkLoss);\n            }\n            catch (Exception)\n            {\n                // e.HResult == 0x80070490 means that the device doesn't have the requested service.\n                // We can still alert on the phone upon disconnection, but cannot ask the device to alert.\n                // linkLossServer will remain equal to null.\n            }\n\n            if (localSettings.Values.ContainsKey(addressString))\n            {\n                string[] values = ((string)localSettings.Values[addressString]).Split(',');\n                alertOnPhone = bool.Parse(values[0]);\n                alertOnDevice = bool.Parse(values[1]);\n                alertLevel = (AlertLevel)Enum.Parse(typeof(AlertLevel), values[2]);\n            }\n        }\n\n        // React to a change in configuration parameters:\n        //    Save new values to local settings\n        //    Set link-loss alert level on the device if appropriate\n        //    Register or unregister background task if necessary\n        private async void SaveSettings()\n        {\n            // Save this device's settings into nonvolatile storage\n            localSettings.Values[addressString] = string.Join(\",\", alertOnPhone, alertOnDevice, alertLevel);\n\n            // If the device is connected and wants to hear about the alert level on link loss, tell it\n            if (alertOnDevice && device.ConnectionStatus == BluetoothConnectionStatus.Connected)\n            {\n                await SetAlertLevelCharacteristic();\n            }\n\n            // If we need a background task and one isn't already registered, create one\n            if (TaskRegistration == null && (alertOnPhone || alertOnDevice))\n            {\n                DeviceConnectionChangeTrigger trigger = await DeviceConnectionChangeTrigger.FromIdAsync(device.DeviceId);\n                trigger.MaintainConnection = true;\n                BackgroundTaskBuilder builder = new BackgroundTaskBuilder();\n                builder.Name = TaskName;\n                builder.TaskEntryPoint = \"KeepTheKeysBackground.KeyFobTask\";\n                builder.SetTrigger(trigger);\n                TaskRegistration = builder.Register();\n            }\n\n            // If we don't need a background task but have one, unregister it\n            if (TaskRegistration != null && !alertOnPhone && !alertOnDevice)\n            {\n                TaskRegistration.Unregister(false);\n                TaskRegistration = null;\n            }\n        }\n\n        // Set the alert-level characteristic on the remote device\n        public async Task SetAlertLevelCharacteristic()\n        {\n            // try-catch block protects us from the race where the device disconnects\n            // just after we've determined that it is connected.\n            try\n            {\n                byte[] data = new byte[1];\n                data[0] = (byte)alertLevel;\n\n                // The LinkLoss service should contain exactly one instance of the AlertLevel characteristic\n                GattCharacteristic characteristic = linkLossService.GetCharacteristics(GattCharacteristicUuids.AlertLevel)[0];\n\n                await characteristic.WriteValueAsync(data.AsBuffer(), GattWriteOption.WriteWithResponse);\n            }\n            catch (Exception)\n            {\n                // ignore exception\n            }\n        }\n\n        // Provide a human-readable name for this object.\n        public override string ToString()\n        {\n            return device.Name;\n        }\n    }\n}\n"
  },
  {
    "path": "KeepTheKeys/KeepTheKeysCommon/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"KeepTheKeysCommon\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"KeepTheKeysCommon\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "KeepTheKeys/Notes.txt",
    "content": "1. Background task MUST be a winmd project.\n2. Add reference from main project to background project.\n3. In Package.appxmanifest/Application, set \"Toast capable\" to \"Yes\".\n4. In Package.appxmanifest/Declarations, add \"Background Task\", check \"Device connection change\", set Entry Point.\n5. In code for Package.appxmanifest, add:\n  <Capabilities>\n    <m2:DeviceCapability Name=\"bluetooth.genericAttributeProfile\">\n      <m2:Device Id=\"any\">\n        <m2:Function Type=\"serviceId:1803\" />\n      </m2:Device>\n    </m2:DeviceCapability>\n  </Capabilities>\n6. call BackgroundExecutionManager.RequestAccessAsynnc\n7. Fully-qualified class name of background task MUST match value in Package.appxmanifest/Declarations.\n8. Fully-qualified class name of background task MUST match value in BackgroundTaskBuilder.EntryPoint.\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"LaunchForResultsDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchForResultsDemo\">\n\n</Application>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace LaunchForResultsDemo\n{\n  /// <summary>\n  /// Provides application-specific behavior to supplement the default Application class.\n  /// </summary>\n  sealed partial class App : Application\n  {\n    /// <summary>\n    /// Initializes the singleton application object.  This is the first line of authored code\n    /// executed, and as such is the logical equivalent of main() or WinMain().\n    /// </summary>\n    public App()\n    {\n      this.InitializeComponent();\n      this.Suspending += OnSuspending;\n    }\n\n    /// <summary>\n    /// Invoked when the application is launched normally by the end user.  Other entry points\n    /// will be used such as when the application is launched to open a specific file.\n    /// </summary>\n    /// <param name=\"e\">Details about the launch request and process.</param>\n    protected override void OnLaunched(LaunchActivatedEventArgs e)\n    {\n\n#if DEBUG\n      if (System.Diagnostics.Debugger.IsAttached)\n      {\n        this.DebugSettings.EnableFrameRateCounter = true;\n      }\n#endif\n\n      Frame rootFrame = Window.Current.Content as Frame;\n\n      // Do not repeat app initialization when the Window already has content,\n      // just ensure that the window is active\n      if (rootFrame == null)\n      {\n        // Create a Frame to act as the navigation context and navigate to the first page\n        rootFrame = new Frame();\n        // Set the default language\n        rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n        rootFrame.NavigationFailed += OnNavigationFailed;\n\n        if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n        {\n          //TODO: Load state from previously suspended application\n        }\n\n        // Place the frame in the current Window\n        Window.Current.Content = rootFrame;\n      }\n\n      if (rootFrame.Content == null)\n      {\n        // When the navigation stack isn't restored navigate to the first page,\n        // configuring the new page by passing required information as a navigation\n        // parameter\n        rootFrame.Navigate(typeof(MainPage), e.Arguments);\n      }\n      // Ensure the current window is active\n      Window.Current.Activate();\n    }\n\n    /// <summary>\n    /// Invoked when Navigation to a certain page fails\n    /// </summary>\n    /// <param name=\"sender\">The Frame which failed navigation</param>\n    /// <param name=\"e\">Details about the navigation failure</param>\n    void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n    {\n      throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n    }\n\n    /// <summary>\n    /// Invoked when application execution is being suspended.  Application state is saved\n    /// without knowing whether the application will be terminated or resumed with the contents\n    /// of memory still intact.\n    /// </summary>\n    /// <param name=\"sender\">The source of the suspend request.</param>\n    /// <param name=\"e\">Details about the suspend request.</param>\n    private void OnSuspending(object sender, SuspendingEventArgs e)\n    {\n      var deferral = e.SuspendingOperation.GetDeferral();\n      //TODO: Save application state and stop any background activity\n      deferral.Complete();\n    }\n  }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Common/NavigationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace LaunchForResultsDemo.Common\n{\n    /// <summary>\n    /// NavigationHelper aids in navigation between pages.  It provides commands used to \n    /// navigate back and forward as well as registers for standard mouse and keyboard \n    /// shortcuts used to go back and forward in Windows and the hardware back button in\n    /// Windows Phone.  In addition it integrates SuspensionManger to handle process lifetime\n    /// management and state management when navigating between pages.\n    /// </summary>\n    /// <example>\n    /// To make use of NavigationHelper, follow these two steps or\n    /// start with a BasicPage or any other Page item template other than BlankPage.\n    /// \n    /// 1) Create an instance of the NavigationHelper somewhere such as in the \n    ///     constructor for the page and register a callback for the LoadState and \n    ///     SaveState events.\n    /// <code>\n    ///     public MyPage()\n    ///     {\n    ///         this.InitializeComponent();\n    ///         var navigationHelper = new NavigationHelper(this);\n    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;\n    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;\n    ///     }\n    ///     \n    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    ///     { }\n    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)\n    ///     { }\n    /// </code>\n    /// \n    /// 2) Register the page to call into the NavigationHelper whenever the page participates \n    ///     in navigation by overriding the <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo\"/> \n    ///     and <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedFrom\"/> events.\n    /// <code>\n    ///     protected override void OnNavigatedTo(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedTo(e);\n    ///     }\n    ///     \n    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedFrom(e);\n    ///     }\n    /// </code>\n    /// </example>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public class NavigationHelper : DependencyObject\n    {\n        private Page Page { get; set; }\n        private Frame Frame { get { return this.Page.Frame; } }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationHelper\"/> class.\n        /// </summary>\n        /// <param name=\"page\">A reference to the current page used for navigation.  \n        /// This reference allows for frame manipulation and to ensure that keyboard \n        /// navigation requests only occur when the page is occupying the entire window.</param>\n        public NavigationHelper(Page page)\n        {\n            this.Page = page;\n\n            // When this page is part of the visual tree make two changes:\n            // 1) Map application view state to visual state for the page\n            // 2) Handle hardware navigation requests\n            this.Page.Loaded += (sender, e) =>\n            {\n                // Listen for Back requested\n                SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;\n\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                  // Listen to the window directly so focus isn't required\n                  Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                      CoreDispatcher_AcceleratorKeyActivated;\n                  Window.Current.CoreWindow.PointerPressed +=\n                      this.CoreWindow_PointerPressed;\n                }\n            };\n\n            // Undo the same changes when the page is no longer visible\n            this.Page.Unloaded += (sender, e) =>\n            {\n                SystemNavigationManager.GetForCurrentView().BackRequested -= App_BackRequested;\n\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                      CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n            };\n        }\n\n\n        #region Navigation support\n\n        RelayCommand _goBackCommand;\n        RelayCommand _goForwardCommand;\n\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used to bind to the back Button's Command property\n        /// for navigating to the most recent item in back navigation history, if a Frame\n        /// manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoBack\"/>\n        /// as the Execute Action and <see cref=\"CanGoBack\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoBackCommand\n        {\n            get\n            {\n                if (_goBackCommand == null)\n                {\n                    _goBackCommand = new RelayCommand(\n                        () => this.GoBack(),\n                        () => this.CanGoBack());\n                }\n                return _goBackCommand;\n            }\n            set\n            {\n                _goBackCommand = value;\n            }\n        }\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used for navigating to the most recent item in \n        /// the forward navigation history, if a Frame manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoForward\"/>\n        /// as the Execute Action and <see cref=\"CanGoForward\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoForwardCommand\n        {\n            get\n            {\n                if (_goForwardCommand == null)\n                {\n                    _goForwardCommand = new RelayCommand(\n                        () => this.GoForward(),\n                        () => this.CanGoForward());\n                }\n                return _goForwardCommand;\n            }\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go back.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the back navigation history.\n        /// </returns>\n        public virtual bool CanGoBack()\n        {\n            return this.Frame != null && this.Frame.CanGoBack;\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go forward.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the forward navigation history.\n        /// </returns>\n        public virtual bool CanGoForward()\n        {\n            return this.Frame != null && this.Frame.CanGoForward;\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoBack\"/> method.\n        /// </summary>\n        public virtual void GoBack()\n        {\n            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoForward\"/> method.\n        /// </summary>\n        public virtual void GoForward()\n        {\n            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();\n        }\n\n\n        /// <summary>\n        /// Invoked when the back button is pressed.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void App_BackRequested(object sender, BackRequestedEventArgs e)\n        {\n            if (this.GoBackCommand.CanExecute(null))\n            {\n                e.Handled = true;\n                this.GoBackCommand.Execute(null);\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every keystroke, including system keys such as Alt key combinations, when\n        /// this page is active and occupies the entire window.  Used to detect keyboard navigation\n        /// between pages even when the page itself doesn't have focus.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,\n            AcceleratorKeyEventArgs e)\n        {\n            var virtualKey = e.VirtualKey;\n\n            // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n            // are pressed\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&\n                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||\n                (int)virtualKey == 166 || (int)virtualKey == 167))\n            {\n                var coreWindow = Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n                bool noModifiers = !menuKey && !controlKey && !shiftKey;\n                bool onlyAlt = menuKey && !controlKey && !shiftKey;\n\n                if (((int)virtualKey == 166 && noModifiers) ||\n                    (virtualKey == VirtualKey.Left && onlyAlt))\n                {\n                    // When the previous key or Alt+Left are pressed navigate back\n                    e.Handled = true;\n                    this.GoBackCommand.Execute(null);\n                }\n                else if (((int)virtualKey == 167 && noModifiers) ||\n                    (virtualKey == VirtualKey.Right && onlyAlt))\n                {\n                    // When the next key or Alt+Right are pressed navigate forward\n                    e.Handled = true;\n                    this.GoForwardCommand.Execute(null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender,\n            PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed)\n                return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) this.GoBackCommand.Execute(null);\n                if (forwardPressed) this.GoForwardCommand.Execute(null);\n            }\n        }\n\n        #endregion\n\n        #region Process lifetime management\n\n        private String _pageKey;\n\n        /// <summary>\n        /// Register this event on the current page to populate the page\n        /// with content passed during navigation as well as any saved\n        /// state provided when recreating a page from a prior session.\n        /// </summary>\n        public event LoadStateEventHandler LoadState;\n        /// <summary>\n        /// Register this event on the current page to preserve\n        /// state associated with the current page in case the\n        /// application is suspended or the page is discarded from\n        /// the navigaqtion cache.\n        /// </summary>\n        public event SaveStateEventHandler SaveState;\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.  \n        /// This method calls <see cref=\"LoadState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            this._pageKey = \"Page-\" + this.Frame.BackStackDepth;\n\n            if (e.NavigationMode == NavigationMode.New)\n            {\n                // Clear existing state for forward navigation when adding a new page to the\n                // navigation stack\n                var nextPageKey = this._pageKey;\n                int nextPageIndex = this.Frame.BackStackDepth;\n                while (frameState.Remove(nextPageKey))\n                {\n                    nextPageIndex++;\n                    nextPageKey = \"Page-\" + nextPageIndex;\n                }\n\n                // Pass the navigation parameter to the new page\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));\n                }\n            }\n            else\n            {\n                // Pass the navigation parameter and preserved page state to the page, using\n                // the same strategy for loading suspended state and recreating pages discarded\n                // from cache\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked when this page will no longer be displayed in a Frame.\n        /// This method calls <see cref=\"SaveState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            var pageState = new Dictionary<String, Object>();\n            if (this.SaveState != null)\n            {\n                this.SaveState(this, new SaveStateEventArgs(pageState));\n            }\n            frameState[_pageKey] = pageState;\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.LoadState\"/>event\n    /// </summary>\n    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.SaveState\"/>event\n    /// </summary>\n    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);\n\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to load state.\n    /// </summary>\n    public class LoadStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </summary>\n        public Object NavigationParameter { get; private set; }\n        /// <summary>\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LoadStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"navigationParameter\">\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </param>\n        /// <param name=\"pageState\">\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </param>\n        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.NavigationParameter = navigationParameter;\n            this.PageState = pageState;\n        }\n    }\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to save state.\n    /// </summary>\n    public class SaveStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// An empty dictionary to be populated with serializable state.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SaveStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"pageState\">An empty dictionary to be populated with serializable state.</param>\n        public SaveStateEventArgs(Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.PageState = pageState;\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Common/ObservableDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Foundation.Collections;\n\nnamespace LaunchForResultsDemo.Common\n{\n    /// <summary>\n    /// Implementation of IObservableMap that supports reentrancy for use as a default view\n    /// model.\n    /// </summary>\n    public class ObservableDictionary : IObservableMap<string, object>\n    {\n        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>\n        {\n            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)\n            {\n                this.CollectionChange = change;\n                this.Key = key;\n            }\n\n            public CollectionChange CollectionChange { get; private set; }\n            public string Key { get; private set; }\n        }\n\n        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();\n        public event MapChangedEventHandler<string, object> MapChanged;\n\n        private void InvokeMapChanged(CollectionChange change, string key)\n        {\n            var eventHandler = MapChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));\n            }\n        }\n\n        public void Add(string key, object value)\n        {\n            this._dictionary.Add(key, value);\n            this.InvokeMapChanged(CollectionChange.ItemInserted, key);\n        }\n\n        public void Add(KeyValuePair<string, object> item)\n        {\n            this.Add(item.Key, item.Value);\n        }\n\n        public bool Remove(string key)\n        {\n            if (this._dictionary.Remove(key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n                return true;\n            }\n            return false;\n        }\n\n        public bool Remove(KeyValuePair<string, object> item)\n        {\n            object currentValue;\n            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&\n                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);\n                return true;\n            }\n            return false;\n        }\n\n        public object this[string key]\n        {\n            get\n            {\n                return this._dictionary[key];\n            }\n            set\n            {\n                this._dictionary[key] = value;\n                this.InvokeMapChanged(CollectionChange.ItemChanged, key);\n            }\n        }\n\n        public void Clear()\n        {\n            var priorKeys = this._dictionary.Keys.ToArray();\n            this._dictionary.Clear();\n            foreach (var key in priorKeys)\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n            }\n        }\n\n        public ICollection<string> Keys\n        {\n            get { return this._dictionary.Keys; }\n        }\n\n        public bool ContainsKey(string key)\n        {\n            return this._dictionary.ContainsKey(key);\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return this._dictionary.TryGetValue(key, out value);\n        }\n\n        public ICollection<object> Values\n        {\n            get { return this._dictionary.Values; }\n        }\n\n        public bool Contains(KeyValuePair<string, object> item)\n        {\n            return this._dictionary.Contains(item);\n        }\n\n        public int Count\n        {\n            get { return this._dictionary.Count; }\n        }\n\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)\n        {\n            int arraySize = array.Length;\n            foreach (var pair in this._dictionary)\n            {\n                if (arrayIndex >= arraySize) break;\n                array[arrayIndex++] = pair;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Common/RelayCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace LaunchForResultsDemo.Common\n{\n    /// <summary>\n    /// A command whose sole purpose is to relay its functionality \n    /// to other objects by invoking delegates. \n    /// The default return value for the CanExecute method is 'true'.\n    /// <see cref=\"RaiseCanExecuteChanged\"/> needs to be called whenever\n    /// <see cref=\"CanExecute\"/> is expected to return a different value.\n    /// </summary>\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n\n        /// <summary>\n        /// Raised when RaiseCanExecuteChanged is called.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n\n        /// <summary>\n        /// Creates a new command that can always execute.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        /// <summary>\n        /// Creates a new command.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        /// <param name=\"canExecute\">The execution status logic.</param>\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canExecute;\n        }\n\n        /// <summary>\n        /// Determines whether this <see cref=\"RelayCommand\"/> can execute in its current state.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        /// <returns>true if this command can be executed; otherwise, false.</returns>\n        public bool CanExecute(object parameter)\n        {\n            return _canExecute == null ? true : _canExecute();\n        }\n\n        /// <summary>\n        /// Executes the <see cref=\"RelayCommand\"/> on the current command target.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            _execute();\n        }\n\n        /// <summary>\n        /// Method used to raise the <see cref=\"CanExecuteChanged\"/> event\n        /// to indicate that the return value of the <see cref=\"CanExecute\"/>\n        /// method has changed.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            var handler = CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Common/SuspensionManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace LaunchForResultsDemo.Common\n{\n    /// <summary>\n    /// SuspensionManager captures global session state to simplify process lifetime management\n    /// for an application.  Note that session state will be automatically cleared under a variety\n    /// of conditions and should only be used to store information that would be convenient to\n    /// carry across sessions, but that should be discarded when an application crashes or is\n    /// upgraded.\n    /// </summary>\n    internal sealed class SuspensionManager\n    {\n        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();\n        private static List<Type> _knownTypes = new List<Type>();\n        private const string sessionStateFilename = \"_sessionState.xml\";\n\n        /// <summary>\n        /// Provides access to global session state for the current session.  This state is\n        /// serialized by <see cref=\"SaveAsync\"/> and restored by\n        /// <see cref=\"RestoreAsync\"/>, so values must be serializable by\n        /// <see cref=\"DataContractSerializer\"/> and should be as compact as possible.  Strings\n        /// and other self-contained data types are strongly recommended.\n        /// </summary>\n        public static Dictionary<string, object> SessionState\n        {\n            get { return _sessionState; }\n        }\n\n        /// <summary>\n        /// List of custom types provided to the <see cref=\"DataContractSerializer\"/> when\n        /// reading and writing session state.  Initially empty, additional types may be\n        /// added to customize the serialization process.\n        /// </summary>\n        public static List<Type> KnownTypes\n        {\n            get { return _knownTypes; }\n        }\n\n        /// <summary>\n        /// Save the current <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also preserve their current\n        /// navigation stack, which in turn gives their active <see cref=\"Page\"/> an opportunity\n        /// to save its state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been saved.</returns>\n        public static async Task SaveAsync()\n        {\n            try\n            {\n                // Save the navigation state for all registered frames\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        SaveFrameNavigationState(frame);\n                    }\n                }\n\n                // Serialize the session state synchronously to avoid asynchronous access to shared\n                // state\n                MemoryStream sessionData = new MemoryStream();\n                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                serializer.WriteObject(sessionData, _sessionState);\n\n                // Get an output stream for the SessionState file and write the state asynchronously\n                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);\n                using (Stream fileStream = await file.OpenStreamForWriteAsync())\n                {\n                    sessionData.Seek(0, SeekOrigin.Begin);\n                    await sessionData.CopyToAsync(fileStream);\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        /// <summary>\n        /// Restores previously saved <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also restore their prior navigation\n        /// state, which in turn gives their active <see cref=\"Page\"/> an opportunity restore its\n        /// state.\n        /// </summary>\n        /// <param name=\"sessionBaseKey\">An optional key that identifies the type of session.\n        /// This can be used to distinguish between multiple application launch scenarios.</param>\n        /// <returns>An asynchronous task that reflects when session state has been read.  The\n        /// content of <see cref=\"SessionState\"/> should not be relied upon until this task\n        /// completes.</returns>\n        public static async Task RestoreAsync(String sessionBaseKey = null)\n        {\n            _sessionState = new Dictionary<String, Object>();\n\n            try\n            {\n                // Get the input stream for the SessionState file\n                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);\n                using (IInputStream inStream = await file.OpenSequentialReadAsync())\n                {\n                    // Deserialize the Session State\n                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());\n                }\n\n                // Restore any registered frames to their saved state\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame) && (string)frame.GetValue(FrameSessionBaseKeyProperty) == sessionBaseKey)\n                    {\n                        frame.ClearValue(FrameSessionStateProperty);\n                        RestoreFrameNavigationState(frame);\n                    }\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        private static DependencyProperty FrameSessionStateKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionStateKey\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionBaseKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionBaseKeyParams\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionStateProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionState\", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);\n        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();\n\n        /// <summary>\n        /// Registers a <see cref=\"Frame\"/> instance to allow its navigation history to be saved to\n        /// and restored from <see cref=\"SessionState\"/>.  Frames should be registered once\n        /// immediately after creation if they will participate in session state management.  Upon\n        /// registration if state has already been restored for the specified key\n        /// the navigation history will immediately be restored.  Subsequent invocations of\n        /// <see cref=\"RestoreAsync\"/> will also restore navigation history.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should be managed by\n        /// <see cref=\"SuspensionManager\"/></param>\n        /// <param name=\"sessionStateKey\">A unique key into <see cref=\"SessionState\"/> used to\n        /// store navigation-related information.</param>\n        /// <param name=\"sessionBaseKey\">An optional key that identifies the type of session.\n        /// This can be used to distinguish between multiple application launch scenarios.</param>\n        public static void RegisterFrame(Frame frame, String sessionStateKey, String sessionBaseKey = null)\n        {\n            if (frame.GetValue(FrameSessionStateKeyProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames can only be registered to one session state key\");\n            }\n\n            if (frame.GetValue(FrameSessionStateProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames must be either be registered before accessing frame session state, or not registered at all\");\n            }\n\n            if (!string.IsNullOrEmpty(sessionBaseKey))\n            {\n                frame.SetValue(FrameSessionBaseKeyProperty, sessionBaseKey);\n                sessionStateKey = sessionBaseKey + \"_\" + sessionStateKey;\n            }\n\n            // Use a dependency property to associate the session key with a frame, and keep a list of frames whose\n            // navigation state should be managed\n            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);\n            _registeredFrames.Add(new WeakReference<Frame>(frame));\n\n            // Check to see if navigation state can be restored\n            RestoreFrameNavigationState(frame);\n        }\n\n        /// <summary>\n        /// Disassociates a <see cref=\"Frame\"/> previously registered by <see cref=\"RegisterFrame\"/>\n        /// from <see cref=\"SessionState\"/>.  Any navigation state previously captured will be\n        /// removed.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should no longer be\n        /// managed.</param>\n        public static void UnregisterFrame(Frame frame)\n        {\n            // Remove session state and remove the frame from the list of frames whose navigation\n            // state will be saved (along with any weak references that are no longer reachable)\n            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));\n            _registeredFrames.RemoveAll((weakFrameReference) =>\n            {\n                Frame testFrame;\n                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;\n            });\n        }\n\n        /// <summary>\n        /// Provides storage for session state associated with the specified <see cref=\"Frame\"/>.\n        /// Frames that have been previously registered with <see cref=\"RegisterFrame\"/> have\n        /// their session state saved and restored automatically as a part of the global\n        /// <see cref=\"SessionState\"/>.  Frames that are not registered have transient state\n        /// that can still be useful when restoring pages that have been discarded from the\n        /// navigation cache.\n        /// </summary>\n        /// <remarks>Apps may choose to rely on <see cref=\"NavigationHelper\"/> to manage\n        /// page-specific state instead of working with frame session state directly.</remarks>\n        /// <param name=\"frame\">The instance for which session state is desired.</param>\n        /// <returns>A collection of state subject to the same serialization mechanism as\n        /// <see cref=\"SessionState\"/>.</returns>\n        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)\n        {\n            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);\n\n            if (frameState == null)\n            {\n                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);\n                if (frameSessionKey != null)\n                {\n                    // Registered frames reflect the corresponding session state\n                    if (!_sessionState.ContainsKey(frameSessionKey))\n                    {\n                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();\n                    }\n                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];\n                }\n                else\n                {\n                    // Frames that aren't registered have transient state\n                    frameState = new Dictionary<String, Object>();\n                }\n                frame.SetValue(FrameSessionStateProperty, frameState);\n            }\n            return frameState;\n        }\n\n        private static void RestoreFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            if (frameState.ContainsKey(\"Navigation\"))\n            {\n                frame.SetNavigationState((String)frameState[\"Navigation\"]);\n            }\n        }\n\n        private static void SaveFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            frameState[\"Navigation\"] = frame.GetNavigationState();\n        }\n    }\n    public class SuspensionManagerException : Exception\n    {\n        public SuspensionManagerException()\n        {\n        }\n\n        public SuspensionManagerException(Exception e)\n            : base(\"SuspensionManager failed\", e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/ContinuationPage.xaml",
    "content": "﻿<Page\n    x:Name=\"pageRoot\"\n    x:Class=\"LaunchForResultsDemo.ContinuationPage\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchForResultsDemo\"\n    xmlns:common=\"using:LaunchForResultsDemo.Common\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n        <!-- TODO: Delete this line if the key AppName is declared in App.xaml -->\n        <x:String x:Key=\"AppName\">My Application</x:String>\n    </Page.Resources>\n\n    <!--\n        This grid acts as a root panel for the page that defines two rows:\n        * Row 0 contains the back button and page title\n        * Row 1 contains the rest of the page layout\n    -->\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"140\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- Back button and page title -->\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"20\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n            <!--<Button x:Name=\"backButton\" Margin=\"39,59,39,0\" Command=\"{Binding NavigationHelper.GoBackCommand, ElementName=pageRoot}\"\n                        Style=\"{StaticResource NavigationBackButtonNormalStyle}\"\n                        VerticalAlignment=\"Top\"\n                        AutomationProperties.Name=\"Back\"\n                        AutomationProperties.AutomationId=\"BackButton\"\n                        AutomationProperties.ItemType=\"Navigation Button\"/>-->\n            <TextBlock x:Name=\"pageTitle\" Text=\"Back in Launcher\" Style=\"{StaticResource HeaderTextBlockStyle}\" Grid.Column=\"1\" \n                        IsHitTestVisible=\"false\" TextWrapping=\"NoWrap\" VerticalAlignment=\"Bottom\" Margin=\"0,0,30,40\"/>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/ContinuationPage.xaml.cs",
    "content": "﻿using LaunchForResultsDemo.Common;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237\n\nnamespace LaunchForResultsDemo\n{\n  /// <summary>\n  /// A basic page that provides characteristics common to most applications.\n  /// </summary>\n  public sealed partial class ContinuationPage : Page\n  {\n\n    private NavigationHelper navigationHelper;\n\n    /// <summary>\n    /// NavigationHelper is used on each page to aid in navigation and \n    /// process lifetime management\n    /// </summary>\n    public NavigationHelper NavigationHelper\n    {\n      get { return this.navigationHelper; }\n    }\n\n\n    public ContinuationPage()\n    {\n      this.InitializeComponent();\n      this.navigationHelper = new NavigationHelper(this);\n      this.navigationHelper.LoadState += navigationHelper_LoadState;\n      this.navigationHelper.SaveState += navigationHelper_SaveState;\n    }\n\n    /// <summary>\n    /// Populates the page with content passed during navigation. Any saved state is also\n    /// provided when recreating a page from a prior session.\n    /// </summary>\n    /// <param name=\"sender\">\n    /// The source of the event; typically <see cref=\"Common.NavigationHelper\"/>\n    /// </param>\n    /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n    /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n    /// a dictionary of state preserved by this page during an earlier\n    /// session. The state will be null the first time a page is visited.</param>\n    private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    {\n      var navArgs = e.NavigationParameter;\n      if (navArgs != null)\n      {\n        var launchForResultsResultData = navArgs as ValueSet;\n        if (launchForResultsResultData != null)\n        {\n          var discard = new MessageDialog(\"Yay! You reached the continuation page in the original app, and the data passed back was \"\n              + (int)launchForResultsResultData[\"Answer\"]).ShowAsync();\n        }\n      }\n    }\n\n    /// <summary>\n    /// Preserves state associated with this page in case the application is suspended or the\n    /// page is discarded from the navigation cache.  Values must conform to the serialization\n    /// requirements of <see cref=\"Common.SuspensionManager.SessionState\"/>.\n    /// </summary>\n    /// <param name=\"sender\">The source of the event; typically <see cref=\"Common.NavigationHelper\"/></param>\n    /// <param name=\"e\">Event data that provides an empty dictionary to be populated with\n    /// serializable state.</param>\n    private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)\n    {\n    }\n\n    #region NavigationHelper registration\n\n    /// The methods provided in this section are simply used to allow\n    /// NavigationHelper to respond to the page's navigation methods.\n    /// \n    /// Page specific logic should be placed in event handlers for the  \n    /// <see cref=\"Common.NavigationHelper.LoadState\"/>\n    /// and <see cref=\"Common.NavigationHelper.SaveState\"/>.\n    /// The navigation parameter is available in the LoadState method \n    /// in addition to page state preserved during an earlier session.\n\n    protected override void OnNavigatedTo(NavigationEventArgs e)\n    {\n      navigationHelper.OnNavigatedTo(e);\n    }\n\n    protected override void OnNavigatedFrom(NavigationEventArgs e)\n    {\n      navigationHelper.OnNavigatedFrom(e);\n    }\n\n    #endregion\n  }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/LaunchForResultsDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{67F05EE2-6BD9-4BF8-856E-66A27B74215D}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>LaunchForResultsDemo</RootNamespace>\n    <AssemblyName>LaunchForResultsDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>LaunchForResultsDemo_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>4a7b7358</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\NavigationHelper.cs\" />\n    <Compile Include=\"Common\\ObservableDictionary.cs\" />\n    <Compile Include=\"Common\\RelayCommand.cs\" />\n    <Compile Include=\"Common\\SuspensionManager.cs\" />\n    <Compile Include=\"ContinuationPage.xaml.cs\">\n      <DependentUpon>ContinuationPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"LaunchForResultsDemo_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"ContinuationPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"LaunchForResultsDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchForResultsDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Button x:Name=\"LaunchForResultButton\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" \n                Content=\"Launch\" Click=\"LaunchForResultButton_Click\" />\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace LaunchForResultsDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private async void LaunchForResultButton_Click(object sender, RoutedEventArgs e)\n        {\n            var options = new LauncherOptions();\n            options.TargetApplicationPackageFamilyName = \"dae4aecf-5aae-497c-97b6-4122dec5af28_nsf9e2fmhb1sj\";\n\n            var launchResult = await Windows.System.Launcher.LaunchUriForResultsAsync(\n                new Uri(\"w10jumpstart:/this_bit_is_not_used_in_this_demo\"), \n                options, \n                null);\n\n            Frame.Navigate(typeof(ContinuationPage), launchResult.Result);\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"a298dbac-7b52-41c8-972a-bac038b130b2\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"a298dbac-7b52-41c8-972a-bac038b130b2\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>LaunchForResultsDemo</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"LaunchForResultsDemo.App\">\n      <uap:VisualElements\n        DisplayName=\"LaunchForResultsDemo\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"LaunchForResultsDemo\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"LaunchForResultsDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"LaunchForResultsDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchForResultsDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"LaunchForResultsDemo\", \"LaunchForResultsDemo\\LaunchForResultsDemo.csproj\", \"{67F05EE2-6BD9-4BF8-856E-66A27B74215D}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"LaunchTargetDemoApp\", \"LaunchTargetDemoApp\\LaunchTargetDemoApp.csproj\", \"{DC7DEE61-116D-49A8-AA40-BC64370940FC}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x64.Build.0 = Debug|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x86.Build.0 = Debug|x86\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|ARM.Build.0 = Release|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x64.ActiveCfg = Release|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x64.Build.0 = Release|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x64.Deploy.0 = Release|x64\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x86.ActiveCfg = Release|x86\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x86.Build.0 = Release|x86\n\t\t{67F05EE2-6BD9-4BF8-856E-66A27B74215D}.Release|x86.Deploy.0 = Release|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x64.Build.0 = Debug|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x86.Build.0 = Debug|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|ARM.Build.0 = Release|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x64.ActiveCfg = Release|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x64.Build.0 = Release|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x64.Deploy.0 = Release|x64\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x86.ActiveCfg = Release|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x86.Build.0 = Release|x86\n\t\t{DC7DEE61-116D-49A8-AA40-BC64370940FC}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/App.xaml",
    "content": "﻿<Application\n    x:Class=\"LaunchTargetDemoApp.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchTargetDemoApp\">\n\n</Application>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/App.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace LaunchTargetDemoApp\n{\n  /// <summary>\n  /// Provides application-specific behavior to supplement the default Application class.\n  /// </summary>\n  sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        protected override void OnActivated(IActivatedEventArgs args)\n        {\n            var uriForResultsActivationArgs = args as ProtocolForResultsActivatedEventArgs;\n\n            if (uriForResultsActivationArgs != null)\n            {\n                Frame rootFrame = Window.Current.Content as Frame;\n\n                // Do not repeat app initialization when the Window already has content, \n                // just ensure that the window is active \n                if (rootFrame == null)\n                {\n                    // Create a Frame to act as the navigation context and navigate to the target page\n                    rootFrame = new Frame();\n                    // Set the default language\n                    rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                    rootFrame.NavigationFailed += OnNavigationFailed;\n\n                    // Place the frame in the current Window\n                    Window.Current.Content = rootFrame;\n                }\n\n                if (!rootFrame.Navigate(typeof(LaunchTargetPage)))\n                {\n                    throw new Exception(\"Failed to create protocol launch target page\");\n                }\n\n                var p = rootFrame.Content as LaunchTargetPage;\n                p.ProtocolForResultsOperation = uriForResultsActivationArgs.ProtocolForResultsOperation;\n\n                // Ensure the current window is active \n                Window.Current.Activate();\n\n\n            }\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/LaunchTargetDemoApp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{DC7DEE61-116D-49A8-AA40-BC64370940FC}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>LaunchTargetDemoApp</RootNamespace>\n    <AssemblyName>LaunchTargetDemoApp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>LaunchTargetDemoApp_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>fcdf3305</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"LaunchTargetPage.xaml.cs\">\n      <DependentUpon>LaunchTargetPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"LaunchTargetDemoApp_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"LaunchTargetPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/LaunchTargetPage.xaml",
    "content": "﻿<Page\n    x:Class=\"LaunchTargetDemoApp.LaunchTargetPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchTargetDemoApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"DarkBlue\">\n        <TextBlock Text=\"This is the where the launched app interacts with the user\" \n                   Margin=\"4,20,0,0\" FontSize=\"20\" TextWrapping=\"Wrap\"/>\n        <Button x:Name=\"SendResults\" Content=\"Send Results Back\" Click=\"SendResults_Click\" />\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/LaunchTargetPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace LaunchTargetDemoApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class LaunchTargetPage : Page\n    {\n        private ProtocolForResultsOperation _protocolForResultsOperation = null;\n\n        public LaunchTargetPage()\n        {\n            this.InitializeComponent();\n        }\n\n        public ProtocolForResultsOperation ProtocolForResultsOperation\n        {\n            set\n            {\n                _protocolForResultsOperation = value;\n            }\n        }\n\n        private void SendResults_Click(object sender, RoutedEventArgs e)\n        {\n            var values = new ValueSet();\n            values[\"Answer\"] = 42;\n            _protocolForResultsOperation.ReportCompleted(values);\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"LaunchTargetDemoApp.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:LaunchTargetDemoApp\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace LaunchTargetDemoApp\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            var pfn = Windows.ApplicationModel.Package.Current.Id.FamilyName;\n\n            this.Loaded += async (s, a) =>\n                await new MessageDialog(\"PFN for this app: \" + pfn).ShowAsync();\n\n            System.Diagnostics.Debug.WriteLine(\"PFN: \" + pfn);\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"dae4aecf-5aae-497c-97b6-4122dec5af28\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"dae4aecf-5aae-497c-97b6-4122dec5af28\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>LaunchTargetDemoApp</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"LaunchTargetDemoApp.App\">\n      <uap:VisualElements\n        DisplayName=\"LaunchTargetDemoApp\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"LaunchTargetDemoApp\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"w10jumpstart\" />\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"LaunchTargetDemoApp\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"LaunchTargetDemoApp\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "LaunchForResultsDemo/LaunchTargetDemoApp/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/App.xaml",
    "content": "﻿<Application\n    x:Class=\"CheckOut.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:CheckOut\">\n\n</Application>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace CheckOut\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        protected override void OnActivated(IActivatedEventArgs args)\n        {\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            if (rootFrame == null)\n            {\n                rootFrame = new Frame();\n                rootFrame.CacheSize = 1;\n                Window.Current.Content = rootFrame;\n            }\n\n            var protocolForResultsArgs = args as ProtocolForResultsActivatedEventArgs;\n            if (protocolForResultsArgs != null)\n            {\n                rootFrame.Navigate(typeof(MakePayment), protocolForResultsArgs);\n            }\n            else\n            {\n                rootFrame.Navigate(typeof(MainPage));\n            }\n\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/CheckOut.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>CheckOut</RootNamespace>\n    <AssemblyName>CheckOut</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>CheckOut_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MakePayment.xaml.cs\">\n      <DependentUpon>MakePayment.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Models\\Item.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"CheckOut_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\checkout.png\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"MakePayment.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"CheckOut.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:CheckOut\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"DarkBlue\">\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" >\n            <Image Source=\"/Assets/checkout.png\" Stretch=\"None\" />\n        <TextBlock Text=\"This is the Check out app.\" HorizontalAlignment=\"Center\" TextWrapping=\"WrapWholeWords\" />\n        <TextBlock Text=\"It is used by other apps to take payments.\" HorizontalAlignment=\"Center\" TextWrapping=\"WrapWholeWords\" />    </StackPanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/MainPage.xaml.cs",
    "content": "﻿\nnamespace CheckOut\n{\n    using Windows.ApplicationModel;\n    using Windows.UI.Xaml.Controls;\n\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            System.Diagnostics.Debug.WriteLine(Package.Current.Id.FamilyName);\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/MakePayment.xaml",
    "content": "﻿<Page\n    x:Name=\"pageRoot\"\n    x:Class=\"CheckOut.MakePayment\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:CheckOut\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    RequestedTheme=\"Dark\">\n\n    <Grid Background=\"BlueViolet\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Image Source=\"/Assets/checkout.png\" Stretch=\"Uniform\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\" Height=\"150\" Margin=\"-24\" />\n\n        <StackPanel Margin=\"20\">\n            <TextBlock Text=\"Check Out:\" Style=\"{StaticResource TitleTextBlockStyle}\" FontWeight=\"Black\" />\n            <TextBlock Text=\"Your Order\" Style=\"{StaticResource TitleTextBlockStyle}\" FontWeight=\"Black\" />\n        </StackPanel>\n\n        <StackPanel Grid.Row=\"1\" Margin=\"20,0\">\n            <TextBlock Text=\"Items\" Style=\"{StaticResource TitleTextBlockStyle}\" />\n\n            <ItemsControl x:Name=\"ItemsInOrder\">\n                <ItemsControl.ItemTemplate>\n                    <DataTemplate>\n                        <Grid>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition MaxWidth=\"50\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n\n                            <TextBlock Text=\"{Binding Quantity}\" Grid.Column=\"0\" Style=\"{StaticResource BodyTextBlockStyle}\" />\n                            <TextBlock Text=\"{Binding Description}\" Grid.Column=\"1\" Style=\"{StaticResource BodyTextBlockStyle}\" />\n                            <TextBlock Text=\"{Binding UnitPrice}\" Grid.Column=\"2\" Style=\"{StaticResource BodyTextBlockStyle}\" />\n                        </Grid>\n                    </DataTemplate>\n                </ItemsControl.ItemTemplate>\n            </ItemsControl>\n\n            <StackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Right\">\n                <TextBlock Text=\"Total:\" Style=\"{StaticResource TitleTextBlockStyle}\" Margin=\"0,0,20,0\" />\n                <TextBlock x:Name=\"TotalAmount\" Text=\"X.XX\" Style=\"{StaticResource TitleTextBlockStyle}\" />\n            </StackPanel>\n\n        </StackPanel>\n\n        <StackPanel Grid.Row=\"2\" Margin=\"20,0\">\n            <TextBlock Text=\"Payment Options\" Style=\"{StaticResource TitleTextBlockStyle}\" />\n\n            <RadioButton Content=\"Pay with card ending 1234\" x:Name=\"CardEnding1234\" IsChecked=\"True\" />\n            <RadioButton Content=\"Pay with card ending 9876\" x:Name=\"CardEnding9876\" />\n        </StackPanel>\n\n        <StackPanel Orientation=\"Horizontal\" Grid.Row=\"3\" HorizontalAlignment=\"Right\" >\n            <Button Margin=\"20\" Content=\"Cancel\" Click=\"CancelClicked\" />\n            <Button Margin=\"20\" Content=\"Make Payment\" Click=\"MakePaymentClicked\" />\n        </StackPanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/MakePayment.xaml.cs",
    "content": "﻿\nnamespace CheckOut\n{\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Navigation;\n    using Windows.ApplicationModel.Activation;   \n    using System.Collections.Generic;\n    using System;\n    using System.Linq;\n    using Windows.Foundation.Collections;\n    using Windows.System;\n    using Newtonsoft.Json;\n    using CheckOut.Models;\n\n    public sealed partial class MakePayment : Page\n    {\n        // reference used for completing continuation\n        private ProtocolForResultsOperation operation;\n        private string totalAmount;\n        private string transaction;\n\n\n        // List of known apps that are authorised to use the CheckOut\n        List<Tuple<string, string>> validCallers = new List<Tuple<string, string>>();\n\n        public MakePayment()\n        {\n            this.InitializeComponent();\n\n            // Tracking PFN and \"friendly\" name of app for easy reference - no-one wants to remember PFNs\n            this.validCallers.Add(new Tuple<string, string>(\"38e7759a-c952-4109-87f7-b8c2235e5765_z5jhcbv2wstvg\", \"Demo Shop\"));\n        }\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.\n        /// This parameter is typically used to configure the page.</param>\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var protocolForResultsArgs = e.Parameter as ProtocolForResultsActivatedEventArgs;\n            this.operation = protocolForResultsArgs.ProtocolForResultsOperation;\n            var callerPfn = protocolForResultsArgs.CallerPackageFamilyName;\n\n            // We only want certain, approved apps to use our checkout functionality so check the caller is one\n            // This is, of course, optional. You don't have to do this.\n            if (this.validCallers.Any(c => c.Item1.Equals(callerPfn)))\n            {\n                if (protocolForResultsArgs.Data.Keys.Count == 2\n                    && protocolForResultsArgs.Data.ContainsKey(\"Transaction\")\n                    && protocolForResultsArgs.Data.ContainsKey(\"Items\"))\n                {\n                    // This is a bit hacky - you could put this into a view model if you wanted\n                    this.transaction = protocolForResultsArgs.Data[\"Transaction\"] as string;\n                    var items = protocolForResultsArgs.Data[\"Items\"] as string;\n\n                    var allItems = JsonConvert.DeserializeObject<List<Item>>(items);\n\n                    this.ItemsInOrder.ItemsSource = allItems;\n\n                    this.totalAmount = allItems.Select(i => i.UnitPrice * i.Quantity).Sum().ToString();\n                    this.TotalAmount.Text = this.totalAmount;\n                }\n                else\n                {\n                    var result = new ValueSet();\n                    result[\"Success\"] = false;\n                    result[\"Reason\"] = \"Invalid payload\";\n\n                    operation.ReportCompleted(result);\n                }\n            }\n            else\n            {\n                var result = new ValueSet();\n                result[\"Success\"] = false;\n                result[\"Reason\"] = \"Application not approved\";\n\n                operation.ReportCompleted(result);\n            }\n        }\n\n        private void CancelClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            var result = new ValueSet();\n            result[\"Success\"] = false;\n            result[\"Reason\"] = \"Cancelled\";\n\n            operation.ReportCompleted(result);\n        }\n\n        private void MakePaymentClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            var result = new ValueSet();\n            result[\"Success\"] = true;\n            result[\"Reason\"] = \"Payment made\";\n            result[\"Transaction\"] = this.transaction;\n            result[\"Total\"] = this.totalAmount;\n\n            // We're just using a couple of harcdoded payment options in this demo.\n            // Obviously, if using actual ones from another source then getting the last 4 digits woudl need to be done differently.\n            var cardEnding = \"\";\n\n            if (this.CardEnding1234.IsChecked ?? false)\n            {\n                cardEnding = \"1234\";\n            }\n            else if (this.CardEnding9876.IsChecked ?? false)\n            {\n                cardEnding = \"9876\";\n            }\n\n            result[\"CardEnding\"] = cardEnding;\n            result[\"AuthCode\"] = string.Format(\"{0}{1}\", this.transaction, this.totalAmount).GetHashCode();\n\n            operation.ReportCompleted(result);\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/Models/Item.cs",
    "content": "﻿\nnamespace CheckOut.Models\n{\n    public class Item\n    {\n        public string Description { get; set; }\n\n        public double UnitPrice { get; set; }\n\n        public int Quantity { get; set; }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"7d7072f5-7a53-47f6-9932-97647aad9550\"\n    Publisher=\"CN=a-malace\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"7d7072f5-7a53-47f6-9932-97647aad9550\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>CheckOut</DisplayName>\n    <PublisherDisplayName>a-malace</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"CheckOut.App\">\n      <uap:VisualElements\n        DisplayName=\"CheckOut\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"CheckOut\"\n        BackgroundColor=\"#00008b\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"checkoutdemo\" ReturnResults=\"optional\">\n            <uap:DisplayName>CheckOut Demo</uap:DisplayName>\n          </uap:Protocol>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"CheckOut\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"CheckOut\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "LaunchForResultsShoppingDemo/CheckOut/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/LaunchForResultsShoppingDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Shop\", \"Shop\\Shop.csproj\", \"{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"CheckOut\", \"CheckOut\\CheckOut.csproj\", \"{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x64.Build.0 = Debug|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x86.Build.0 = Debug|x86\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|ARM.Build.0 = Release|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x64.ActiveCfg = Release|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x64.Build.0 = Release|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x64.Deploy.0 = Release|x64\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x86.ActiveCfg = Release|x86\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x86.Build.0 = Release|x86\n\t\t{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}.Release|x86.Deploy.0 = Release|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x64.Build.0 = Debug|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x86.Build.0 = Debug|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|ARM.Build.0 = Release|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x64.ActiveCfg = Release|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x64.Build.0 = Release|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x64.Deploy.0 = Release|x64\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x86.ActiveCfg = Release|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x86.Build.0 = Release|x86\n\t\t{8A9D7699-DE4E-42C1-AADD-6D64B76B5E8D}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/App.xaml",
    "content": "﻿<Application\n    x:Class=\"Shop.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"   \n    xmlns:local=\"using:Shop\"\n    xmlns:vm=\"using:Shop.ViewModels\">\n\n    <Application.Resources>\n        <vm:ViewModelLocator x:Key=\"locator\" />\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace Shop\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Shop.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Shop\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    DataContext=\"{Binding Source={StaticResource locator}, Path=Main}\"\n    RequestedTheme=\"Dark\">\n    <Page.Resources>\n        <Style x:Key=\"ShopCheckBoxStyle\" TargetType=\"CheckBox\">\n            <Setter Property=\"Background\" Value=\"Transparent\"/>\n            <Setter Property=\"Foreground\" Value=\"{ThemeResource CheckBoxBackgroundThemeBrush}\"/>\n            <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n            <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n            <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n            <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n            <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n            <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n            <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n            <Setter Property=\"MinWidth\" Value=\"120\"/>\n            <Setter Property=\"MinHeight\" Value=\"32\"/>\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"CheckBox\">\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                            <VisualStateManager.VisualStateGroups>\n                                <VisualStateGroup x:Name=\"CombinedStates\">\n                                    <VisualState x:Name=\"UncheckedNormal\"/>\n                                    <VisualState x:Name=\"UncheckedPointerOver\">\n                                        <Storyboard>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Stroke\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource CheckBoxBackgroundThemeBrush}\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"UncheckedPressed\">\n                                        <Storyboard>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Fill\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource CheckBoxContentForegroundThemeBrush}\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"StrokeThickness\" Storyboard.TargetName=\"NormalRectangle\"/>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"UncheckedDisabled\" />\n                                    <VisualState x:Name=\"CheckedNormal\">\n                                        <Storyboard>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Fill\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"LightGreen\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"StrokeThickness\" Storyboard.TargetName=\"NormalRectangle\"/>\n                                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CheckGlyph\"/>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"CheckedPointerOver\">\n                                        <Storyboard>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Fill\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"LightGreen\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Stroke\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource CheckBoxBackgroundThemeBrush}\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CheckGlyph\"/>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"CheckedPressed\">\n                                        <Storyboard>\n                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Fill\" Storyboard.TargetName=\"NormalRectangle\">\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource CheckBoxBackgroundThemeBrush}\"/>\n                                            </ObjectAnimationUsingKeyFrames>\n                                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"StrokeThickness\" Storyboard.TargetName=\"NormalRectangle\"/>\n                                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CheckGlyph\"/>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"CheckedDisabled\" />\n                                    <VisualState x:Name=\"IndeterminateNormal\" />\n                                    <VisualState x:Name=\"IndeterminatePointerOver\" />\n                                    <VisualState x:Name=\"IndeterminatePressed\" />\n                                    <VisualState x:Name=\"IndeterminateDisabled\" />\n                                </VisualStateGroup>\n                                <VisualStateGroup x:Name=\"FocusStates\">\n                                    <VisualState x:Name=\"Focused\">\n                                        <Storyboard>\n                                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualWhite\"/>\n                                        </Storyboard>\n                                    </VisualState>\n                                    <VisualState x:Name=\"Unfocused\"/>\n                                    <VisualState x:Name=\"PointerFocused\"/>\n                                </VisualStateGroup>\n                            </VisualStateManager.VisualStateGroups>\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"60\"/>\n                                    <ColumnDefinition Width=\"*\"/>\n                                </Grid.ColumnDefinitions>\n                                <Grid Height=\"48\" VerticalAlignment=\"Center\">\n                                    <Rectangle x:Name=\"NormalRectangle\" Fill=\"Transparent\" Height=\"40\" Stroke=\"{ThemeResource CheckBoxBackgroundThemeBrush}\" StrokeThickness=\"{ThemeResource CheckBoxBorderThemeThickness}\" UseLayoutRounding=\"False\" Width=\"40\"/>\n                                    <FontIcon x:Name=\"CheckGlyph\" Foreground=\"{ThemeResource CheckBoxBackgroundThemeBrush}\" FontSize=\"16\" FontFamily=\"{ThemeResource SymbolThemeFontFamily}\" Glyph=\"&#xE001;\" Opacity=\"0\"/>\n                                    <Rectangle x:Name=\"IndeterminateGlyph\" Fill=\"{ThemeResource CheckBoxBackgroundThemeBrush}\" Height=\"30\" Opacity=\"0\" UseLayoutRounding=\"False\" Width=\"30\"/>\n                                    <Rectangle x:Name=\"FocusVisualWhite\" Height=\"40\" Opacity=\"0\" StrokeDashOffset=\"0.5\" StrokeEndLineCap=\"Square\" Stroke=\"{ThemeResource CheckBoxBackgroundThemeBrush}\" StrokeThickness=\"{ThemeResource CheckBoxBorderThemeThickness}\" StrokeDashArray=\"1,1\" Width=\"40\"/>\n                                </Grid>\n                                <ContentPresenter x:Name=\"ContentPresenter\" AutomationProperties.AccessibilityView=\"Raw\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" ContentTransitions=\"{TemplateBinding ContentTransitions}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" TextWrapping=\"Wrap\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\n                            </Grid>\n                        </Border>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </Page.Resources>\n\n    <Grid Background=\"Green\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Image Source=\"/Assets/Shop.png\" Stretch=\"Uniform\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\" Height=\"150\" Margin=\"-24\" />\n\n        <StackPanel Margin=\"20\">\n            <TextBlock Text=\"My Store\" Style=\"{StaticResource TitleTextBlockStyle}\" FontWeight=\"Black\" />\n            <TextBlock Text=\"Choose products:\" Style=\"{StaticResource TitleTextBlockStyle}\" FontWeight=\"Black\" />\n        </StackPanel>\n\n        <ItemsControl Grid.Row=\"1\" ItemsSource=\"{Binding AvailableProducts}\" Margin=\"10,0\">\n            <ItemsControl.ItemTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <CheckBox IsChecked=\"{Binding IsSelected, Mode=TwoWay}\" Style=\"{StaticResource ShopCheckBoxStyle}\" Margin=\"0,0,0,12\" >\n\n                            <StackPanel Grid.Column=\"1\">\n                                <TextBlock Text=\"{Binding Name}\" Style=\"{StaticResource TitleTextBlockStyle}\" />\n                                <TextBlock Text=\"{Binding Price}\" Style=\"{StaticResource TitleTextBlockStyle}\" />\n                            </StackPanel>\n                        </CheckBox>\n                    </Grid>\n                </DataTemplate>\n            </ItemsControl.ItemTemplate>\n        </ItemsControl>\n\n        <Button Grid.Row=\"2\" HorizontalAlignment=\"Right\" Margin=\"20\"\n                Content=\"CheckOut\" Command=\"{Binding CheckOutCommand}\" />\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/MainPage.xaml.cs",
    "content": "﻿\nnamespace Shop\n{\n    using Shop.ViewModels;\n    using Windows.UI.Xaml.Controls;\n    using Windows.UI.Xaml.Navigation;\n\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            base.OnNavigatedTo(e);\n\n            // Inject the Frame ito the viewmodel so it can do navigation \n            ((MainPageViewModel)this.DataContext).Frame = this.Frame;\n\n            // If we come back to this page it will be after showing the receipt - clear evidence of past transaction\n            if (e.NavigationMode == NavigationMode.Back)\n            {\n                var products = (App.Current.Resources[\"locator\"] as ViewModelLocator).Main.AvailableProducts;\n                foreach (var product in products)\n                {\n                    product.IsSelected = false;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"38e7759a-c952-4109-87f7-b8c2235e5765\"\n    Publisher=\"CN=a-malace\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"38e7759a-c952-4109-87f7-b8c2235e5765\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Shop</DisplayName>\n    <PublisherDisplayName>a-malace</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Shop.App\">\n      <uap:VisualElements\n        DisplayName=\"Shop\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Shop\"\n        BackgroundColor=\"#90ee90\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Shop\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Shop\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/Receipt.xaml",
    "content": "﻿<Page\n    x:Name=\"pageRoot\"\n    x:Class=\"Shop.Receipt\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Shop\"\n RequestedTheme=\"Dark\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"Green\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n                                      \n        <Image Source=\"/Assets/Shop.png\" Stretch=\"Uniform\" HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\" Height=\"150\" Margin=\"-24\" />\n\n        <TextBlock Text=\"My Store: Receipt\" Style=\"{StaticResource TitleTextBlockStyle}\" FontWeight=\"Black\" Margin=\"20\" />\n\n        <ItemsControl x:Name=\"ReceiptDetails\" Grid.Row=\"1\">\n            <ItemsControl.ItemTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <TextBlock Text=\"{Binding}\" Style=\"{StaticResource BodyTextBlockStyle}\" Margin=\"20,10\" />\n                    </Grid>\n                </DataTemplate>\n            </ItemsControl.ItemTemplate>\n        </ItemsControl>\n\n        <Button Grid.Row=\"2\" HorizontalAlignment=\"Right\" Margin=\"20\"\n                Content=\"Home\" Click=\"HomeClicked\" />\n    </Grid>\n</Page>\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/Receipt.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Shop\n{\n    public sealed partial class Receipt : Page\n    {\n        public Receipt()\n        {\n            this.InitializeComponent();\n        }\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.\n        /// This parameter is typically used to configure the page.</param>\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var result = e.Parameter as ValueSet;\n\n            var receipt = new List<string>();\n\n            if (result.Keys.Count >= 2\n                && result.ContainsKey(\"Success\")\n                && result.ContainsKey(\"Reason\"))\n            {\n                if (((bool)result[\"Success\"]))\n                {\n                    // Check that we have all the info we expect and that it corresponds to the \n                    if (result.ContainsKey(\"Transaction\")\n                        && result.ContainsKey(\"Total\")\n                        && result.ContainsKey(\"CardEnding\")\n                        && result.ContainsKey(\"AuthCode\"))\n                    {\n                        receipt.Add(\"Payment Successful\");\n                        receipt.Add(string.Format(\"Amount: {0}\", result[\"Total\"]));\n                        receipt.Add(string.Format(\"Paid with card ending: {0}\", result[\"CardEnding\"]));\n                        receipt.Add(string.Format(\"Transaction Id: {0}\", result[\"Transaction\"]));\n                        receipt.Add(string.Format(\"Auth Code: {0}\", result[\"AuthCode\"]));\n                    }\n                    else\n                    {\n                        receipt.Add(\"Payment exception\");\n                        receipt.Add(\"Unable to verify transaction details\");\n                    }\n                }\n                else\n                {\n                    receipt.Add(\"Payment failed\");\n                    receipt.Add(result[\"Reason\"].ToString());\n                }\n            }\n            else\n            {\n                receipt.Add(\"Payment exception\");\n                receipt.Add(\"Check out error\");\n            }\n\n            this.ReceiptDetails.ItemsSource = receipt;\n        }\n\n        private void HomeClicked(object sender, RoutedEventArgs e)\n        {\n            this.Frame.GoBack();\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/Shop.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{EEE9DA39-C7B0-4B8F-8E05-E19D05ACE109}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Shop</RootNamespace>\n    <AssemblyName>Shop</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Shop_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Receipt.xaml.cs\">\n      <DependentUpon>Receipt.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"ViewModels\\CanNotifyPropertyChanged.cs\" />\n    <Compile Include=\"ViewModels\\Command.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Product.cs\" />\n    <Compile Include=\"ViewModels\\ViewModelLocator.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"Shop_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\Shop.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Receipt.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/ViewModels/CanNotifyPropertyChanged.cs",
    "content": "﻿\nnamespace Shop.ViewModels\n{\n    using System;\n    using System.ComponentModel;\n    using System.Linq.Expressions;\n    using System.Runtime.CompilerServices;\n    using Windows.ApplicationModel.Core;\n    using Windows.UI.Core;\n\n    public  class CanNotifyPropertyChanged : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)\n        {\n            bool result = false;\n\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.OnPropertyChanged(propertyName);\n\n                result = true;\n            }\n\n            return result;\n        }\n\n        protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)\n        {\n            this.OnPropertyChanged(PropertyName(propertyExpression));\n        }\n\n        protected void RaiseAllPropertyChanged()\n        {\n            this.OnPropertyChanged(string.Empty);\n        }\n\n        protected async virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)\n        {\n            var eventHandler = this.PropertyChanged;\n            if (eventHandler != null)\n            {\n                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(\n                        CoreDispatcherPriority.Normal,\n                        () =>\n                        {\n                            eventHandler(this, new PropertyChangedEventArgs(propertyName));\n                        });\n            }\n        }\n\n        private static string PropertyName<T>(Expression<Func<T>> propertyExpression)\n        {\n            if (propertyExpression != null)\n            {\n                var memberExpression = propertyExpression.Body as MemberExpression;\n\n                if (memberExpression != null && memberExpression.Member != null)\n                {\n                    return memberExpression.Member.Name;\n                }\n            }\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/ViewModels/Command.cs",
    "content": "﻿\nnamespace Shop.ViewModels\n{\n    using System;\n    using System.Windows.Input;\n\n    public class Command : ICommand\n    {\n        private Func<object, bool> canExecuteParameterized;\n\n        private Func<bool> canExecute;\n\n        private Action<object> executeParameterizedAction;\n\n        private Action executeAction;\n\n        public Command(Action executeAction) : this(executeAction, (Func<bool>)null)\n        {\n        }\n\n        public Command(Action<object> executeParameterizedAction) : this(executeParameterizedAction, null)\n        {\n        }\n\n        public Command(Action executeAction, Func<bool> canExecute)\n        {\n            if (executeAction == null)\n            {\n                throw new ArgumentNullException(\"executeAction\");\n            }\n\n            this.executeAction = executeAction;\n            this.canExecute = canExecute;\n        }\n\n        public Command(Action executeAction, Func<object, bool> canExecute)\n        {\n            if (executeAction == null)\n            {\n                throw new ArgumentNullException(\"executeAction\");\n            }\n\n            this.executeAction = executeAction;\n            this.canExecuteParameterized = canExecute;\n        }\n\n\n        public Command(Action<object> executeAction, Func<object, bool> canExecute)\n        {\n            if (executeAction == null)\n            {\n                throw new ArgumentNullException(\"executeAction\");\n            }\n\n            this.executeParameterizedAction = executeAction;\n            this.canExecuteParameterized = canExecute;\n        }\n\n        public event EventHandler CanExecuteChanged;\n\n        public bool CanExecute(object parameter)\n        {\n            bool result = true;\n\n            if (this.canExecute != null)\n            {\n                result = this.canExecute();\n            }\n\n            if (this.canExecuteParameterized != null && parameter != null)\n            {\n                result = this.canExecuteParameterized(parameter);\n            }\n\n            return result;\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            EventHandler handler = this.CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n\n        public void Execute(object parameter)\n        {\n            if (this.executeAction != null)\n            {\n                this.executeAction();\n            }\n\n            if (this.executeParameterizedAction != null)\n            {\n                this.executeParameterizedAction(parameter);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/ViewModels/MainPageViewModel.cs",
    "content": "﻿\nnamespace Shop.ViewModels\n{\n    using Newtonsoft.Json;\n    using System;\n    using System.Collections.ObjectModel;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using Windows.Foundation.Collections;  \n    using Windows.System;\n\n    class MainPageViewModel : CanNotifyPropertyChanged\n    {\n        private ObservableCollection<Product> products;\n\n        public Windows.UI.Xaml.Controls.Frame Frame { set; private get; }\n\n\n        public MainPageViewModel()\n        {\n            this.CreateSampleProducts();\n\n            this.CheckOutCommand = new Command(async () => await this.CheckOut(), this.CanCheckOut);\n        }\n\n        public Command CheckOutCommand { get; }\n\n        public ObservableCollection<Product> AvailableProducts\n        {\n            get\n            {\n                return this.products;\n            }\n\n            set\n            {\n                this.SetProperty(ref this.products, value);\n            }\n        }\n\n        private void CreateSampleProducts()\n        {\n            this.AvailableProducts = new ObservableCollection<Product>();\n\n            // In the tradition of all the greatest demos, we're using hardcoded sample data\n            // In a \"real\" app this would almost certainly come from a web service ;)\n\n            this.AddProduct(\"Widget\", 1.99);\n            this.AddProduct(\"Sprocket\", 2.99);\n            this.AddProduct(\"Contraption\", 5.99);\n            this.AddProduct(\"Gizmo\", 9.99);\n        }\n\n        private void AddProduct(string name, double price)\n        {\n            this.AvailableProducts.Add(new Product(() => this.CheckOutCommand.RaiseCanExecuteChanged()) { Name = name, Price = price });\n        }\n\n        private bool CanCheckOut()\n        {\n            return this.AvailableProducts.Any(p => p.IsSelected);\n        }\n\n        private async Task CheckOut()\n        {\n            var checkoutAppUri = new Uri(\"checkoutdemo:\");\n\n            // We want a specific app to perform our checkout operation, not just any that implements the protocol we're using for launch\n            var options = new LauncherOptions();\n            options.TargetApplicationPackageFamilyName = \"7d7072f5-7a53-47f6-9932-97647aad9550_z5jhcbv2wstvg\";\n\n            var transactionId = Guid.NewGuid().ToString();\n\n            var inputData = new ValueSet();\n\n            // Our collection is too complicated for ValueSet to understand so we serialize it first\n            var serializedSelectedItems = JsonConvert.SerializeObject(this.AvailableProducts.Where(p => p.IsSelected).Select(p => new { Description = p.Name, UnitPrice = p.Price, Quantity = 1 }).ToList());\n\n            inputData[\"Items\"] = serializedSelectedItems;\n            inputData[\"Transaction\"] = transactionId;\n\n            var response = await Launcher.LaunchUriForResultsAsync(checkoutAppUri, options, inputData);\n            if (response.Status == LaunchUriStatus.Success)\n            {\n                Frame.Navigate(typeof(Receipt), response.Result);\n            }\n            else\n            {\n                // TODO: handle failure to launch...\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/ViewModels/Product.cs",
    "content": "﻿using System;\n\nnamespace Shop.ViewModels\n{\n    public class Product : CanNotifyPropertyChanged\n    {\n        private string name;\n        private double price;\n        private bool isSelected;\n        private Action onSelectionChanged;\n\n        public Product(Action OnSelectionChangedAction = null)\n        {\n            this.onSelectionChanged = OnSelectionChangedAction;\n        }\n\n        public string Name\n        {\n            get\n            {\n                return this.name;\n            }\n\n            set\n            {\n                this.SetProperty(ref this.name, value);\n            }\n        }\n\n        public double Price\n        {\n            get\n            {\n                return this.price;\n            }\n\n            set\n            {\n                this.SetProperty(ref this.price, value);\n            }\n        }\n\n        public bool IsSelected\n        {\n            get\n            {\n                return this.isSelected;\n            }\n\n            set\n            {\n                this.SetProperty(ref this.isSelected, value);\n\n                if (onSelectionChanged != null)\n                {\n                    onSelectionChanged.Invoke();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/ViewModels/ViewModelLocator.cs",
    "content": "﻿\nnamespace Shop.ViewModels\n{\n    class ViewModelLocator\n    {\n        private MainPageViewModel mainVm;\n\n        public MainPageViewModel Main\n        {\n            get\n            {   \n                if (mainVm == null)\n                {\n                    mainVm = new MainPageViewModel();\n                }\n\n                return mainVm;\n\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LaunchForResultsShoppingDemo/Shop/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/App.xaml",
    "content": "﻿<Application\n    x:Class=\"DrawingShapes.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:DrawingShapes\">\n\n</Application>\n"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227\n\nnamespace DrawingShapes\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    public sealed partial class App : Application\n    {\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += this.OnSuspending;\n\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                //this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                // TODO: change this value to a cache size that is appropriate for your application\n                rootFrame.CacheSize = 1;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    // TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n\n            // TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/DrawingShapes.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>DrawingShapes</RootNamespace>\n    <AssemblyName>DrawingShapes</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MapElementData.cs\" />\n    <Compile Include=\"MapExtensions.cs\" />\n    <Compile Include=\"PointList.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n    <Content Include=\"Assets\\wplogo.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(TargetPlatformIdentifier)' == '' \">\n    <TargetPlatformIdentifier>WindowsPhoneApp</TargetPlatformIdentifier>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"DrawingShapes.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:DrawingShapes\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:controls=\"using:Windows.UI.Xaml.Controls\"\n    mc:Ignorable=\"d\"\n    xmlns:Maps=\"using:Windows.UI.Xaml.Controls.Maps\">\n\n  <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n    <Grid Margin=\"12,0,12,0\" >\n      <Grid.RowDefinitions>\n        <RowDefinition Height=\"Auto\"/>\n        <RowDefinition Height=\"*\"/>\n      </Grid.RowDefinitions>\n      <Grid  Margin=\"0,18,0,5\">\n        <Grid.ColumnDefinitions>\n          <ColumnDefinition Width=\"*\"/>\n          <ColumnDefinition Width=\"Auto\"/>\n        </Grid.ColumnDefinitions>\n        <TextBlock TextWrapping=\"Wrap\" Text=\"Map shapes\" FontSize=\"26.667\"/>\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\">\n          <AppBarButton Label=\"Lines\" Icon=\"Italic\" Click=\"DrawLines\" />\n          <AppBarButton Label=\"Polygons\" Icon=\"BrowsePhotos\" Click=\"DrawShapes\"/>\n          <AppBarButton Label=\"Points\" Icon=\"MapPin\" Click=\"DrawPoints\" />\n          <AppBarButton Label=\"Delete all\" Icon=\"Delete\" Click=\"DeleteAll\" />\n          <AppBarSeparator/>\n          <AppBarButton  Label=\"zoom out\" Icon=\"ZoomOut\" Click=\"ZoomOut\"/>\n          <AppBarButton  Label=\"zoom in\" Icon=\"ZoomIn\" Click=\"ZoomIn\"/>\n        </StackPanel>\n      </Grid>\n      <Maps:MapControl Grid.Row=\"1\" x:Name=\"MyMap\" MapTapped=\"MyMap_MapTapped\" />\n      <!--MapServiceToken=\"Credentials=&quot;AiFTXnMoalZ-eN9AjO34J_3ZIv0r1rFsnEKOn8TUBD6QvCyoVm7FVGkdNZzM7bVu&quot;\" />-->\n    </Grid>\n  </Grid>\n</Page>"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Text;\nusing Windows.Devices.Geolocation;\nusing Windows.Foundation;\nusing Windows.Storage.Streams;\nusing Windows.UI;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Maps;\nusing Windows.UI.Xaml.Navigation;\nusing MappingUtilities;\nusing Windows.UI.Core;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace DrawingShapes\n{\n  /// <summary>\n  /// LocalJoost Drawing shapes demo\n  /// </summary>\n  public sealed partial class MainPage : Page\n  {\n    public MainPage()\n    {\n      this.InitializeComponent();\n\n      this.NavigationCacheMode = NavigationCacheMode.Required;\n    }\n\n    /// <summary>\n    /// Invoked when this page is about to be displayed in a Frame.\n    /// </summary>\n    /// <param name=\"e\">Event data that describes how this page was reached.\n    /// This parameter is typically used to configure the page.</param>\n    protected override void OnNavigatedTo(NavigationEventArgs e)\n    {\n      //Geopoint and construction\n      MyMap.Center = new Geopoint(new BasicGeoposition { Latitude = 52.181427, Longitude = 5.399780 });\n      MyMap.ZoomLevel = 16;\n      base.OnNavigatedTo(e);\n    }\n\n    private void DrawLines(object sender, RoutedEventArgs e)\n    {\n        if (!DeleteShapesFromLevel(4))\n        {\n            var strokeColor = Colors.Green;\n\n            //Drawing lines, notice the use of Geopath. Consists out of BasicGeopositions\n            foreach (var dataObject in PointList.GetLines())\n            {\n                ///////////////////////////////////////////////////\n                // Creating the a MapPolyLine \n                //   (stroke, path (list of BasicGeopositions)\n                var shape = new MapPolyline\n                {\n                    StrokeThickness = 9,\n                    StrokeColor = strokeColor,\n                    StrokeDashed = false,\n                    ZIndex = 4,\n                    Path = new Geopath(dataObject.Points.Select(p => p.Position))\n                };\n                shape.AddData(dataObject);\n\n                MyMap.MapElements.Add(shape);\n            }\n        }\n    }\n\n    private void DrawShapes(object sender, RoutedEventArgs e)\n    {\n        if (!DeleteShapesFromLevel(3))\n        {\n            var strokeColor = Colors.DarkBlue;\n            var fillColor = Colors.Blue;\n\n            ///////////////////////////////////////////////////\n            // Creating the a MapPolygons \n            //   (stroke, fill, path (list of BasicGeopositions)\n            foreach (var dataObject in PointList.GetAreas())\n            {\n                var shape = new MapPolygon\n                {\n                    StrokeThickness = 3,\n                    StrokeColor = strokeColor,\n                    FillColor = fillColor,\n                    StrokeDashed = false,\n                    ZIndex = 3,\n                    Path = new Geopath(dataObject.Points.Select(p => p.Position))\n                };\n                shape.AddData(dataObject);\n                MyMap.MapElements.Add(shape);\n            }\n        }\n    }\n\n    private void DrawPoints(object sender, RoutedEventArgs e)\n    {\n      // How to draw a new MapIcon with a label, anchorpoint and custom  icon.\n      // Icon comes from shared project assets\n      var anchorPoint = new Point(0.5, 0.5);\n      var image = RandomAccessStreamReference.CreateFromUri(new Uri(\"ms-appx:///Assets/wplogo.png\"));\n\n      // Helper extension method\n      var area = MyMap.GetViewArea();\n\n      // GeoboundingBox countains two BasicGeopositions....\n      // PointList is just a helper class that gives 'some data'\n      var points = PointList.GetRandomPoints(new Geopoint(area.NorthwestCorner), new Geopoint(area.SoutheastCorner), 50);\n      foreach (var dataObject in points)\n      {\n        ///////////////////////////////////////////////////\n        // Creating the MapIcon \n        //   (text, image, location, anchor point)\n        var shape = new MapIcon\n        {\n          Title = dataObject.Name,\n          Location = dataObject.Points.First(),\n          NormalizedAnchorPoint = anchorPoint,\n          Image = image,\n          ZIndex = 5\n        };\n        shape.AddData(dataObject);\n\n        MyMap.MapElements.Add(shape);\n      }\n    }\n\n    private void DeleteAll(object sender, RoutedEventArgs e)\n    {\n      MyMap.MapElements.Clear();\n    }\n\n    private bool DeleteShapesFromLevel(int zIndex)\n    {\n      // Delete shapes by z-index \n      var shapesOnLevel = MyMap.MapElements.Where(p => p.ZIndex == zIndex);\n      if (shapesOnLevel.Any())\n      {\n        foreach (var shape in shapesOnLevel.ToList())\n        {\n          MyMap.MapElements.Remove(shape);\n        }\n        return true;\n      }\n      return false;\n    }\n\n    //MapTapped - not Map.Tapped!!\n    private async void MyMap_MapTapped(MapControl sender, MapInputEventArgs args)\n    {\n      var resultText = new StringBuilder();\n      resultText.AppendLine(string.Format(\"Position={0},{1}\", args.Position.X, args.Position.Y));\n      resultText.AppendLine(string.Format(\"Location={0:F9},{1:F9}\", args.Location.Position.Latitude, args.Location.Position.Longitude));\n\n      foreach( var mapObject in sender.FindMapElementsAtOffset(args.Position))\n      {\n        resultText.AppendLine(\"Found: \" + mapObject.ReadData<PointList>().Name);\n      }\n      var dialog = new MessageDialog(resultText.ToString());\n      await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => await dialog.ShowAsync());\n    }\n\n    private void ZoomOut(object sender, RoutedEventArgs e)\n    {\n      var newZoom = MyMap.ZoomLevel - 1;\n      if (newZoom < 1) newZoom = 1;\n      MyMap.ZoomLevel = newZoom;\n    }\n\n    private void ZoomIn(object sender, RoutedEventArgs e)\n    {\n      var newZoom = MyMap.ZoomLevel + 1;\n      if (newZoom > MyMap.MaxZoomLevel) newZoom = MyMap.MaxZoomLevel;\n      MyMap.ZoomLevel = newZoom;\n    }\n  }\n}\n"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/MapElementData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\n\nnamespace MappingUtilities\n{\n  /// <summary>\n  /// Helper class to attach data to map shapes. Well, to any DependencyObject, but that's to make \n  /// it fit into the PCL\n  /// </summary>\n  public static class MapElementData\n  {\n    #region Attached Dependency Property ObjectData\n    public static readonly DependencyProperty ObjectDataProperty =\n         DependencyProperty.RegisterAttached(\"ObjectData\",\n         typeof(object),\n         typeof(MapElementData),\n         new PropertyMetadata(default(object), null));\n\n    public static object GetObjectData(DependencyObject obj)\n    {\n      return obj.GetValue(ObjectDataProperty) as object;\n    }\n\n    public static void SetObjectData(\n       DependencyObject obj,\n       object value)\n    {\n      obj.SetValue(ObjectDataProperty, value);\n    }\n    #endregion\n\n    public static void AddData(this DependencyObject element, object data)\n    {\n      SetObjectData(element, data);\n    }\n\n    public static T ReadData<T>(this DependencyObject element) where T : class\n    {\n      return GetObjectData(element) as T;\n    }\n  }\n}\n"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/MapExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Devices.Geolocation;\nusing Windows.Foundation;\nusing Windows.UI.Xaml.Controls.Maps;\nusing Windows.UI.Xaml;\n\nnamespace MappingUtilities\n{\n  /// <summary>\n  /// Helper methods to easily set and get view area in a more or less consistent way\n  /// </summary>\n  public static class MapExtensions\n  {\n    public static GeoboundingBox GetViewArea(this MapControl map)\n    {\n      Geopoint p1, p2;\n      map.GetLocationFromOffset(new Point(0, 0), out p1);\n      map.GetLocationFromOffset(new Point(map.ActualWidth, map.ActualHeight), out p2);\n      return new GeoboundingBox(p1.Position, p2.Position);\n    }\n\n    public static void SetViewArea(this MapControl map, Geopoint p1, Geopoint p2)\n    {\n      var b = GeoboundingBox.TryCompute(new[] { p1.Position, p2.Position });\n\n      map.TrySetViewBoundsAsync(b, new Thickness(1.0), MapAnimationKind.Bow);\n    }\n  }\n}\n"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package \n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n  \n  <Identity Name=\"84031a8f-ed4c-4a5b-9fc0-e4bd7bae6d04\"\n            Publisher=\"CN=Joost\"\n            Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"84031a8f-ed4c-4a5b-9fc0-e4bd7bae6d04\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>DrawingShapes</DisplayName>\n    <PublisherDisplayName>Joost</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  \n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n        Executable=\"$targetnametoken$.exe\"\n        EntryPoint=\"DrawingShapes.App\">\n        <uap:VisualElements\n            DisplayName=\"DrawingShapes\"\n            Square150x150Logo=\"Assets\\Logo.png\"\n            Square44x44Logo=\"Assets\\SmallLogo.png\"\n            Description=\"DrawingShapes\"\n            BackgroundColor=\"#464646\">\n            <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\"/>\n            <uap:SplashScreen Image=\"Assets\\SplashScreen.png\"/>\n        </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/PointList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Devices.Geolocation;\n\n\nnamespace DrawingShapes\n{\n  public class PointList\n  {\n    public PointList()\n    {\n      Points = new List<Geopoint>();\n    }\n    public string Name { get; set; }\n\n    public List<Geopoint> Points { get; set; }\n\n    public static IEnumerable<PointList> GetLines()\n    {\n      var result = new List<PointList>\n      {\n        new PointList\n        {\n          Name = \"Line1\",\n          Points = new List<Geopoint>\n          {\n            new Geopoint(new BasicGeoposition{Latitude = 52.1823604591191, Longitude = 5.3976580593735}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.182687940076 , Longitude = 5.39744247682393}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.1835449058563, Longitude = 5.40016567334533}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.1837400365621, Longitude = 5.40009761229157})\n          }\n        },\n        new PointList\n        {\n          Name = \"Line2\",\n          Points = new List<Geopoint>\n          {\n            new Geopoint(new BasicGeoposition{Latitude = 52.181295119226  , Longitude = 5.39748212322593}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.1793784294277, Longitude = 5.39909915998578})\n          }\n        }\n      };\n\n      return result;\n    }\n\n    public static IEnumerable<PointList> GetAreas()\n    {\n      var result = new List<PointList>\n      {\n        new PointList\n        {\n          Name = \"Area1\",\n          Points = new List<Geopoint>\n          {\n            new Geopoint(new BasicGeoposition{Latitude = 52.1807858347893, Longitude = 5.39981396868825}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.1802563499659, Longitude = 5.40086925029755}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.1797477360815, Longitude = 5.40002955123782}),\n            new Geopoint(new BasicGeoposition{Latitude = 52.180378222838 , Longitude = 5.39925254881382})\n          }\n        },\n        new PointList\n        {\n          Name = \"Area2\",\n          Points = new List<Geopoint>\n          {\n           new Geopoint(new BasicGeoposition{Latitude = 52.1818170603365, Longitude = 5.39659146219492}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1818030625582, Longitude = 5.39704534225166}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1812735777348, Longitude = 5.39751053787768}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1816498413682, Longitude = 5.39849775843322}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1813920140266, Longitude = 5.39914450608194}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1806813124567, Longitude = 5.39800984784961}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1812735777348, Longitude = 5.39748790673912}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.1810854878277, Longitude = 5.39656874723732}),\n           new Geopoint(new BasicGeoposition{Latitude = 52.18176827766  , Longitude = 5.39652340114117})\n          }\n        }\n      };\n      return result;\n    }\n\n    public static IEnumerable<PointList> GetRandomPoints(Geopoint point1, Geopoint point2, int nrOfPoints)\n    {\n      var result = new List<PointList>();\n      var p1 = new BasicGeoposition\n      {\n        Latitude = Math.Min(point1.Position.Latitude, point2.Position.Latitude),\n        Longitude = Math.Min(point1.Position.Longitude, point2.Position.Longitude)\n      };\n      var p2 = new BasicGeoposition\n      {\n        Latitude = Math.Max(point1.Position.Latitude, point2.Position.Latitude),\n        Longitude = Math.Max(point1.Position.Longitude, point2.Position.Longitude)\n      };\n\n      var dLat = p2.Latitude - p1.Latitude;\n      var dLon = p2.Longitude - p1.Longitude;\n\n      var r = new Random(DateTime.Now.Millisecond);\n      for (var i = 0; i < nrOfPoints; i++)\n      {\n        var item = new PointList{ Name=\"Point \" + i};\n        item.Points.Add( new Geopoint(\n          new BasicGeoposition{ Latitude = p1.Latitude + (r.NextDouble() * dLat),\n            Longitude = p1.Longitude + (r.NextDouble() * dLon)}));\n        result.Add(item);\n      }\n      return result;\n    }\n  }\n}\n"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"DrawingShapes\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"DrawingShapes\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "MapsDrawingShapes/DrawingShapes.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"DrawingShapes\", \"DrawingShapes\\DrawingShapes.csproj\", \"{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|x86.Build.0 = Debug|x86\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|ARM.Build.0 = Release|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|x86.ActiveCfg = Release|x86\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|x86.Build.0 = Release|x86\n\t\t{A744B616-FFF7-4D73-AEE1-BB25D57A66F3}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/AboutPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    mc:Ignorable=\"d\">\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"AboutPageHeader\" Text=\"about\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <StackPanel Orientation=\"Vertical\" d:LayoutOverrides=\"Height\" VerticalAlignment=\"Top\" Margin=\"20,200,0,0\">\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"VersionText\" Text=\"Version:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Version}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n                </StackPanel>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"PublishedByText\" Text=\"Published by:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Publisher}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                </StackPanel>\n                <TextBlock x:Uid=\"AppRights\" Text=\"AppRights\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,10,0,0\" />\n                <TextBlock x:Uid=\"AppLimitation\" Text=\"AppLimitation\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,15,0,0\" />\n            </StackPanel>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/AboutPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class AboutPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public AboutPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var packageId = Windows.ApplicationModel.Package.Current.Id;\n            var version = packageId.Version;\n            this.DefaultViewModel[\"Version\"] = String.Format(\"{0}.{1}.{2}.{3}\", version.Major, version.Minor, version.Build, version.Revision);\n            this.DefaultViewModel[\"Publisher\"] = packageId.Publisher.Replace(\"CN=\", string.Empty);\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ContosoCookbook.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:converters=\"using:ContosoCookbook.Converters\">\n    \n    <Application.Resources>\n        <converters:UserImagesDisplayConverter x:Key=\"ImagesDisplayConverter\"/>\n        <converters:ImageSourceToStringConverter x:Key=\"ToStringConverter\"/>\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Phone.UI.Input;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.Suspending += OnSuspending;\n            HardwareButtons.BackPressed += HardwareButtons_BackPressed;\n        }\n\n        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)\n        {\n            Frame frame = Window.Current.Content as Frame;\n            if (frame == null)\n            {\n                return;\n            }\n\n            if (frame.CanGoBack)\n            {\n                frame.GoBack();\n                e.Handled = true;\n            }\n        }\n\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), \"AllGroups\"))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n#if WINDOWS_PHONE_APP\n        protected override void OnActivated(IActivatedEventArgs args)\n        {\n            if (args is FileOpenPickerContinuationEventArgs)\n            {\n                Frame rootFrame = Window.Current.Content as Frame;\n\n                // Do not repeat app initialization when the Window already has content,\n                // just ensure that the window is active\n                if (rootFrame == null)\n                {\n                    // Create a Frame to act as the navigation context and navigate to the first page.\n                    rootFrame = new Frame();\n\n                    if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                    {\n                        //TODO: Load state from previously suspended application\n                    }\n\n                    // Place the frame in the current Window.\n                    Window.Current.Content = rootFrame;\n                }\n\n                if (rootFrame.Content == null)\n                {\n                    if (!rootFrame.Navigate(typeof(RecipeDetailPage)))\n                    {\n                        throw new Exception(\"Failed to create initial page\");\n                    }\n                }\n\n                // Send the args to the target page\n                var p = rootFrame.Content as RecipeDetailPage;\n                p.FilePickerEvent = (FileOpenPickerContinuationEventArgs)args;\n\n                // Ensure the current window is active\n                Window.Current.Activate();\n            }\n        }\n#endif\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Common/NavigationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// NavigationManager aids in navigation between pages.  It provides commands used to \n    /// navigate back and forward as well as registers for standard mouse and keyboard \n    /// shortcuts used to go back and forward.  In addition it integrates SuspensionManger\n    /// to handle process lifetime management and state management when navigating between\n    /// pages.\n    /// </summary>\n    /// <example>\n    /// To make use of NavigationManager, follow these two steps or\n    /// start with a BasicPage or any other Page item template other than BlankPage.\n    /// \n    /// 1) Create an instance of the NaivgationHelper somewhere such as in the \n    ///     constructor for the page and register a callback for the LoadState and \n    ///     SaveState events.\n    /// <code>\n    ///     public MyPage()\n    ///     {\n    ///         this.InitializeComponent();\n    ///         var navigationHelper = new NavigationHelper(this);\n    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;\n    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;\n    ///     }\n    ///     \n    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    ///     { }\n    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)\n    ///     { }\n    /// </code>\n    /// \n    /// 2) Register the page to call into the NavigationManager whenever the page participates \n    ///     in navigation by overriding the <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo\"/> \n    ///     and <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedFrom\"/> events.\n    /// <code>\n    ///     protected override void OnNavigatedTo(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedTo(e);\n    ///     }\n    ///     \n    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedFrom(e);\n    ///     }\n    /// </code>\n    /// </example>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public class NavigationHelper : DependencyObject\n    {\n        private Page Page { get; set; }\n        private Frame Frame { get { return this.Page.Frame; } }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationHelper\"/> class.\n        /// </summary>\n        /// <param name=\"page\">A reference to the current page used for navigation.  \n        /// This reference allows for frame manipulation and to ensure that keyboard \n        /// navigation requests only occur when the page is occupying the entire window.</param>\n        public NavigationHelper(Page page)\n        {\n            this.Page = page;\n\n            // When this page is part of the visual tree make two changes:\n            // 1) Map application view state to visual state for the page\n            // 2) Handle keyboard and mouse navigation requests\n            this.Page.Loaded += (sender, e) =>\n            {\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                    // Listen to the window directly so focus isn't required\n                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                        CoreDispatcher_AcceleratorKeyActivated;\n                    Window.Current.CoreWindow.PointerPressed +=\n                        this.CoreWindow_PointerPressed;\n                }\n            };\n\n            // Undo the same changes when the page is no longer visible\n            this.Page.Unloaded += (sender, e) =>\n            {\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                    CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n            };\n        }\n\n        #region Navigation support\n\n        RelayCommand _goBackCommand;\n        RelayCommand _goForwardCommand;\n\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used to bind to the back Button's Command property\n        /// for navigating to the most recent item in back navigation history, if a Frame\n        /// manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoBack\"/>\n        /// as the Execute Action and <see cref=\"CanGoBack\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoBackCommand\n        {\n            get\n            {\n                if (_goBackCommand == null)\n                {\n                    _goBackCommand = new RelayCommand(\n                        () => this.GoBack(),\n                        () => this.CanGoBack());\n                }\n                return _goBackCommand;\n            }\n            set\n            {\n                _goBackCommand = value;\n            }\n        }\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used for navigating to the most recent item in \n        /// the forward navigation history, if a Frame manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoForward\"/>\n        /// as the Execute Action and <see cref=\"CanGoForward\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoForwardCommand\n        {\n            get\n            {\n                if (_goForwardCommand == null)\n                {\n                    _goForwardCommand = new RelayCommand(\n                        () => this.GoForward(),\n                        () => this.CanGoForward());\n                }\n                return _goForwardCommand;\n            }\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go back.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the back navigation history.\n        /// </returns>\n        public virtual bool CanGoBack()\n        {\n            return this.Frame != null && this.Frame.CanGoBack;\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go forward.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the forward navigation history.\n        /// </returns>\n        public virtual bool CanGoForward()\n        {\n            return this.Frame != null && this.Frame.CanGoForward;\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoBack\"/> method.\n        /// </summary>\n        public virtual void GoBack()\n        {\n            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoForward\"/> method.\n        /// </summary>\n        public virtual void GoForward()\n        {\n            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();\n        }\n\n        /// <summary>\n        /// Invoked on every keystroke, including system keys such as Alt key combinations, when\n        /// this page is active and occupies the entire window.  Used to detect keyboard navigation\n        /// between pages even when the page itself doesn't have focus.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,\n            AcceleratorKeyEventArgs e)\n        {\n            var virtualKey = e.VirtualKey;\n\n            // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n            // are pressed\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&\n                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||\n                (int)virtualKey == 166 || (int)virtualKey == 167))\n            {\n                var coreWindow = Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n                bool noModifiers = !menuKey && !controlKey && !shiftKey;\n                bool onlyAlt = menuKey && !controlKey && !shiftKey;\n\n                if (((int)virtualKey == 166 && noModifiers) ||\n                    (virtualKey == VirtualKey.Left && onlyAlt))\n                {\n                    // When the previous key or Alt+Left are pressed navigate back\n                    e.Handled = true;\n                    this.GoBackCommand.Execute(null);\n                }\n                else if (((int)virtualKey == 167 && noModifiers) ||\n                    (virtualKey == VirtualKey.Right && onlyAlt))\n                {\n                    // When the next key or Alt+Right are pressed navigate forward\n                    e.Handled = true;\n                    this.GoForwardCommand.Execute(null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender,\n            PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed) return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) this.GoBackCommand.Execute(null);\n                if (forwardPressed) this.GoForwardCommand.Execute(null);\n            }\n        }\n\n        #endregion\n\n        #region Process lifetime management\n\n        private String _pageKey;\n\n        /// <summary>\n        /// Register this event on the current page to populate the page\n        /// with content passed during navigation as well as any saved\n        /// state provided when recreating a page from a prior session.\n        /// </summary>\n        public event LoadStateEventHandler LoadState;\n        /// <summary>\n        /// Register this event on the current page to preserve\n        /// state associated with the current page in case the\n        /// application is suspended or the page is discarded from\n        /// the navigaqtion cache.\n        /// </summary>\n        public event SaveStateEventHandler SaveState;\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.  \n        /// This method calls <see cref=\"LoadState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            this._pageKey = \"Page-\" + this.Frame.BackStackDepth;\n\n            if (e.NavigationMode == NavigationMode.New)\n            {\n                // Clear existing state for forward navigation when adding a new page to the\n                // navigation stack\n                var nextPageKey = this._pageKey;\n                int nextPageIndex = this.Frame.BackStackDepth;\n                while (frameState.Remove(nextPageKey))\n                {\n                    nextPageIndex++;\n                    nextPageKey = \"Page-\" + nextPageIndex;\n                }\n\n                // Pass the navigation parameter to the new page\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));\n                }\n            }\n            else\n            {\n                // Pass the navigation parameter and preserved page state to the page, using\n                // the same strategy for loading suspended state and recreating pages discarded\n                // from cache\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked when this page will no longer be displayed in a Frame.\n        /// This method calls <see cref=\"SaveState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            var pageState = new Dictionary<String, Object>();\n            if (this.SaveState != null)\n            {\n                this.SaveState(this, new SaveStateEventArgs(pageState));\n            }\n            frameState[_pageKey] = pageState;\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.LoadState\"/>event\n    /// </summary>\n    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.SaveState\"/>event\n    /// </summary>\n    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);\n\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to load state.\n    /// </summary>\n    public class LoadStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </summary>\n        public Object NavigationParameter { get; private set; }\n        /// <summary>\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LoadStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"navigationParameter\">\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </param>\n        /// <param name=\"pageState\">\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </param>\n        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.NavigationParameter = navigationParameter;\n            this.PageState = pageState;\n        }\n    }\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to save state.\n    /// </summary>\n    public class SaveStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// An empty dictionary to be populated with serializable state.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SaveStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"pageState\">An empty dictionary to be populated with serializable state.</param>\n        public SaveStateEventArgs(Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.PageState = pageState;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Common/ObservableDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Foundation.Collections;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// Implementation of IObservableMap that supports reentrancy for use as a default view\n    /// model.\n    /// </summary>\n    public class ObservableDictionary : IObservableMap<string, object>\n    {\n        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>\n        {\n            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)\n            {\n                this.CollectionChange = change;\n                this.Key = key;\n            }\n\n            public CollectionChange CollectionChange { get; private set; }\n            public string Key { get; private set; }\n        }\n\n        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();\n        public event MapChangedEventHandler<string, object> MapChanged;\n\n        private void InvokeMapChanged(CollectionChange change, string key)\n        {\n            var eventHandler = MapChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));\n            }\n        }\n\n        public void Add(string key, object value)\n        {\n            this._dictionary.Add(key, value);\n            this.InvokeMapChanged(CollectionChange.ItemInserted, key);\n        }\n\n        public void Add(KeyValuePair<string, object> item)\n        {\n            this.Add(item.Key, item.Value);\n        }\n\n        public bool Remove(string key)\n        {\n            if (this._dictionary.Remove(key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n                return true;\n            }\n            return false;\n        }\n\n        public bool Remove(KeyValuePair<string, object> item)\n        {\n            object currentValue;\n            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&\n                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);\n                return true;\n            }\n            return false;\n        }\n\n        public object this[string key]\n        {\n            get\n            {\n                return this._dictionary[key];\n            }\n            set\n            {\n                this._dictionary[key] = value;\n                this.InvokeMapChanged(CollectionChange.ItemChanged, key);\n            }\n        }\n\n        public void Clear()\n        {\n            var priorKeys = this._dictionary.Keys.ToArray();\n            this._dictionary.Clear();\n            foreach (var key in priorKeys)\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n            }\n        }\n\n        public ICollection<string> Keys\n        {\n            get { return this._dictionary.Keys; }\n        }\n\n        public bool ContainsKey(string key)\n        {\n            return this._dictionary.ContainsKey(key);\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return this._dictionary.TryGetValue(key, out value);\n        }\n\n        public ICollection<object> Values\n        {\n            get { return this._dictionary.Values; }\n        }\n\n        public bool Contains(KeyValuePair<string, object> item)\n        {\n            return this._dictionary.Contains(item);\n        }\n\n        public int Count\n        {\n            get { return this._dictionary.Count; }\n        }\n\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)\n        {\n            int arraySize = array.Length;\n            foreach (var pair in this._dictionary)\n            {\n                if (arrayIndex >= arraySize) break;\n                array[arrayIndex++] = pair;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Common/ReadMe.txt",
    "content": "﻿The Common directory contains classes that simplify application development.\n\nClasses in the Common directory form part of your project and may be further enhanced to meet your\nneeds.  Care should be taken when altering existing methods and properties as incompatible changes\nwill require corresponding changes to code included in a variety of Visual Studio templates.  For\nexample, additional pages added to your project are written assuming that the original methods and\nproperties in Common classes are still present and that the names of the types have not changed."
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Common/RelayCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// A command whose sole purpose is to relay its functionality \n    /// to other objects by invoking delegates. \n    /// The default return value for the CanExecute method is 'true'.\n    /// <see cref=\"RaiseCanExecuteChanged\"/> needs to be called whenever\n    /// <see cref=\"CanExecute\"/> is expected to return a different value.\n    /// </summary>\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n\n        /// <summary>\n        /// Raised when RaiseCanExecuteChanged is called.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n\n        /// <summary>\n        /// Creates a new command that can always execute.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        /// <summary>\n        /// Creates a new command.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        /// <param name=\"canExecute\">The execution status logic.</param>\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canExecute;\n        }\n\n        /// <summary>\n        /// Determines whether this <see cref=\"RelayCommand\"/> can execute in its current state.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        /// <returns>true if this command can be executed; otherwise, false.</returns>\n        public bool CanExecute(object parameter)\n        {\n            return _canExecute == null ? true : _canExecute();\n        }\n\n        /// <summary>\n        /// Executes the <see cref=\"RelayCommand\"/> on the current command target.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            _execute();\n        }\n\n        /// <summary>\n        /// Method used to raise the <see cref=\"CanExecuteChanged\"/> event\n        /// to indicate that the return value of the <see cref=\"CanExecute\"/>\n        /// method has changed.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            var handler = CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Common/SuspensionManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// SuspensionManager captures global session state to simplify process lifetime management\n    /// for an application.  Note that session state will be automatically cleared under a variety\n    /// of conditions and should only be used to store information that would be convenient to\n    /// carry across sessions, but that should be discarded when an application crashes or is\n    /// upgraded.\n    /// </summary>\n    internal sealed class SuspensionManager\n    {\n        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();\n        private static List<Type> _knownTypes = new List<Type>();\n        private const string sessionStateFilename = \"_sessionState.xml\";\n\n        /// <summary>\n        /// Provides access to global session state for the current session.  This state is\n        /// serialized by <see cref=\"SaveAsync\"/> and restored by\n        /// <see cref=\"RestoreAsync\"/>, so values must be serializable by\n        /// <see cref=\"DataContractSerializer\"/> and should be as compact as possible.  Strings\n        /// and other self-contained data types are strongly recommended.\n        /// </summary>\n        public static Dictionary<string, object> SessionState\n        {\n            get { return _sessionState; }\n        }\n\n        /// <summary>\n        /// List of custom types provided to the <see cref=\"DataContractSerializer\"/> when\n        /// reading and writing session state.  Initially empty, additional types may be\n        /// added to customize the serialization process.\n        /// </summary>\n        public static List<Type> KnownTypes\n        {\n            get { return _knownTypes; }\n        }\n\n        /// <summary>\n        /// Save the current <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also preserve their current\n        /// navigation stack, which in turn gives their active <see cref=\"Page\"/> an opportunity\n        /// to save its state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been saved.</returns>\n        public static async Task SaveAsync()\n        {\n            try\n            {\n                // Save the navigation state for all registered frames\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        SaveFrameNavigationState(frame);\n                    }\n                }\n\n                // Serialize the session state synchronously to avoid asynchronous access to shared\n                // state\n                MemoryStream sessionData = new MemoryStream();\n                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                serializer.WriteObject(sessionData, _sessionState);\n\n                // Get an output stream for the SessionState file and write the state asynchronously\n                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);\n                using (Stream fileStream = await file.OpenStreamForWriteAsync())\n                {\n                    sessionData.Seek(0, SeekOrigin.Begin);\n                    await sessionData.CopyToAsync(fileStream);\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        /// <summary>\n        /// Restores previously saved <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also restore their prior navigation\n        /// state, which in turn gives their active <see cref=\"Page\"/> an opportunity restore its\n        /// state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been read.  The\n        /// content of <see cref=\"SessionState\"/> should not be relied upon until this task\n        /// completes.</returns>\n        public static async Task RestoreAsync()\n        {\n            _sessionState = new Dictionary<String, Object>();\n\n            try\n            {\n                // Get the input stream for the SessionState file\n                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);\n                using (IInputStream inStream = await file.OpenSequentialReadAsync())\n                {\n                    // Deserialize the Session State\n                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());\n                }\n\n                // Restore any registered frames to their saved state\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        frame.ClearValue(FrameSessionStateProperty);\n                        RestoreFrameNavigationState(frame);\n                    }\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        private static DependencyProperty FrameSessionStateKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionStateKey\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionStateProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionState\", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);\n        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();\n\n        /// <summary>\n        /// Registers a <see cref=\"Frame\"/> instance to allow its navigation history to be saved to\n        /// and restored from <see cref=\"SessionState\"/>.  Frames should be registered once\n        /// immediately after creation if they will participate in session state management.  Upon\n        /// registration if state has already been restored for the specified key\n        /// the navigation history will immediately be restored.  Subsequent invocations of\n        /// <see cref=\"RestoreAsync\"/> will also restore navigation history.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should be managed by\n        /// <see cref=\"SuspensionManager\"/></param>\n        /// <param name=\"sessionStateKey\">A unique key into <see cref=\"SessionState\"/> used to\n        /// store navigation-related information.</param>\n        public static void RegisterFrame(Frame frame, String sessionStateKey)\n        {\n            if (frame.GetValue(FrameSessionStateKeyProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames can only be registered to one session state key\");\n            }\n\n            if (frame.GetValue(FrameSessionStateProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames must be either be registered before accessing frame session state, or not registered at all\");\n            }\n\n            // Use a dependency property to associate the session key with a frame, and keep a list of frames whose\n            // navigation state should be managed\n            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);\n            _registeredFrames.Add(new WeakReference<Frame>(frame));\n\n            // Check to see if navigation state can be restored\n            RestoreFrameNavigationState(frame);\n        }\n\n        /// <summary>\n        /// Disassociates a <see cref=\"Frame\"/> previously registered by <see cref=\"RegisterFrame\"/>\n        /// from <see cref=\"SessionState\"/>.  Any navigation state previously captured will be\n        /// removed.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should no longer be\n        /// managed.</param>\n        public static void UnregisterFrame(Frame frame)\n        {\n            // Remove session state and remove the frame from the list of frames whose navigation\n            // state will be saved (along with any weak references that are no longer reachable)\n            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));\n            _registeredFrames.RemoveAll((weakFrameReference) =>\n            {\n                Frame testFrame;\n                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;\n            });\n        }\n\n        /// <summary>\n        /// Provides storage for session state associated with the specified <see cref=\"Frame\"/>.\n        /// Frames that have been previously registered with <see cref=\"RegisterFrame\"/> have\n        /// their session state saved and restored automatically as a part of the global\n        /// <see cref=\"SessionState\"/>.  Frames that are not registered have transient state\n        /// that can still be useful when restoring pages that have been discarded from the\n        /// navigation cache.\n        /// </summary>\n        /// <remarks>Apps may choose to rely on <see cref=\"NavigationHelper\"/> to manage\n        /// page-specific state instead of working with frame session state directly.</remarks>\n        /// <param name=\"frame\">The instance for which session state is desired.</param>\n        /// <returns>A collection of state subject to the same serialization mechanism as\n        /// <see cref=\"SessionState\"/>.</returns>\n        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)\n        {\n            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);\n\n            if (frameState == null)\n            {\n                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);\n                if (frameSessionKey != null)\n                {\n                    // Registered frames reflect the corresponding session state\n                    if (!_sessionState.ContainsKey(frameSessionKey))\n                    {\n                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();\n                    }\n                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];\n                }\n                else\n                {\n                    // Frames that aren't registered have transient state\n                    frameState = new Dictionary<String, Object>();\n                }\n                frame.SetValue(FrameSessionStateProperty, frameState);\n            }\n            return frameState;\n        }\n\n        private static void RestoreFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            if (frameState.ContainsKey(\"Navigation\"))\n            {\n                frame.SetNavigationState((String)frameState[\"Navigation\"]);\n            }\n        }\n\n        private static void SaveFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            frameState[\"Navigation\"] = frame.GetNavigationState();\n        }\n    }\n    public class SuspensionManagerException : Exception\n    {\n        public SuspensionManagerException()\n        {\n        }\n\n        public SuspensionManagerException(Exception e)\n            : base(\"SuspensionManager failed\", e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/ContosoCookbook.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E977916E-3C97-485A-96FC-0D214F6FC9E3}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ContosoCookbook</RootNamespace>\n    <AssemblyName>ContosoCookbook</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformVersion>8.1</TargetPlatformVersion>\n    <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <Page Include=\"AboutPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"RecipeDetailPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"GroupDetailPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AboutPage.xaml.cs\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\NavigationHelper.cs\" />\n    <Compile Include=\"Common\\ObservableDictionary.cs\" />\n    <Compile Include=\"Common\\RelayCommand.cs\" />\n    <Compile Include=\"Common\\SuspensionManager.cs\" />\n    <Compile Include=\"Converters\\ImageSourceToStringConverter.cs\" />\n    <Compile Include=\"Converters\\UserImagesDisplayConverter.cs\" />\n    <Compile Include=\"DataModel\\BindableBase.cs\" />\n    <Compile Include=\"DataModel\\RecipeDataSource.cs\" />\n    <Compile Include=\"DataModel\\SampleDataSource.cs\" />\n    <Compile Include=\"RecipeDetailPage.xaml.cs\">\n      <DependentUpon>RecipeDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"GroupDetailPage.xaml.cs\">\n      <DependentUpon>GroupDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\DarkGray.png\" />\n    <Content Include=\"Assets\\LightGray.png\" />\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\MediumGray.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n    <Content Include=\"Common\\ReadMe.txt\" />\n    <Content Include=\"Data\\Recipes.txt\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_310_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\chinese_group.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_detail.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_header.png\" />\n    <Content Include=\"Images\\french\\French_1_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_1_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_310_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_600_C.jpg\" />\n    <Content Include=\"Images\\french\\french_group.png\" />\n    <Content Include=\"Images\\french\\french_group_detail.png\" />\n    <Content Include=\"Images\\french\\french_group_header.png\" />\n    <Content Include=\"Images\\german\\German_1_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_1_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_310_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_600_C.jpg\" />\n    <Content Include=\"Images\\german\\german_group.png\" />\n    <Content Include=\"Images\\german\\german_group_detail.png\" />\n    <Content Include=\"Images\\german\\german_group_header.png\" />\n    <Content Include=\"Images\\indian\\Indian_1_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_1_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\indian_group.png\" />\n    <Content Include=\"Images\\indian\\indian_group_detail.png\" />\n    <Content Include=\"Images\\indian\\indian_group_header.png\" />\n    <Content Include=\"Images\\italian\\Italian_1_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_1_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\italian_group.png\" />\n    <Content Include=\"Images\\italian\\italian_group_detail.png\" />\n    <Content Include=\"Images\\italian\\italian_group_header.png\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\mexican_group.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_detail.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_header.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\en-US\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup />\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0' \">\n    <VisualStudioVersion>12.0</VisualStudioVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(TargetPlatformIdentifier)' == '' \">\n    <TargetPlatformIdentifier>WindowsPhoneApp</TargetPlatformIdentifier>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\$(TargetPlatformVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Converters/ImageSourceToStringConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class ImageSourceToStringConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var file = value.ToString();\n            if (!file.Contains(\"/\")) return string.Empty;\n            var start = file.IndexOf(\"/\") + 1;\n            var end = file.IndexOf(\".\");\n            return string.Format(\"Created Date: {0}\", file.Substring(start, (end - start)));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Converters/UserImagesDisplayConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class UserImagesDisplayConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var list = value as ObservableCollection<string>;\n\n            if (null != list)\n            {\n                if (list.Count == 0)\n                    return Visibility.Visible;\n                else\n                    return Visibility.Collapsed;\n            }\n            else\n                return Visibility.Visible;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Data/Recipes.txt",
    "content": "﻿[ { \"backgroundImage\" : \"images/Chinese/Chinese_1_600_C.jpg\",\n    \"directions\" : \"Mix the ground pork with the salt, sugar, pepper, cornstarch and sesame oil. Add the dried mushrooms and Chinese sausage.Divide into 18 approximately equal portions. Take one portion of the meat and slightly flatten in your hand. Place a cooked quail egg on top of the meat and cover the meat around the egg to make a small round ball. Set aside. Dough:Mix the flour and sugar in a big bowl. Pour the milk in and mix until it becomes a dough Let it sit for 5 minutes. Divide into about 18 equal portions. If you feel any lumps, work through the dough with your hands to remove them. Forming and Cooking the Buns: flour, 18 pieces of dough, 18 balls of meat filling,  parchment paper, cut into 18 square. On a floured surface, roll out a piece of dough into a circle, ideally tapered at the edges Dip one of the prepared meat fillings in flour, With the piece of dough in one hand, place the meat filling on top. \",\n    \"extraImages\" : [ { \"image\" : \"images/Chinese/Chinese_1_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_2_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_3_600_C.jpg\" }\n      ],\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"600 g Ground pork\",\n        \"1 tsp Salt\",\n        \"1 tsp sugar\",\n        \"1/2 tsp Ground black pepper\",\n        \"2 tsp Cornstarch\",\n        \"1 tbsp Sesame oil\",\n        \"1 handful Sliced dried mushrooms \",\n        \"soaked and well drained\",\n        \"18 Quail eggs\",\n        \"cooked and peeled - alternately use 5 chicken eggs and cut them into quarters \",\n        \"3/4 cup Sugar\",\n        \"4 1/2 cups Self-raising flour\",\n        \"1 1/2 cups Milk\"\n      ],\n    \"key\" : 1000,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Steam bun baos\",\n    \"tileImage\" : \"images/Chinese/Chinese_1_150_C.jpg\",\n    \"title\" : \"Steam bun baos\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_2_600_C.jpg\",\n    \"directions\" : \"Crumble the bread mix it with the egg add salt to it. Cover each 2 shrimps with the mix hit a pan pour the souce to the pen fry the balls in the pan. Simply mix all ingredients by hand. At first it does not appear like it will mix, but keep at it just a bit longer and you have Hoisin Sauce. Letting it rest does not appear to improve the flavour any.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"8 Shrimp\",\n        \"2 peices of Bread\",\n        \"1 Egg\",\n        \"Salt\",\n        \"4 Tablespoons Soy sauce - dark/light/usual\",\n        \"2 tablespoons Peanut butter - or black bean paste\",\n        \"1 tablespoon Honey - or molasses\",\n        \"2 teaspoons White vinegar\",\n        \"1/8 teaspoon Garlic powder\",\n        \"2 teaspoons Sesame seed oil\",\n        \"20 drops Chinese-style hot sauce\",\n        \"1/8 teaspoon Black pepper\"\n      ],\n    \"key\" : 1001,\n    \"preptime\" : 45,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Breaded shrimp balls\",\n    \"tileImage\" : \"images/Chinese/Chinese_2_150_C.jpg\",\n    \"title\" : \"Breaded shrimp balls with hoisin sauce\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_3_600_C.jpg\",\n    \"directions\" : \"Cut the carrots and pears and pour on them soya souce and salt\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"2 Pears\",\n        \"Soy souce\",\n        \"Salt\"\n      ],\n    \"key\" : 1002,\n    \"preptime\" : 10,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Carrot Salad\",\n    \"tileImage\" : \"images/Chinese/Chinese_3_150_C.jpg\",\n    \"title\" : \"Asian Pear and Shredded Carrot Salad on a Plate; Chopsticks\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_4_600_C.jpg\",\n    \"directions\" : \"Mix the meat with one age and salt and flower. Heat water add sald and bay leaves, and  nuddels  and throw in the meatballs. wait for 35 minuts and its done\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 kg of Ground meat\",\n        \"Salt\",\n        \"Paper\",\n        \"1/2 cup of Flower\",\n        \"Water\",\n        \"2 Bay leaves\",\n        \"1 Egg\",\n        \"1 package of Nuddels\"\n      ],\n    \"key\" : 1003,\n    \"preptime\" : 50,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Shanghai Noodle Soup\",\n    \"tileImage\" : \"images/Chinese/Chinese_4_150_C.jpg\",\n    \"title\" : \"Shanghai Noodle and Meatball Soup\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_5_600_C.jpg\",\n    \"directions\" : \"Wash and finely chop the green onion. Lightly beat the eggs with the salt and pepper. Heat a wok or frying pan and add 2 tablespoons oil. When the oil is hot, add the eggs. Cook, stirring, until they are lightly scrambled but not too dry. Remove the eggs and clean out the pan.Add 2 tablespoons oil. Add the rice. Stir-fry for a few minutes, using chopsticks or a wooden spoon to break it apart. Stir in the soy sauce or oyster sauce as desired. When the rice is heated through, add the scrambled egg back into the pan. Mix thoroughly. Stir in the green onion. Serve hot.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1 or 2 Green onions\",\n        \"2 Large eggs\",\n        \"1 teaspoon Salt\",\n        \"Pepper to taste\",\n        \"4 tablespoons Oil for stir-frying or as needed\",\n        \"4 cups Cold cooked rice\",\n        \"1 - 2 tablespoons Light soy sauce or Oyster sauce\"\n      ],\n    \"key\" : 1004,\n    \"preptime\" : 30,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Fried Rice\",\n    \"tileImage\" : \"images/Chinese/Chinese_5_150_C.jpg\",\n    \"title\" : \"Fried Rice\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_6_600_C.jpg\",\n    \"directions\" : \"Combine the first 10 ingredients in a large bowl, using your fingers to mix everything together. Fill each wrapper with a heaping teaspoon of the pork filling. Add the filling in the middle of the potsticker wrapper, using your finger to spread it out toward the sides. Be sure not to overfill or to spread the filling too close to the edge of the wrapper. To fold the dumpling, moisten the edges of the wrapper with the egg white or mixture of water and cornstarch. Gently lift the edges of the moistened wrapper over the filling. Crimp the edges of the wrapper and pinch together to seal.Heat a wok or nonstick skillet on medium-high heat and add 1 tablespoon oil. Add 10 – 12 potstickers, and cook for 2 to 3 minutes, until the bottom is browned. Add 1/3 cup water, cover, and steam the dumplings until the liquid is absorbed. Remove and cook the remainder of the dumplings.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 cup finely chopped Bok choy leaves\",\n        \"1/2 cup finely chopped Sui Choy\",\n        \"1/4 cup finely chopped Green onion\",\n        \"1/4 cup chopped water Chestnuts\",\n        \"1 pound Ground pork\",\n        \"1 teaspoon Light soy sauce\",\n        \"1 teaspoon Dark soy sauce\",\n        \"2 teaspoons Chinese rice wine or dry sherry\",\n        \"1 teaspoon Asian sesame oil\",\n        \"Dash white pepper\",\n        \"1 package Wonton or Gyoza wrappers\",\n        \"1 tablespoon Cornstarch mixed with 2 tablespoons Water or 1 lightly beaten Egg white\",\n        \"1 cup Water or as needed\"\n      ],\n    \"key\" : 1005,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fried Dumpling\",\n    \"tileImage\" : \"images/Chinese/Chinese_6_150_C.jpg\",\n    \"title\" : \"Fried Dumpling\"\n  },\n  { \"backgroundImage\" : \"images/French/French_1_600_C.jpg\",\n    \"directions\" : \"Place flour and butter in a food processor and process on medium speed until only tiny lumps of butter remain. In a cup or small bowl, stir together water and egg yolk. Add yolk mixture to the butter and flour mixture. Process on medium speed until the mixture starts to clump together. Remove the processor blade and use your hand to press the dough clumps together into a mass. Tip the dough onto a large sheet of baking paper. Use your hands to bring the pastry together into a smooth ball. Form the pastry into a disc shape. Wrap pastry disc with plastic wrap or place in a freezer bag, and refrigerate for 30 minutes. Place unwrapped pastry disc between two large sheets of baking paper. Using a rolling pin, roll pastry out to fit a 23cm diameter quiche dish. The bottom sheet of baking paper may develop creases during rolling. These creases can make deep cuts in the pastry. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"220g plain Flour\",\n        \"120g cold Butter\",\n        \"1 tablespoon very cold Water\",\n        \"1 large Egg\",\n        \"separated into yolk and white\",\n        \"1 teaspoon Oil\",\n        \"1 small Onion\",\n        \"220g Bacon\",\n        \"finely chopped 5 large Eggs\",\n        \"125ml Cream\",\n        \"1/4 teaspoon Ground nutmeg Salt and pepper\",\n        \"110g grated tasty Cheddar cheese\"\n      ],\n    \"key\" : 2000,\n    \"preptime\" : 120,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Quiche Lorraine\",\n    \"tileImage\" : \"images/French/French_1_150_C.jpg\",\n    \"title\" : \"Quiche Lorraine, a slice cut\"\n  },\n  { \"backgroundImage\" : \"images/French/French_2_600_C.jpg\",\n    \"directions\" : \"Pulse confectioners' sugar and almond flour in a food processor until combined. Sift mixture 2 times. Preheat oven to 375 degrees. Whisk whites with a mixer on medium speed until foamy. Add cream of tartar, and whisk until soft peaks form. Reduce speed to low, then add superfine sugar. Increase speed to high, and whisk until stiff peaks form, about 8 minutes. Sift flour mixture over whites, and fold until mixture is smooth and shiny. Transfer batter to a pastry bag fitted with a 1/2-inch plain round tip, and pipe 3/4-inch rounds 1 inch apart on parchment-lined baking sheets, dragging pastry tip to the side of rounds rather than forming peaks. Tap bottom of each sheet on work surface to release trapped air. Let stand at room temperature for 15 minutes. Reduce oven temperature to 325 degrees. Bake 1 sheet at a time, rotating halfway through, until macarons are crisp and firm, about 10 minutes. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 cup Confectioners' sugar\",\n        \"3/4 cup Almond flour\",\n        \"2 large Egg whites, room temperature\",\n        \"Pinch of Cream of tartar\",\n        \"1/4 cup Superfine sugar\",\n        \"Chocolate: Chocolate Ganache\",\n        \"Coconut: 1 cup Swiss Meringue Buttercream mixed with 1/3 cup angel-flake coconut\",\n        \"Peanut: Chocolate Ganache or store-bought dulce de leche jam or peanut butter\",\n        \"1 cup Swiss Meringue Buttercream mixed with 1/3 cup finely chopped pistachios.\",\n        \"Raspberry: 3/4 cup seedless Raspberry jam\",\n        \"Swiss Meringue Buttercream\"\n      ],\n    \"key\" : 2001,\n    \"preptime\" : 80,\n    \"rating\" : 5,\n    \"shortTitle\" : \"French macaroons\",\n    \"tileImage\" : \"images/French/French_2_150_C.jpg\",\n    \"title\" : \"French macaroons\"\n  },\n  { \"backgroundImage\" : \"images/French/French_3_600_C.jpg\",\n    \"directions\" : \"1. Heat 1/4 cup of the olive oil in a large saucepan. When it is hot, add onions and shallots. Saute for a minute, then add crushed garlic, and sweet red pepper. Add tomato, celery, and fennel. Stir the vegetables into the oil with a wooden sppon until well coated. Then add another 1/4 cup of olive oil, thyme, bay leaf, cloves and the orange zest. Cook until the onion is soft and golden but not brown. 2. Cut fish fillets into 2-inch pieces. Add the pieces of fish and 2 cups of water to the vegetable mixture. Bring to a boil, then reduce heat and simmer, uncovered, for about 10 minutes. Add oysters, clams or mussels and shrimp, crabmeat or lobster tails, cut into pieces or left whole. 3. Add saffron, salt, pepper. Add clam juice, lemon juice, and white wine. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"3 pounds of at least 3 different kinds of Fish fillets\",\n        \"1/2 cup Olive oil\",\n        \"1-2 pounds of Oysters clams or mussels\",\n        \"1 cup cooked Shrimp crab or Lobster meat or Rock lobster tails\",\n        \"1 cup thinly sliced Onions\",\n        \"4 Shallots thinly sliced OR the white parts of 2 or 3 leeks\",\n        \"2 cloves Garlic, crushed\",\n        \"1 large Tomato chopped or 1/2 cup canned tomatoes\",\n        \"1 Sweet red pepper chopped\",\n        \"4 Stalks celery thinly sliced\"\n      ],\n    \"key\" : 2002,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Bouillabaisse\",\n    \"tileImage\" : \"images/French/French_3_150_C.jpg\",\n    \"title\" : \"Bouillabaisse\"\n  },\n  { \"backgroundImage\" : \"images/French/French_4_600_C.jpg\",\n    \"directions\" : \"Bake the fillet in the oven for 8 minnuts fry the bacon on oil. Cover the fillet with bacon put on a plate musshrooms and Brussels sprouts put on top the fillet.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"Venison fillet\",\n        \"Bacon\",\n        \"Forest mushrooms\",\n        \"Brussels sprouts\"\n      ],\n    \"key\" : 2003,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Venison fillet in bacon\",\n    \"tileImage\" : \"images/French/French_4_150_C.jpg\",\n    \"title\" : \"Venison fillet in bacon, forest mushrooms & Brussels sprouts\"\n  },\n  { \"backgroundImage\" : \"images/French/French_5_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 375 degrees. Heat a large skillet. Swirl in the olive oil, add the bacon, and cook until the bacon is golden, 2-3 minutes. Remove the bacon from the skillet. Salt and pepper the chicken and add to the skillet to brown on both sides, about 4 minutes, and remove. Add the onions and mushrooms to the skillet, sauteing until golden brown, 5-8 minutes. Stir in the tomato paste. Deglaze the pan with white wine, scraping to pick up the brown bits, and reduce. Stir in the flour. Add the chicken stock and stir to combine. Return the chicken and bacon to the skillet. Stir in the noodles and cheese. Transfer the mixture to a 9- x 13-inch baking dish. Top with panko, sprinkle on the paprika, and drizzle with olive oil. Bake for 25 minutes.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Extra-virgin olive oil plus more for drizzling\",\n        \"2 strips Bacon sliced crosswise into strips\",\n        \"2 1/2 pounds Boneless chicken thighs skin-on\",\n        \"Coarse salt and freshly Ground black pepper\",\n        \"1 small Onion halved and thinly sliced\",\n        \"10 ounces White button\",\n        \"Mushrooms quartered\",\n        \"3 tablespoons Tomato paste\",\n        \"1/2 cup White wine\",\n        \"1/3 cup Flour\",\n        \"1 1/2 cups Chicken stock\",\n        \"1 extra-wide Egg noodles\",\n        \"cooked to package instruction\",\n        \"2 cups shredded Muenster cheese\",\n        \"Pinch of paprika\",\n        \"1 cup panko Breadcrumbs\"\n      ],\n    \"key\" : 2004,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Coq au vin\",\n    \"tileImage\" : \"images/French/French_5_150_C.jpg\",\n    \"title\" : \"Coq au vin in a casserole dish\"\n  },\n  { \"backgroundImage\" : \"images/French/French_6_600_C.jpg\",\n    \"directions\" : \"Allow the fish filet to defrost if they were frozen. Peel and finely chop the onion and shallots. Peel and crush the clove of garlic. Get the leaves out the bunch of parsley and snip them in a glass with scissors. Juice up the lemon and place in a bowl. Prepare the breadcrumbs. You have several options to get breadcrumbs, the easy way is to buy ready to go breadcrumbs, the other option is to grate a really hard stale piece of bread using a box or zest grater, this is also achievable using a mortar grinder. If you do not have hard bread available, it is possible to make it hard using a toaster. You can use every kind of bread but I would recommend the use of farmhouse, wholemeal or rye bread. In a saucepan add the butter and the very finely chopped onion and shallots, add the crushed garlic. Stir fry over medium heat for 5 minutes then add the white wine, salt & pepper and reduce over low heat until almost all liquid has evaporated. Preheat you oven at 180 °C ( 360 °F ). \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"4 Fish filets frozen or not\",\n        \"1 big Onion\",\n        \"2 Shallots\",\n        \"1 clove of Garlic\",\n        \"30g Butter\",\n        \"10cl dry White wine\",\n        \"Juice of a lLemon\",\n        \"50g Bbreadcrumbs\",\n        \"1 bunch of Parsley\",\n        \"3 tbs. Olive oil\",\n        \"Salt and Pepper\"\n      ],\n    \"key\" : 2005,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fish a la bordelaise\",\n    \"tileImage\" : \"images/French/French_6_150_C.jpg\",\n    \"title\" : \"Fish a la bordelaise\"\n  },\n  { \"backgroundImage\" : \"images/German/German_1_600_C.jpg\",\n    \"directions\" : \"Combine the first 8 ingredients in a bowl; stir well. Shape mixture into 24 (1-inch) meatballs. Coat a large nonstick skillet with cooking spray; place over medium heat until hot. Add meatballs; cook 10 minutes or until browned, stirring frequently. Remove from skillet; set aside. Add garlic to skillet; saut? 30 seconds. Add wine; bring to a boil over medium heat, and cook 1 minute. Return the meatballs to skillet; cover and cook 5 minutes or until done. Remove from heat. Remove meatballs from the skillet with a slotted spoon; set aside, and keep warm. Add sour cream and pepper to wine mixture in skillet; stir well. Spoon sauce over meatballs. make salad with cucumber with slised potato and add sald put on top hot meatbals.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1/2 pound Ground round\",\n        \"1/2 pound lean Ground pork\",\n        \"1/4 cup dry Breadcrumbs\",\n        \"1 1/2 tablespoons chopped fresh Parsley\",\n        \"1/4 teaspoon Salt\",\n        \"1 teaspoon prepared Mustard\",\n        \"1/2 teaspoon Worcestershire sauce\",\n        \"1 Egg white lightly beaten\",\n        \"Vegetable cooking spray\",\n        \"2 Garlic cloves minced\",\n        \"1 cup Riesling or other slightly sweet White wine\",\n        \"1/2 cup nonfat Sour cream\",\n        \"1/4 teaspoon Pepper\",\n        \"2 cooked Potato\",\n        \"1 Cucumber\"\n      ],\n    \"key\" : 3000,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"German meatballs\",\n    \"tileImage\" : \"images/German/German_1_150_C.jpg\",\n    \"title\" : \"German meatballs on potato and cucumber salad with pretzel\"\n  },\n  { \"backgroundImage\" : \"images/German/German_2_600_C.jpg\",\n    \"directions\" : \"Water, vinegar and wine to the boil with the spices. Peel the onions, cut into rings and add the peeled and thinly sliced carrots and simmer for 10 minutes. Then leave the sausages in a very low heat (so they do not burst) 15 minutes, more like, pull until they are fairly firm. The sausages with vegetables and a little brew served hot. Serve with dark bread baked twice\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 liter of Water\",\n        \"2 pcs Cloves\",\n        \"5 pcs Peppercorns\",\n        \"10 pcs Mustard seeds\",\n        \"3 pcs Bay leaves\",\n        \"1 teaspoon Salt\",\n        \"2 tsp Sugar\",\n        \"1 small Carrot\",\n        \"3 large Onions\",\n        \"100 ml White wine\",\n        \"100 ml Wine vinegar\",\n        \"5 pcs Juniper berries\",\n        \"16 pcs Nuremberg grilled sausages\"\n      ],\n    \"key\" : 3001,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Saure Zipfel\",\n    \"tileImage\" : \"images/German/German_2_150_C.jpg\",\n    \"title\" : \"Saure Zipfel, Nuremberg sausages cooked in vinegar\"\n  },\n  { \"backgroundImage\" : \"images/German/German_3_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 350°F. Cut off the tips of the heads of garlic and brush the cut sides with 1 tablespoon of the olive oil. Set garlic cut-side down on a sheet pan and roast until it is soft to the touch, about 30 minutes. Let garlic cool for 5 minutes, then squeeze the roasted cloves out of the garlic and into a bowl. Mash with a fork and spread over the top of the lamb .Meanwhile, place the lamb in a large roasting pan and season with salt, pepper and half of the rosemary. Allow to stand at room temperature for 30 minutes to an hour. Place the potatoes in an oven-proof dish and toss with the remaining oil and rosemary. Set aside. Roast lamb for about 1 hour 40 minutes, until it registers 130-135°F on a meat thermometer for a medium-rare roast, or until the juices run clear when a sharp knife or skewer is inserted in the thickest part of the meat. When the lamb has been roasting for 40 or 50 minutes, place the potatoes in the oven and bake until well browned and tender. Transfer the lamb to a warm platter and let rest for 15 minutes. (It will continue to cook as it rests.) \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 leg of Lamb bone in\",\n        \"2 heads Garlic halved\",\n        \"3 tablespoons Olive oil\",\n        \"Salt and freshly Ground pepper to taste\",\n\t\t\"2 tablespoons Rosemary chopped\",\n        \"3 pounds small Red potatoes halved\",\n        \"grilled Asparagus or preferred vegetable to serve\"\n      ],\n    \"key\" : 3002,\n    \"preptime\" : 90,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Leg of lamb\",\n    \"tileImage\" : \"images/German/German_3_150_C.jpg\",\n    \"title\" : \"Leg of lamb (Heidschnucke) with root vegetables\"\n  },\n  { \"backgroundImage\" : \"images/German/German_4_600_C.jpg\",\n    \"directions\" : \"Backe the sausage in the oven for 30 minuts, cook the carrot ground it after coocking, mix it with butter and salt, put on top a backed sausage.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"German sausage\",\n        \"Salt\",\n        \"Butter\"\n      ],\n    \"key\" : 3003,\n    \"preptime\" : 40,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Roasted sausages\",\n    \"tileImage\" : \"images/German/German_4_150_C.jpg\",\n    \"title\" : \"Roasted sausages on top of carrot stew\"\n  },\n  { \"backgroundImage\" : \"images/German/German_5_600_C.jpg\",\n    \"directions\" : \"In a small bowl, whisk the milk with the egg yolks and egg. In a large bowl, whisk the flour with the nutmeg, 1 teaspoon of salt and 1/4 teaspoon of pepper. Using a wooden spoon, stir the egg mixture into the flour, leaving a few lumps. Cover and refrigerate the batter for at least 1 hour or overnight. Bring a large pot of salted water to a boil. Prepare a large bowl of ice water. Carefully hold a colander with large holes over the boiling water. Add about 1/2 cup of the batter to the colander and press it into the simmering water with a spatula or the back of a spoon. Repeat until all of the batter has been used. Cook the spaetzle for 2 minutes longer, then drain. Immediately transfer the spaetzle to the ice water, swirling the dumplings until all of the ice melts. Drain and transfer to a large bowl. Stir in 1 tablespoon of the oil, season with salt and pepper and toss to coat. Preheat the oven to 400°. Oil a 9-by-13-inch baking dish. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"3 cups all-purpose Flour\",\n        \"1/4 teaspoon freshly Grated nutmeg\",\n        \"1 medium White onion thinly sliced\",\n        \"1 large Egg\",\n        \"1 1/2 cups shredded Gruyere cheese\",\n        \"1 3/4 cups Milk\",\n        \"1 tablespoon unsalted Butter cut into small pieces\",\n        \"Salt and freshly ground Pepper\",\n        \"4 large Egg yolks\",\n        \"2 tablespoons Peanut oil\"\n      ],\n    \"key\" : 3004,\n    \"preptime\" : 50,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Spaetzle and onion\",\n    \"tileImage\" : \"images/German/German_5_150_C.jpg\",\n    \"title\" : \"Spaetzle and onion\"\n  },\n  { \"backgroundImage\" : \"images/German/German_6_600_C.jpg\",\n    \"directions\" : \"Mash the Camembert with a fork and add the butter, cream cheese and onions. Season with salt, pepper, paprika and caraway to taste. Add beer gradually and stir. Spoon a portion of Obatzda onto each plate and garnish with onion rings, chives and caraway. Serve preferably with rye bread, wholemeal bread and radishes. Obatzda is available to purchase ready-made for tho\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"500g ripe Camembert \",\n        \"40g soft Butter \",\n        \"200g cream cheese \",\n        \"80g finely chopped Onions\",\n        \"Salt, pepper and Paprika caraway\",\n        \"2 desert spoons of chopped Chives\",\n        \"60g finely sliced Onion rings \",\n        \"6 or 8 desert spoons of Beer to taste\"\n      ],\n    \"key\" : 3005,\n    \"preptime\" : 65,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Obatzda\",\n    \"tileImage\" : \"images/German/German_6_150_C.jpg\",\n    \"title\" : \"Obatzda\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_1_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour.While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups all purpose Flour\",\n        \"1 1/2 teaspoons Salt\",\n        \"1/2 cup Ghee or clarified Butter or Oil\",\n        \"Cold water as needed usually about 10 tablespoons\",\n        \"3 medium baking Potatoes boiled until tender drained and cooled\",\n        \"1 cup minced Onion\",\n        \"1 tablespoon minced fresh Ginger\",\n        \"1 hot green Chile such as Serrano finely minced\",\n        \"1 teaspoon ground Coriander\",\n        \"1 teaspoon garam Masala\",\n        \"1 tablespoon Lemon juice Chutney for serving\"\n      ],\n    \"key\" : 4000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable samosas\",\n    \"tileImage\" : \"images/Indian/Indian_1_150_C.jpg\",\n    \"title\" : \"Vegetable samosas\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_2_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour. While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.While the filling is cooking, make teyogurt dipping sauce by combining the yogurt, remaining tablespoon of cilantro, mint, green onion, lemon juice, remaining 1/4 teaspoon of salt and remaining 1/8 teaspoon of pepper and stir to combine. Set aside, refrigerated, until ready to serve the samosas. Divide the samosa dough into 10 portions and roll each piece of dough into a circle about 5 inches in diameter. Cut each circle in half. Lightly moisten the straight edge  each half circle and press together to seal; you should now have a cone-shaped portion of dough. Carefully spoon about 2 heaping tablespoons of the filling into the dough cone and then moisten the remaining edges with a bit of water and press together to seal. Repeat with the remaining portions of dough and filling. When you are ready to fry the samosas, heat a large saucepan filled at least 2 inches with oil to about 340 degrees F. Fry the samosas, a few at a time and stirring to promote even cooking, until golden brown, about 4 minutes.Remove using a slotted spoon and transfer to a per-lined plate to drain. Repeat until all samosas have been fried. Serve immediately, with the yogurt dipping sauce and your favorite chutney\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 lbs. boneless Chicken breast \",\n        \"1/4 cup Yogurt\",\n        \"3 tsp minced Ginger \",\n        \"3 tsp crushed Garlic\",\n        \"1/4 tsp White pepper\",\n        \"1/4 tsp Cumin powder\",\n        \"1/4 tsp Mace\",\n        \"1/4 tsp Nutmeg \",\n        \"1/4 tsp green Cardamom powder\",\n        \"1/4 tsp Chili powder \",\n        \"1/4 tsp Turmeric \",\n        \"3 tbsp Lemon juice \",\n        \"2 tsp Ginger julienned\",\n        \"Honey to taste\"\n      ],\n    \"key\" : 4001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Chicken Chili Tikka Masala\",\n    \"tileImage\" : \"images/Indian/Indian_2_150_C.jpg\",\n    \"title\" : \"Chicken Chili Tikka Masala\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_3_600_C.jpg\",\n    \"directions\" : \"Keep lobia soaked overnight. Strain water in morning,Cook lobia in a large pan in 1 1/2 cup water, baking soda, asafoetida, onion, ginger, mint and garam masaala. Cook to soften lobias,Strain water. Keep aside lobia. Retain stock,Heat oil in frying pan. Add salt, cumin powder, coriander powder, green coriander, tomato, red chilli powder and green chillies. Stir fry for a while,Add boiled potatoes followed by lobia. Roast for 2 minutes. Add lobia water (stock). Look for 2 minutes,Serve hot with rice, rotis or chapatis\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"250 gr Lobia \",\n        \"Salt to taste\",\n        \"1/2 tsp Cumin seed \",\n        \"1 Green chilli \",\n        \"3 tbsps Oil \",\n        \"1 tsp Coriander \",\n        \"a pinch of Asafoetida\",\n        \"8-10 Mint leaves \",\n        \"a pinch of Baking soda \",\n        \"1 tsp Red chilli \",\n        \"1 tsp Garam masaala \",\n        \"1 piece Ginger \",\n        \"1 tsp Coriander \",\n        \"2 Potato \",\n        \"1/2 tsp Turmeric \",\n        \"2 Onion \",\n        \"2 Tomatoes \"\n      ],\n    \"key\" : 4002,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lobia Aloo\",\n    \"tileImage\" : \"images/Indian/Indian_3_150_C.jpg\",\n    \"title\" : \"Lobia Aloo ,Black Eyed Bean and Potato Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_4_600_C.jpg\",\n    \"directions\" : \"Place chicken in bowl and marinate in yogurt, 1 clove garlic, half an onion, paprika, ginger, salt and pepper for a few hours. Heat oil in large heavy casserole; gently saut? remaining onion and garlic for 1 minute. Remove and set aside. Add to casserole the coriander, chili, cumin, cardamom seeds, poppy seed and turmeric. Fry for a few minutes. Add the chicken. Pour enough water to cover and add remaining marinade. Add onion and garlic with bay leaf. Simmer 45 minutes or until chicken is tender. Sprinkle the chicken korma with fresh coriander and serve.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 1/2 pound cut up Chicken \",\n        \"2 cups Yogurt \",\n        \"3 cloves Garlic \",\n        \"2 medium Onions chopped \",\n        \"1 tsp Paprika \",\n        \"2 tsp fresh Ginger chopped \",\n        \"2 tsp Peanut or Sunflower oil\",\n        \"2 tsp ground Coriander \",\n        \"1/2 tsp ground Chili \",\n        \"1 tsp Cumin seeds of 2 peeled Cardamom pod \",\n        \"1 tsp Poppy seed \",\n        \"1 tsp Turmeric \",\n        \"1 Bay leaf \",\n        \"2 tbsp fresh Coriander chopped\"\n      ],\n    \"key\" : 4003,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Chicken Korma Curry\",\n    \"tileImage\" : \"images/Indian/Indian_4_150_C.jpg\",\n    \"title\" : \"Chicken Korma Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_5_600_C.jpg\",\n    \"directions\" : \"Rice: Wash rice gently changing water several times until the water appears clear. For fluffier rice, the rice should be soaked for at least 15 minutes prior to cooking. Drain the rice and put it into the saucepan. Add water, oil, and salt, and bring to a boil. Once the water is boiling reduce the heat to low and cover the pan. Cook about 15 minutes, or until the rice is tender and the water has evaporated. Turn off the heat and fluff the rice with a fork. For a few minutes soak saffron in warm milk then gently fold the milk into the cooked rice. Vegetable And Gravy: Blend tomatoes to make a puree.In a bowl add yogurt, ginger, green chili, salt, turmeric, chili powder – mix it well. Add all the vegetables (cauliflower, beans, bell pepper, carrots, paneer, cashews, ginger and green chili) to the yogurt. Mix it well then let it marinate for 10 to 15 minutes. Heat the oil in a saucepan. Test the heat by adding one cumin seed to the oil; if seed cracks right away oil is ready. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups Basmati Rice\",\n        \"1 cup mixed Vegetables\",\n        \"150 gms Green peas\",\n        \"3 finely sliced Onions\",\n        \"1 tsp Red chilli powder\",\n        \"4 Cloves\",\n        \"4 Tomatoes\",\n        \"1/2 cup Yogurt\",\n        \"1/2 tsp Mustard seeds\"\n      ],\n    \"key\" : 4004,\n    \"preptime\" : 50,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable Biryani\",\n    \"tileImage\" : \"images/Indian/Indian_5_150_C.jpg\",\n    \"title\" : \"Vegetable Biryani\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_6_600_C.jpg\",\n    \"directions\" : \"For the lemon rice, cook the lemon zest and spices in a little oil until fragrant. Add the rice and stir well. Tip in 2 mugs of water and 1 tsp salt, bring to a simmer, put on a lid and cook until water is absorbed and rice cooked. Add a splash of lemon juice to serve. To make the dhal, put the lentils and turmeric in a pan and add water to cover by 2cm. Season and simmer for about 20 minutes until tender, adding more water if needed. Heat some oil in a pan then cook the onion, garlic and chilli for a few minutes. Add the garam masala, cook for a minute then stir into the cooked lentils. For the saag paneer, fry the paneer in a little oil until golden. Add the onion, ginger, garlic and spices, and cook until softened. Add the spinach and a splash of water and cook until wilted. To make the onion raita, mix everything together just before serving and season. Make the aubergine and tomato curry by frying the onion in oil until soft. Tip onto a plate. Add a little more oil to the pan and fry the aubergine in batches until browned all over and tender. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"1 Lemon zest pared and juiced\",\n        \"1/2 tsp Mustard seeds\",\n        \"3 Cardamon pods bashed\",\n        \"1 mugful Basmati rice\",\n        \"250g Red lentils\",\n        \"1 tsp Turmeric\",\n        \"Oil\",\n        \"1 Onion  grated\",\n        \"2 Garlic cloves finely chopped\",\n        \"1 Red chilli shredded\",\n        \"1 tsp Garam masala\",\n        \"1 punnet Cherry tomatoes\"\n      ],\n    \"key\" : 4005,\n    \"preptime\" : 40,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Thali\",\n    \"tileImage\" : \"images/Indian/Indian_6_150_C.jpg\",\n    \"title\" : \"Thali\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_1_600_C.jpg\",\n    \"directions\" : \"In a medium saucepan, whisk together egg yolks and sugar until well blended. Whisk in milk and cook over medium heat, stirring constantly, until mixture boils. Boil gently for 1 minute, remove from heat and allow to cool slightly. Cover tightly and chill in refrigerator 1 hour.In a medium bowl, beat cream with vanilla until stiff peaks form. Whisk mascarpone into yolk mixture until smooth. In a small bowl, combine coffee and rum. Split ladyfingers in half lengthwise and drizzle with coffee mixture.Arrange half of soaked ladyfingers in bottom of a 7x11 inch dish. Spread half of mascarpone mixture over ladyfingers, then half of whipped cream over that. Repeat layers and sprinkle with cocoa. Cover and refrigerate 4 to 6 hours, until set.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"6 Egg yolks\",\n        \"3/4 cup White sugar\",\n        \"2/3 cup Milk\",\n        \"1 1/4 cups Heavy cream\",\n        \"1/2 teaspoon Vanilla extract\",\n        \"1 pound Mascarpone cheese\",\n        \"1/4 cup strong brewed Coffee room temperature\",\n        \"2 tablespoons Rum\",\n        \"2  packages Ladyfinger cookies\",\n        \"1 tablespoon unsweetened Cocoa powder\"\n      ],\n    \"key\" : 5000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Tiramisu\",\n    \"tileImage\" : \"images/Italian/Italian_1_150_C.jpg\",\n    \"title\" : \"Tiramisu\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_2_600_C.jpg\",\n    \"directions\" : \"1. Put 1 1/2 quarts (6 cups) of water into a pot. Add 1 level tablespoon of kosher salt (or 2 level teaspoons if you are using table salt). Bring to a boil. Lower the heat to warm, cover and keep warm while you make the risotto. 2. In a large, wide saute pan, heat olive oil and butter on medium heat. Add the onions and cook until translucent, about 5 minutes. 3. Add arborio rice. Stir to coat. Cook, stirring, 5-7 minutes, until the rice just barely begins to brown on some of the grains. 4. Add the wine. Stir continuously, a few minutes, until the liquid has been completely absorbed by the rice. 5. Lower the heat to medium low. Start adding the hot salted water to the rice, one ladleful (about 1/2 cup) at a time. After each addition, stir continuously for a few minutes until the rice has completely absorbed the liquid. Stir enough to keep the rice from sticking to the edge of the pan. Stirring continuously helps extract starch from the rice, to make a creamy sauce for the rice. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"Salt\",\n        \"1 1/2 quarts Water\",\n        \"3 tbsp Olive oil\",\n        \"1 tbsp Butter\",\n        \"3/4 cup finely chopped Onion\",\n        \"2 cups Arborio rice or other Risotto rice\",\n        \"1 cup White wine\",\n        \"1 or 2 Meyer lemons enough for 1 tbsp of zest and 3 tbsp of juice\",\n        \"1 tbsp of chopped fresh Oregano leaves\",\n        \"1/4 teaspoon freshly Ground black pepper\",\n        \"1/4 cup lightly toasted Pine nuts\"\n      ],\n    \"key\" : 5001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lemon risotto\",\n    \"tileImage\" : \"images/Italian/Italian_2_150_C.jpg\",\n    \"title\" : \"Lemon risotto with pine nuts, herb oil and rosemary\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_3_600_C.jpg\",\n    \"directions\" : \"Bring a large pot of lightly salted water to a boil. Add pasta and cook for 8 to 10 minutes, or until al dente. Drain and set aside.Melt butter over medium-high heat in a large skillet. Add onions, mushrooms, and garlic, and saute until tender. Pour in wine and simmer for 10 minutes, reducing heat if necessary.Stir in clams, reserved clam juice, sour cream, pepper, and parsley, and simmer another 20 minutes. Toss with linguine, and serve. Enjoy!\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 package Linguine pasta\",\n        \"8 tablespoons unsalted Butter\",\n        \"1 medium white Onion chopped\",\n        \"8 ounces fresh Mushrooms sliced\",\n        \"4 cloves Garlic pressed\",\n        \"1 cup dry White wine\",\n        \"4 cans chopped Clams, drained and rinsed with juices reserved\",\n        \"2 tablespoons Sour cream\",\n        \"freshly Ground black pepper\",\n        \"1/4 cup chopped flat leaf Parsley\"\n      ],\n    \"key\" : 5002,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Linguine with clams\",\n    \"tileImage\" : \"images/Italian/Italian_3_150_C.jpg\",\n    \"title\" : \"Linguine with clams\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_4_600_C.jpg\",\n    \"directions\" : \"In a large saucepan combine crushed tomatoes, diced tomatoes, tomato sauce, minced garlic, sugar, parsley, garlic powder, salt, oregano, basil, and ground black pepper. Add capers and crushed red pepper if desired. Cover. Bring to a boil.Lower heat and simmer, with cover, for 45 to 60 minutes. As simmering time nears, in a large pot with boiling salted water cook spaghetti until al dente.Toss spaghetti with cooked sauce. Serve warm.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 pound Spaghetti\",\n        \"1  can crushed Tomatoes\",\n        \"1  can diced Tomatoes\",\n        \"1 can Tomato sauce\",\n        \"1 tablespoon Minced garlic\",\n        \"2 teaspoons White sugar\",\n        \"2 teaspoons dried Parsley\",\n        \"1 teaspoon Garlic powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon dried Oregano\",\n        \"1/4 teaspoon dried Basil\",\n        \"1/4 teaspoon ground Black pepper\",\n        \"1 1/2 tablespoons Capers\",\n        \"1 pinch crushed Red pepper flakes\"\n      ],\n    \"key\" : 5003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Spaghetti with marinara sauce\",\n    \"tileImage\" : \"images/Italian/Italian_4_150_C.jpg\",\n    \"title\" : \"Spaghetti with marinara sauce\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_5_600_C.jpg\",\n    \"directions\" : \"Layer alternating slices of tomatoes and mozzarella, adding a basil leaf between each, on a large, shallow platter. Drizzle the salad with extra-virgin olive oil and season with salt and pepper, to taste.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"3 Vine ripe tomatoes\",\n        \"1 pound fresh Mozzarell\",\n        \"20 to 30 leaves fresh Basil\",\n        \"Extra-virgin olive oil for drizzling\",\n        \"Coarse Salt and Pepper\"\n      ],\n    \"key\" : 5004,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Caprese Salad\",\n    \"tileImage\" : \"images/Italian/Italian_5_150_C.jpg\",\n    \"title\" : \"Caprese Salad\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_6_600_C.jpg\",\n    \"directions\" : \"1. Brown lean ground beef in skillet until lightly browned and cooked through. Put a few layers of paper towels in large bowl. With slotted spoon, remove browned beef from skillet draining off excess beef fat and put on top of blotting towels. After all the browned beef has been removed from the skillet, drain off and dispose of excess beef fat. Wipe skillet clean with paper towel.Add diced green pepper and onion to skillet. Brown for a few minutes on medium high heat. Add the garlic and cook for 30 seconds more. Add browned beef back to the skillet, lower the heat to low and continue to cook for 5 more minutes stirring frequently. 2. Transfer browned beef, green pepper and onions to 3 Qt. pot. Add tomato sauce, tomato paste. Open stewed tomatoes and dice, then add to 3 Qt. pot. Add oregano, parsley, Italian Spice Mix to taste, probably 2 teaspoons of each. Add a pinch of garlic powder and a pinch of garlic salt, to taste. Add a dash of white wine vinegar. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 lb lean Ground beef\",\n        \"1/2 medium sweet white Onion diced\",\n        \"1/2 large Bell pepper seeds and veins removed\",\n        \"1/2 lb dry Lasagna noodles\",\n        \"1/4 cup Sugar \", \n\t\t\"1 28oz can Tomato sauce\",\n        \"1/2 28 oz can Stewed tomatoes\",\n        \"1/2 6 oz can Tomato paste\",\n        \"1 lb Ricotta cheese\",\n        \"1 1/2 lb Mozzarella cheese\",\n        \"3/4 lb freshly grated Parmesan cheese\",\n        \"Garlic Powder\",\n        \"Oregano\",\n        \"White wine vinegar\"\n      ],\n    \"key\" : 5005,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lasagna\",\n    \"tileImage\" : \"images/Italian/Italian_6_150_C.jpg\",\n    \"title\" : \"Lasagna\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_1_600_C.jpg\",\n    \"directions\" : \"1. If you are starting with somewhat old, dried out tortillas, great. If not and you are starting with relatively fresh tortillas, put them on a baking sheet and put them in the oven at 200°F for 10-15 minutes to dry them out a bit. It is best to start with tortillas that don't have a lot of moisture in them. Cut tortillas in half, and then cut the halves into 1/4-inch wide strips. Heat oil over medium-high heat in a 3-quart pot. Working in three batches, fry the tortilla strips in the oil, until lightly browned and crisp. Remove the tortilla strips from the pan and let drain on a paper-towel-lined plate. 2. Add the chopped onions to the pan, cook 2 minutes, stirring frequently. Add the chopped chile and cook for 2-3 minutes more, until the onions and chiles have softened. Add the garlic and cook for 30 seconds more. Add the broth, tomatoes, and salt. Increase the heat to high, heat until the soup begins to boil, then reduce the heat to a low simmer, cover and simmer for 15 minutes. Add the shredded chicken and cook until heated through. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"6 Corn tortillas preferably a little old and dried out\",\n        \"1/4 cup grapeseed Oil peanut oil other high smoke point oil\",\n        \"1/2 cup Chopped onion\",\n        \"2 cloves Garlic minced\",\n        \"1 medium Anaheim poblano or Jalapeno chile seeded veins removed chopped\",\n        \"4 cups Chicken broth or homemade chicken stock\",\n        \"1 can  diced Tomatoes undrained \",\n        \"1/2 teaspoon coarse salt\",\n        \"1 1/2 cups shredded cooked Chicken\",\n        \"1 ripe Avocado\",\n        \"1/2 cup shredded Monterey Jack cheese \",\n        \"Chopped fresh Cilantro\",\n        \"1 Lime cut into wedges\"\n      ],\n    \"key\" : 6000,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Tortilla soup\",\n    \"tileImage\" : \"images/Mexican/Mexican_1_150_C.jpg\",\n    \"title\" : \"Tortilla soup\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_2_600_C.jpg\",\n    \"directions\" : \"Combine salsa and sour cream in a large bowl. Heat oil in a large nonstick skillet over medium heat. Add onion and garlic and cook, stirring often, until softened, about 2 minutes. Add turkey and cook, stirring often and crumbling with a wooden spoon, until cooked through, about 5 minutes. Add tomatoes, beans, cumin and chili powder; cook, stirring, until the tomatoes begin to break down, 2 to 3 minutes. Remove from the heat, stir in cilantro and 1/4 cup of the salsa mixture. Add lettuce to the remaining salsa mixture in the bowl; toss to coat. To serve, divide the lettuce among 4 plates, top with the turkey mixture and sprinkle with cheese.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1/2 cup prepared Salsa\",\n        \"1/4 cup reduced-fat Sour cream\",\n        \"1 teaspoon Canola oil\",\n        \"1 medium Onion chopped\",\n        \"3 cloves Garlic minced\",\n        \"1 pound 93% lean Ground turkey\",\n        \"2 large plum Tomatoes diced\",\n        \"1 can kidney Beans rinsed\",\n        \"2 teaspoons Ground cumin\",\n        \"2 teaspoons Chili powder\",\n        \"1/4 cup chopped fresh Cilantro\",\n        \"8 cups shredded Romaine lettuce\",\n        \"1/2 cup shredded sharp Cheddar cheese\"\n      ],\n    \"key\" : 6001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Taco Salad\",\n    \"tileImage\" : \"images/Mexican/Mexican_2_150_C.jpg\",\n    \"title\" : \"Taco Salad\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_3_600_C.jpg\",\n    \"directions\" : \"Heat the oven to 400. Heat the oil in a large skillet over medium heat. Add the onion and garlic and cook them for 3 minutes, stirring often. Add the beef and use a wooden spoon or a spatula to break it up while it cooks, until it is no longer red, about 3 minutes. Stir in 1/2 cup of the salsa, the chili powder, and the salt and pepper. Cook the mixture over low heat, stirring occasionally, for 10 minutes. Place the tortillas on a plate and cover them with damp paper towels. Microwave them until warm and pliable, about 45 seconds. Top each tortilla with 1/4 cup of the beef mixture, spreading it to an inch from the edges. Sprinkle cheese evenly over the beef.Roll up the tortillas and place them on a foil-lined baking sheet with the seam sides down. Brush the taquitos lightly with vegetable oil, then bake them until the filling is heated through and the tortillas are lightly browned, about 8 to 12 minutes. Serve them hot with sour cream and/or salsa. Serves 4 to 6.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Vegetable oil plus more for brushing on the taquitos\",\n        \"1 medium Onion finely chopped\",\n        \"1 clove Garlic minced\",\n        \"3/4 pound lean Ground beef\",\n        \"1 cup Salsa plus more for dipping\",\n        \"2 teaspoons Chili powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon Pepper\",\n        \"10 flour Tortillas\",\n        \"1/2 cup shredded Cheddar or Monterey Jack Sour cream\"\n      ],\n    \"key\" : 6002,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Taquitos\",\n    \"tileImage\" : \"images/Mexican/Mexican_3_150_C.jpg\",\n    \"title\" : \"Taquitos\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_4_600_C.jpg\",\n    \"directions\" : \"Trim fat from pork. In a 3 1/2- or 4-quart slow cooker combine pork shoulder, broth, onion, garlic, cumin, ground chipotle chile pepper or chili powder, and salt. Cover and cook on low-heat setting for 10 to 11 hours or on high-heat setting for 5 to 6 hours. 2. Preheat oven to 400 degrees F. Remove pork from slow cooker, reserving cooking liquid. Using two forks, pull meat into coarse strands. 3. In a large bowl combine pork, 1/2 cup of the enchilada sauce, 2 tablespoons of the reserved cooking liquid, and the 1 tablespoon snipped cilantro. Set aside. 4. In a medium bowl combine the remaining enchilada sauce, 1/4 cup of the reserved cooking liquid (discard any remaining cooking liquid), and the diced green chile peppers. Spread about 1/2 cup of enchilada-green chile pepper mixture in the bottom of a 3-quart rectangular baking dish; set aside. 5. Divide pork mixture and 1 1/2 cups of the cheese among tortillas, placing meat and cheese near the edge of each tortilla. Roll up tortillas. Place filled tortillas, seam sides down, in the prepared baking dish (place tortillas close together); top with the remaining enchilada-green chile pepper mixture. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3 1/2 pounds boneless Pork shoulder\",\n        \"1 14 ounce can Chicken broth\",\n        \"1/2 cup chopped Onion\",\n        \"6 cloves garlic minced\",\n        \"1 tablespoon Ground cumin\",\n        \"2 or 3 teaspoons ground Chipotle chile pepper or Hot chili powder\",\n        \"1 teaspoon Salt\",\n        \"3 10 ounce cans Enchilada sauce\",\n        \"1 tablespoon snipped fresh Cilantro\",\n        \"1 4 ounce can diced Green hile peppers\",\n        \"8 ounces Cotija cheese shredded\",\n        \"8 inches flour Tortillas\",\n        \"Snipped fresh Cilantro\",\n        \"Diced tomato or quartered Grape tomatoes \",\n\t\t\"Sour cream\"\n      ],\n    \"key\" : 6003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Pulled Pork Enchilada\",\n    \"tileImage\" : \"images/Mexican/Mexican_4_150_C.jpg\",\n    \"title\" : \"Pulled Pork Enchilada\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_5_600_C.jpg\",\n    \"directions\" : \"1. Remove papery husks from tomatillos and rinse well. 2. Roasting method Cut in half and place cut side down on a foil-lined baking sheet. Place under a broiler for about 5-7 minutes to lightly blacken the skin. 3. Boiling method Place tomatillos in a saucepan, cover with water. Bring to a boil and simmer for 5 minutes. Remove tomatillos with a slotted spoon. 3. Place tomatillos, lime juice, onions, cilantro, chili peppers, sugar in a food processor (or blender) and pulse until all ingredients are finely chopped and mixed. Season to taste with salt. Cool in refrigerator.Serve with chips or as a salsa accompaniment to Mexican dishes. Makes 3 cups.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 1/2 lb Tomatillos\",\n        \"1/2 cup chopped White onion\",\n        \"1/2 cup Cilantro leaves\",\n        \"1 Tbsp fresh Lime juice\",\n        \"1/4 teaspoon Sugar\",\n        \"2 Jalapeno peppers OR 2 Serrano peppers stemmed seeded and chopped\",\n        \"Salt to taste\"\n      ],\n    \"key\" : 6004,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Salsa Verde\",\n    \"tileImage\" : \"images/Mexican/Mexican_5_150_C.jpg\",\n    \"title\" : \"Salsa Verde\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_6_600_C.jpg\",\n    \"directions\" : \"Place hominy in a large Dutch oven. Cover with water to 4 inches above hominy; cover and let stand 8 hours. Drain. Return hominy to pan. Cover with water to 4 inches above hominy; bring to a boil. Reduce heat, and simmer 1 hour, stirring occasionally; drain. Wipe pan dry with a paper towel.Heat oil in pan over medium-high heat. Add pork to pan; saut? 5 minutes, turning to brown on all sides. Add onion; saut? 2 minutes or until tender. Add oregano, salt, garlic, and bay leaf; saut? 1 minute. Return hominy to pan. Add 3 cups water and broth; bring to a boil. Reduce heat, and simmer 30 minutes, stirring occasionally. Add chiles; simmer 30 minutes, stirring occasionally. Discard chiles and bay leaf. Ladle about 1 1/2 cups posole into each of 8 bowls. Garnish each serving with 1/4 cup cabbage, about 2 teaspoons cilantro, about 2 teaspoons radishes, about 2 teaspoons green onions, and 1 lime wedge.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3/4 pound dried White corn hominy\",\n        \"2 teaspoons Canola oil\",\n        \"8 ounces boneless Pork loin cut into 1/2-inch pieces \",\n        \"1 cup chopped Onion \",\n        \"2 teaspoons dried Oregano\",\n        \"3/4 teaspoon Salt\",\n        \"2 Garlic cloves minced\",\n        \"1 Bay leaf\",\n        \"3 cups Water\",\n        \"3 cans fat-free less-sodium Chicken broth\",\n        \"2 dried New Mexican chiles\",\n        \"2 cups shredded Cabbage\",\n        \"1/3 cup chopped fresh Cilantro\",\n        \"1/3 cup slivered Radishes\",\n        \"1/3 cup chopped Green onions \", \n\t\t\"8 lime wedges\"\n      ],\n    \"key\" : 6005,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Posole\",\n    \"tileImage\" : \"images/Mexican/Mexican_6_150_C.jpg\",\n    \"title\" : \"Posole\"\n  }\n]"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/DataModel/BindableBase.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Implementation of <see cref=\"INotifyPropertyChanged\"/> to simplify models.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        /// <summary>\n        /// Multicast event for property change notifications.\n        /// </summary>\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        /// <summary>\n        /// Checks if a property already matches a desired value.  Sets the property and\n        /// notifies listeners only when necessary.\n        /// </summary>\n        /// <typeparam name=\"T\">Type of the property.</typeparam>\n        /// <param name=\"storage\">Reference to a property with both getter and setter.</param>\n        /// <param name=\"value\">Desired value for the property.</param>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers that\n        /// support CallerMemberName.</param>\n        /// <returns>True if the value was changed, false if the existing value matched the\n        /// desired value.</returns>\n        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)\n        {\n            if (object.Equals(storage, value)) return false;\n\n            storage = value;\n            this.OnPropertyChanged(propertyName);\n            return true;\n        }\n\n        /// <summary>\n        /// Notifies listeners that a property value has changed.\n        /// </summary>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers\n        /// that support <see cref=\"CallerMemberNameAttribute\"/>.</param>\n        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)\n        {\n            var eventHandler = this.PropertyChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/DataModel/RecipeDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing System.Net.Http;\nusing Windows.Data.Json;\nusing Windows.ApplicationModel;\nusing System.Threading.Tasks;\nusing Windows.Storage;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"RecipeDataItem\"/> and <see cref=\"RecipeDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class RecipeDataCommon : BindableBase\n    {\n        public Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public RecipeDataCommon(String uniqueId, String title, String shortTitle, String imagePath)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._shortTitle = shortTitle;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _shortTitle = string.Empty;\n        public string ShortTitle\n        {\n            get { return this._shortTitle; }\n            set { this.SetProperty(ref this._shortTitle, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n\n        public Uri ImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._imagePath);\n            }\n        }\n\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(_baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n\n        public string GetImageUri()\n        {\n            return _imagePath;\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class UserPhotoDataItem : RecipeDataCommon\n    {\n        public new Uri _baseUri = new Uri(\"ms-appdata:///local/\");\n\n        public UserPhotoDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class RecipeDataItem : RecipeDataCommon\n    {\n        public RecipeDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n            // HACK - just initialize the User Photos evrytime we start the app\n            UserPhotos = new ObservableCollection<UserPhotoDataItem>();\n        }\n\n        public RecipeDataItem(String uniqueId, String title, String shortTitle, String imagePath, int preptime, String directions, ObservableCollection<string> ingredients, RecipeDataGroup group)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n            this._preptime = preptime;\n            this._directions = directions;\n            this._ingredients = ingredients;\n            this._group = group;\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private ObservableCollection<string> _ingredients;\n        public ObservableCollection<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private ObservableCollection<UserPhotoDataItem> _userphotos;\n        public ObservableCollection<UserPhotoDataItem> UserPhotos\n        {\n            get { return this._userphotos; }\n            set { this.SetProperty(ref this._userphotos, value); }\n        }\n        private RecipeDataGroup _group;\n        public RecipeDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n\n        private ImageSource _tileImage;\n        private string _tileImagePath;\n\n        public Uri TileImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._tileImagePath);\n            }\n        }\n\n        public ImageSource TileImage\n        {\n            get\n            {\n                if (this._tileImage == null && this._tileImagePath != null)\n                {\n                    this._tileImage = new BitmapImage(new Uri(_baseUri, this._tileImagePath));\n                }\n                return this._tileImage;\n            }\n            set\n            {\n                this._tileImagePath = null;\n                this.SetProperty(ref this._tileImage, value);\n            }\n        }\n\n        public void SetTileImage(String path)\n        {\n            this._tileImage = null;\n            this._tileImagePath = path;\n            this.OnPropertyChanged(\"TileImage\");\n        }\n    }\n\n    /// <summary>\n    /// Recipe group data model.\n    /// </summary>\n    public class RecipeDataGroup : RecipeDataCommon\n    {\n        public RecipeDataGroup()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n\n        public RecipeDataGroup(String uniqueId, String title, String shortTitle, String imagePath, String description)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n        }\n\n        private ObservableCollection<RecipeDataItem> _items = new ObservableCollection<RecipeDataItem>();\n        public ObservableCollection<RecipeDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<RecipeDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _groupImage;\n        private string _groupImagePath;\n\n        public ImageSource GroupImage\n        {\n            get\n            {\n                if (this._groupImage == null && this._groupImagePath != null)\n                {\n                    this._groupImage = new BitmapImage(new Uri(_baseUri, this._groupImagePath));\n                }\n                return this._groupImage;\n            }\n            set\n            {\n                this._groupImagePath = null;\n                this.SetProperty(ref this._groupImage, value);\n            }\n        }\n\n        public int RecipesCount\n        {\n            get\n            {\n                return this.Items.Count;\n            }\n        }\n\n        public void SetGroupImage(String path)\n        {\n            this._groupImage = null;\n            this._groupImagePath = path;\n            this.OnPropertyChanged(\"GroupImage\");\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items.\n    /// </summary>\n    public sealed class RecipeDataSource\n    {\n        //public event EventHandler RecipesLoaded;\n\n        private static RecipeDataSource _recipeDataSource = new RecipeDataSource();\n\n        private ObservableCollection<RecipeDataGroup> _allGroups = new ObservableCollection<RecipeDataGroup>();\n        public ObservableCollection<RecipeDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static async Task<IEnumerable<RecipeDataGroup>> GetGroupsAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _recipeDataSource.AllGroups;\n        }\n\n        public static async Task<RecipeDataGroup> GetGroupAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static async Task<RecipeDataItem> GetItemAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        private static async Task EnsureRecipeDataLoaded()\n        {\n            if (_recipeDataSource == null || _recipeDataSource.AllGroups.Count == 0)\n                await _recipeDataSource.LoadLocalDataAsync();\n\n            return;\n        }\n\n        public async Task LoadLocalDataAsync()\n        {\n            // Retrieve recipe data from Recipes.txt\n            var file = await Package.Current.InstalledLocation.GetFileAsync(\"Data\\\\Recipes.txt\");\n            var result = await FileIO.ReadTextAsync(file);\n\n            // Parse the JSON recipe data\n            var recipes = JsonArray.Parse(result);\n\n            // Convert the JSON objects into RecipeDataItems and RecipeDataGroups\n            CreateRecipesAndRecipeGroups(recipes);\n        }\n\n        private static void CreateRecipesAndRecipeGroups(JsonArray array)\n        {\n            foreach (var item in array)\n            {\n                var obj = item.GetObject();\n                RecipeDataItem recipe = new RecipeDataItem();\n                RecipeDataGroup group = null;\n\n                foreach (var key in obj.Keys)\n                {\n                    IJsonValue val;\n                    if (!obj.TryGetValue(key, out val))\n                        continue;\n\n                    switch (key)\n                    {\n                        case \"key\":\n                            recipe.UniqueId = val.GetNumber().ToString();\n                            break;\n                        case \"title\":\n                            recipe.Title = val.GetString();\n                            break;\n                        case \"shortTitle\":\n                            recipe.ShortTitle = val.GetString();\n                            break;\n                        case \"preptime\":\n                            recipe.PrepTime = (int)val.GetNumber();\n                            break;\n                        case \"directions\":\n                            recipe.Directions = val.GetString();\n                            break;\n                        case \"ingredients\":\n                            var ingredients = val.GetArray();\n                            var list = (from i in ingredients select i.GetString()).ToList();\n                            recipe.Ingredients = new ObservableCollection<string>(list);\n                            break;\n                        case \"backgroundImage\":\n                            recipe.SetImage(val.GetString());\n                            break;\n                        case \"tileImage\":\n                            recipe.SetTileImage(val.GetString());\n                            break;\n                        case \"group\":\n                            var recipeGroup = val.GetObject();\n\n                            IJsonValue groupKey;\n                            if (!recipeGroup.TryGetValue(\"key\", out groupKey))\n                                continue;\n\n                            group = _recipeDataSource.AllGroups.FirstOrDefault(c => c.UniqueId.Equals(groupKey.GetString()));\n\n                            if (group == null)\n                                group = CreateRecipeGroup(recipeGroup);\n\n                            recipe.Group = group;\n                            break;\n                    }\n                }\n\n                if (group != null)\n                    group.Items.Add(recipe);\n            }\n        }\n\n        private static RecipeDataGroup CreateRecipeGroup(JsonObject obj)\n        {\n            RecipeDataGroup group = new RecipeDataGroup();\n\n            foreach (var key in obj.Keys)\n            {\n                IJsonValue val;\n                if (!obj.TryGetValue(key, out val))\n                    continue;\n\n                switch (key)\n                {\n                    case \"key\":\n                        group.UniqueId = val.GetString();\n                        break;\n                    case \"title\":\n                        group.Title = val.GetString();\n                        break;\n                    case \"shortTitle\":\n                        group.ShortTitle = val.GetString();\n                        break;\n                    case \"description\":\n                        group.Description = val.GetString();\n                        break;\n                    case \"backgroundImage\":\n                        group.SetImage(val.GetString());\n                        break;\n                    case \"groupImage\":\n                        group.SetGroupImage(val.GetString());\n                        break;\n                }\n            }\n\n            _recipeDataSource.AllGroups.Add(group);\n            return group;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/DataModel/SampleDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.ApplicationModel.Resources.Core;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"SampleDataItem\"/> and <see cref=\"SampleDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class SampleDataCommon : BindableBase\n    {\n        private static Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public SampleDataCommon(String uniqueId, String title, String subtitle, String imagePath, String description)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._subtitle = subtitle;\n            this._description = description;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _subtitle = string.Empty;\n        public string Subtitle\n        {\n            get { return this._subtitle; }\n            set { this.SetProperty(ref this._subtitle, value); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(SampleDataCommon._baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n    }\n\n    /// <summary>\n    /// Generic item data model.\n    /// </summary>\n    public class SampleDataItem : SampleDataCommon\n    {\n        public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, int prepTime, String description, IEnumerable<string> ingredients, String content, SampleDataGroup group)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n            this._content = content;\n            this._group = group;\n            this._preptime = prepTime;\n            this._directions = description;\n            this._ingredients = ingredients;\n        }\n\n        private string _content = string.Empty;\n        public string Content\n        {\n            get { return this._content; }\n            set { this.SetProperty(ref this._content, value); }\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private IEnumerable<string> _ingredients;\n        public IEnumerable<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private SampleDataGroup _group;\n        public SampleDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n    }\n\n    /// <summary>\n    /// Generic group data model.\n    /// </summary>\n    public class SampleDataGroup : SampleDataCommon\n    {\n        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n        }\n\n        private ObservableCollection<SampleDataItem> _items = new ObservableCollection<SampleDataItem>();\n        public ObservableCollection<SampleDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<SampleDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items with hard-coded content.\n    /// </summary>\n    public sealed class SampleDataSource\n    {\n        private static SampleDataSource _sampleDataSource = new SampleDataSource();\n\n        private ObservableCollection<SampleDataGroup> _allGroups = new ObservableCollection<SampleDataGroup>();\n        public ObservableCollection<SampleDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static IEnumerable<SampleDataGroup> GetGroups(string uniqueId)\n        {\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _sampleDataSource.AllGroups;\n        }\n\n        public static SampleDataGroup GetGroup(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static SampleDataItem GetItem(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public SampleDataSource()\n        {\n            String ITEM_CONTENT = String.Format(\"Item Content: {0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\",\n                        \"Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\");\n            IEnumerable<string> ITEM_INGREDIENTS = new string[] { \"Curabitur\", \"aliquam\", \"vestibulum\", \"nam \", \"curae\", \"maecenas\" };\n\n            var group1 = new SampleDataGroup(\"Group-1\",\n                    \"Group Title: 1\",\n                    \"Group Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    25,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-2\",\n                    \"Item Title: 2 but this one has a long name\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    30,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    40,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            this.AllGroups.Add(group1);\n\n            var group2 = new SampleDataGroup(\"Group-2\",\n                    \"Group Title: 2\",\n                    \"Group Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/MediumGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    47,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            this.AllGroups.Add(group2);\n\n            var group3 = new SampleDataGroup(\"Group-3\",\n                    \"Group Title: 3\",\n                    \"Group Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/MediumGray.png\",\n                    10,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    66,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    11,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            this.AllGroups.Add(group3);\n\n            var group4 = new SampleDataGroup(\"Group-4\",\n                    \"Group Title: 4\",\n                    \"Group Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    13,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    14,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    16,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    17,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/LightGray.png\",\n                    18,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            this.AllGroups.Add(group4);\n\n            var group5 = new SampleDataGroup(\"Group-5\",\n                    \"Group Title: 5\",\n                    \"Group Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    20,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    23,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/MediumGray.png\",\n                    45,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            this.AllGroups.Add(group5);\n\n            var group6 = new SampleDataGroup(\"Group-6\",\n                    \"Group Title: 6\",\n                    \"Group Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    55,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    7,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    33,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/LightGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/MediumGray.png\",\n                    36,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-8\",\n                    \"Item Title: 8\",\n                    \"Item Subtitle: 8\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            this.AllGroups.Add(group6);\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/GroupDetailPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.GroupDetailPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    mc:Ignorable=\"d\">  \n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" \n               DataContext=\"{Binding Group}\"\n               d:DataContext=\"{Binding AllGroups[0], Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}\">\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"GroupDetailsPivotItem\" Header=\"{Binding Title}\">\n                <Grid x:Name=\"PivotLayoutGrid\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"220\"/>\n                        <RowDefinition/>\n                    </Grid.RowDefinitions>\n                    <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" x:Name=\"img\" Grid.Column=\"0\" \n                           HorizontalAlignment=\"Left\"/>\n                    <StackPanel Orientation=\"Horizontal\" Margin=\"0,0,5,5\" \n                                HorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\">\n                        <TextBlock Text=\"Total Recipes: \" Style=\"{StaticResource BodyTextBlockStyle}\"\n                                    Foreground=\"{ThemeResource PhoneAccentBrush}\"/>\n                        <TextBlock Text=\"{Binding RecipesCount}\" Style=\"{StaticResource BodyTextBlockStyle}\" \n                                    Foreground=\"{ThemeResource PhoneAccentBrush}\" Margin=\"10,0,0,0\"/>\n                    </StackPanel>\n                    <ScrollViewer x:Name=\"DescriptionScrollViewer\" Grid.Row=\"1\" Margin=\"0,10,0,0\">\n                        <TextBlock Text=\"{Binding Description}\" TextWrapping=\"Wrap\" HorizontalAlignment=\"Left\" \n                                   Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                    </ScrollViewer>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"GroupRecipesPivotItem\" Header=\"recipes\">\n                <!--Double line list no text wrapping-->\n                <ListView x:Name=\"lstRecipes\"  ItemsSource=\"{Binding Items}\" SelectionChanged=\"lstRecipes_SelectionChanged\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"160\"/>\n                                    <ColumnDefinition Width=\"*\"/>\n                                </Grid.ColumnDefinitions>\n                                <Image Source=\"{Binding Image}\" Width=\"150\" Stretch=\"UniformToFill\" HorizontalAlignment=\"Left\" \n                                       Margin=\"0,0,0,10\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\"/>\n                                <StackPanel Margin=\"10,0,0,0\" Grid.Column=\"1\">\n                                    <TextBlock Text=\"{Binding Title}\"  \n                                               Pivot.SlideInAnimationGroup=\"1\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\" \n                                               FontSize=\"18\" TextWrapping=\"WrapWholeWords\" MaxLines=\"3\"/>\n                                    <StackPanel Grid.Column=\"1\" Orientation=\"Horizontal\" Pivot.SlideInAnimationGroup=\"2\"\n                                            CommonNavigationTransitionInfo.IsStaggerElement=\"True\" VerticalAlignment=\"Top\" Margin=\"0,5,0,0\">\n                                        <TextBlock Text=\"Prep time: \" Style=\"{StaticResource ListViewItemSubheaderTextBlockStyle}\" />\n                                        <TextBlock Text=\"{Binding PrepTime}\" Style=\"{StaticResource ListViewItemContentTextBlockStyle}\" \n                                               Margin=\"10,0,0,0\"/>\n                                    </StackPanel>\n                                </StackPanel>\n                            </Grid>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n        </Pivot>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/GroupDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class GroupDetailPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public GroupDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var group = await RecipeDataSource.GetGroupAsync((string)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = group;\n\n            lstRecipes.SelectedItem = null;\n        }\n\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void lstRecipes_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (e.AddedItems.Count > 0)\n            {\n                var itemId = ((RecipeDataItem)e.AddedItems[0]).UniqueId;\n                this.Frame.Navigate(typeof(RecipeDetailPage), itemId);\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    xmlns:animation=\"using:Windows.UI.Xaml.Media.Animation\"\n    mc:Ignorable=\"d\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    d:DataContext=\"{d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}\">\n\n    <Page.Resources>\n        <DataTemplate x:Key=\"RecipeGroupDataTemplate\">\n            <Grid Margin=\"20, 0, 0, 10\" >\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"3*\"/>\n                    <ColumnDefinition Width=\"7*\"/>\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition/>\n                    <RowDefinition/>\n                </Grid.RowDefinitions>\n                <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" Grid.RowSpan=\"2\"/>\n                <TextBlock Text=\"{Binding Title}\"  Grid.Column=\"1\" Grid.Row=\"0\" \n\t\t\t\t           Style=\"{StaticResource HeaderTextBlockStyle}\" FontSize=\"24\" Margin=\"10,0,0,0\"/>\n                <TextBlock Text=\"{Binding Description}\" Grid.Column=\"1\" Grid.Row=\"1\" \n\t\t\t\t           Style=\"{StaticResource BodyTextBlockStyle}\" TextWrapping=\"NoWrap\" \n                           TextTrimming=\"CharacterEllipsis\"  Margin=\"10,0,0,0\"/>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Page.BottomAppBar>\n        <CommandBar ClosedDisplayMode=\"Minimal\">\n            <CommandBar.SecondaryCommands>\n                <AppBarButton x:Uid=\"AboutButton\" Label=\"about\" Click=\"About_Click\"/>\n            </CommandBar.SecondaryCommands>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"RegionsPageHeader\" Text=\"regions\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <ListView x:Name=\"groupListView\" \n                      ItemsSource=\"{Binding AllGroups}\"\n                      SelectionChanged=\"lstGroups_SelectionChanged\" \n                      ItemTemplate=\"{StaticResource RecipeGroupDataTemplate}\"/>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/MainPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var recipeDataGroups = await RecipeDataSource.GetGroupsAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"AllGroups\"] = recipeDataGroups;\n\n            groupListView.SelectedItem = null;\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void About_Click(object sender, RoutedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(AboutPage));\n        }\n\n        private void lstGroups_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(GroupDetailPage), (groupListView.SelectedItem as RecipeDataGroup).UniqueId);\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\" xmlns:m2=\"http://schemas.microsoft.com/appx/2013/manifest\" xmlns:m3=\"http://schemas.microsoft.com/appx/2014/manifest\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\">\n  <Identity Name=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" Publisher=\"CN=Andy\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>ContosoCookbook</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Prerequisites>\n    <OSMinVersion>6.3.1</OSMinVersion>\n    <OSMaxVersionTested>6.3.1</OSMaxVersionTested>\n  </Prerequisites>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"ContosoCookbook.App\">\n      <m3:VisualElements DisplayName=\"ContosoCookbook\" Square150x150Logo=\"Assets\\Logo.png\" Square44x44Logo=\"Assets\\SmallLogo.png\" Description=\"ContosoCookbook\" ForegroundText=\"light\" BackgroundColor=\"#464646\">\n        <m3:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\">\n        </m3:DefaultTile>\n        <m3:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        <m3:ApplicationView MinWidth=\"width320\" />\n        <!--Used in XAML Designer. DO NOT REMOVE-->\n      </m3:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n    <Capability Name=\"picturesLibrary\" />\n    <DeviceCapability Name=\"webcam\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ContosoCookbook\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ContosoCookbook\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/RecipeDetailPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.RecipeDetailPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    mc:Ignorable=\"d\"\n    d:DataContext=\"{Binding AllGroups[1].Items[1], Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\">\n\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton x:Name=\"btnPinToStart\" Icon=\"Pin\" Click=\"btnPinToStart_Click\" Label=\"Like\"/>\n            <AppBarButton x:Name=\"btnReminderTimer\" Icon=\"Clock\" Label=\"timer\" Click=\"btnReminderTimer_Click\"/>\n            <AppBarButton x:Name=\"btnTakePhoto\" Icon=\"Camera\" Label=\"nailed it!\" Click=\"btnPhoto_Click\"/>\n            <AppBarButton x:Name=\"btnShare\" Icon=\"ReShare\" Label=\"share\" Click=\"btnShare_Click\"/>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n          DataContext=\"{Binding Item}\" d:DataContext=\"{Binding}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" >\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"RecipeDetailsPivotItem\" Header=\"recipe\" >\n                <Grid x:Name=\"RecipePanel\" Grid.Row=\"1\" >\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"Auto\"/>\n                        <RowDefinition Height=\"110*\"/>\n                        <RowDefinition Height=\"155*\"/>\n                        <RowDefinition Height=\"Auto\"/>\n                    </Grid.RowDefinitions>\n                    <TextBlock Text=\"{Binding Title}\" Style=\"{ThemeResource BodyTextBlockStyle}\" \n                               Foreground=\"{StaticResource PhoneAccentBrush}\" FontSize=\"{StaticResource TextStyleExtraLargeFontSize}\" \n                               Margin=\"0,0,0,5\"/>\n                    <Image Source=\"{Binding ImagePath}\" Stretch=\"UniformToFill\" Grid.Row=\"1\"/>\n                    <ScrollViewer Grid.Row=\"2\" Margin=\"0,10\">\n                        <TextBlock x:Name=\"InstructionsTextBlock\" TextWrapping=\"WrapWholeWords\" \n                           Style=\"{StaticResource BodyTextBlockStyle}\"\n                           Text=\"{Binding Directions}\"/>\n                    </ScrollViewer>\n                    <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\" >\n                        <TextBlock Text=\"Prep time:\" Style=\"{StaticResource BodyTextBlockStyle}\"\n                           Foreground=\"{StaticResource PhoneAccentBrush}\"/>\n                        <TextBlock x:Name=\"PrepTimeTextBlock\" Text=\"{Binding PrepTime}\" Style=\"{StaticResource BodyTextBlockStyle}\" Margin=\"10,0,0,10\"/>\n                    </StackPanel>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"RecipeIngredientsPivotItem\" Header=\"ingredients\">\n                <ListView ItemsSource=\"{Binding Ingredients}\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Mode=OneWay}\" Style=\"{ThemeResource BodyTextBlockStyle}\"/>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n\n            <!--Pivot item three-->\n            <PivotItem x:Name=\"PicsPivot\" Header=\"notes\">\n                <Grid>\n                    <TextBlock Text=\"No images found.\"  HorizontalAlignment=\"Center\"\n                               Visibility=\"{Binding UserImages, Converter={StaticResource ImagesDisplayConverter}}\"  VerticalAlignment=\"Center\" />\n                    <ListBox x:Name=\"listUserPictures\" ItemsSource=\"{Binding UserPhotos}\">\n                        <ListBox.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <VirtualizingStackPanel Orientation=\"Vertical\"/>\n                            </ItemsPanelTemplate>\n                        </ListBox.ItemsPanel>\n                        <ListBox.ItemTemplate>\n                            <DataTemplate>\n                                <Grid>\n                                    <Image Source=\"{Binding Image}\" Margin=\"5\"/>\n                                    <Rectangle Fill=\"#33FFFFFF\" Height=\"50\" VerticalAlignment=\"Bottom\"/>\n                                    <StackPanel Orientation=\"Horizontal\" Margin=\"5\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" >\n                                        <TextBlock Text=\"{Binding Converter={StaticResource ToStringConverter}}\" Margin=\"10,0,0,5\" Style=\"{ThemeResource HeaderTextBlockStyle}\" />\n                                    </StackPanel>\n                                </Grid>\n                            </DataTemplate>\n                        </ListBox.ItemTemplate>\n                    </ListBox>\n                </Grid>\n            </PivotItem>\n\n        </Pivot>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/RecipeDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.Activation;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\nusing Windows.Storage.Streams;\nusing Windows.UI.Notifications;\nusing Windows.UI.Popups;\nusing Windows.UI.StartScreen;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class RecipeDetailPage : Page\n    {\n        private RecipeDataItem item;\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        private FileOpenPickerContinuationEventArgs _filePickerEventArgs = null;\n        public FileOpenPickerContinuationEventArgs FilePickerEvent\n        {\n            get { return _filePickerEventArgs; }\n            set\n            {\n                _filePickerEventArgs = value;\n                StorageFile pickedFile = null;\n                if (_filePickerEventArgs.Files.Count > 0)\n                {\n                    pickedFile = _filePickerEventArgs.Files[0];\n                }\n                FileOpenPicker_Continuation(pickedFile);\n            }\n        }\n\n        public RecipeDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            item = await RecipeDataSource.GetItemAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = item.Group;\n            this.DefaultViewModel[\"Item\"] = item;\n\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n\n            DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested;\n        }\n\n        private async void OnShareDataRequested(DataTransferManager sender, DataRequestedEventArgs args)\n        {\n            DataRequest request = args.Request;\n            var deferral = args.Request.GetDeferral();\n\n            try\n            {\n                Uri photoFileUri = new Uri(new Uri(\"ms-appdata:///local/\"), item.UserPhotos[0].Title);\n                var photoFile = await StorageFile.GetFileFromApplicationUriAsync(photoFileUri);\n\n                request.Data.Properties.Title = \"I've been baking!\";\n                request.Data.Properties.Description = \"This was my attempt at making \" + item.ShortTitle;\n\n                // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image\n                // since the target app may only support one or the other.\n                List<IStorageItem> imageItems = new List<IStorageItem>();\n                imageItems.Add(photoFile);\n                request.Data.SetStorageItems(imageItems);\n\n                RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(photoFile);\n                // It is recommended that you always add a thumbnail image any time you're sharing an image\n                request.Data.Properties.Thumbnail = imageStreamRef;\n                request.Data.SetBitmap(imageStreamRef);\n\n                // Set Text to share for those targets that can't accept images\n                request.Data.SetText(\"I just made \" + item.ShortTitle + \" from Contoso Cookbook!\");\n            }\n            finally\n            {\n                deferral.Complete();\n            }\n        }\n\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private async void btnPinToStart_Click(object sender, RoutedEventArgs e)\n        {\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n            {\n                var tile = new SecondaryTile(item.UniqueId);\n                await tile.RequestDeleteAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.Pin);\n            }\n            else\n            {\n                var uri = new Uri(item.TileImagePath.AbsoluteUri);\n\n                var tile = new SecondaryTile(\n                        item.UniqueId,              // Tile ID\n                        item.ShortTitle,            // Tile short name\n                        item.UniqueId,              // Activation argument\n                        uri,                        // Tile logo URI\n                        TileSize.Square150x150\n                    );\n\n                await tile.RequestCreateAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n            }\n        }\n\n        private async void btnReminderTimer_Click(object sender, RoutedEventArgs e)\n        {\n            var notifier = ToastNotificationManager.CreateToastNotifier();\n\n            // Make sure notifications are enabled\n            if (notifier.Setting != NotificationSetting.Enabled)\n            {\n                var dialog = new MessageDialog(\"Notifications are currently disabled\");\n                await dialog.ShowAsync();\n                return;\n            }\n\n            // Get a toast template and insert a text node containing a message\n            var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n            var element = template.GetElementsByTagName(\"text\")[0];\n            element.AppendChild(template.CreateTextNode(\"Reminder!\"));\n\n            // Schedule the toast to appear 30 seconds from now\n            var date = DateTimeOffset.Now.AddSeconds(30);\n            var stn = new ScheduledToastNotification(template, date);\n            notifier.AddToSchedule(stn);\n        }\n\n        private void btnShare_Click(object sender, RoutedEventArgs e)\n        {\n            if (item.UserPhotos == null || item.UserPhotos.Count == 0)\n            {\n                var i = new MessageDialog(\"You must insert a picture first!\").ShowAsync();\n            }\n            else\n            {\n                DataTransferManager.ShowShareUI();\n            }\n        }\n\n        private void btnPhoto_Click(object sender, RoutedEventArgs e)\n        {\n            FileOpenPicker openPicker = new FileOpenPicker();\n            openPicker.ViewMode = PickerViewMode.Thumbnail;\n            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;\n            openPicker.FileTypeFilter.Add(\".jpg\");\n            openPicker.FileTypeFilter.Add(\".jpeg\");\n            openPicker.FileTypeFilter.Add(\".png\");\n#if WINDOWS_APP\n            StorageFile file = await openPicker.PickSingleFileAsync();\n            FileOpenPicker_Continuation(file);\n#elif WINDOWS_PHONE_APP\n            // Call the FileOpenPicker in Windows Phone mode\n            openPicker.PickSingleFileAndContinue();\n#endif\n        }\n        private async void FileOpenPicker_Continuation(StorageFile file)\n        {\n            if (file != null)\n            {\n                var destFile = await file.CopyAsync(Windows.Storage.ApplicationData.Current.LocalFolder, file.Name, NameCollisionOption.ReplaceExisting);\n                var userPhoto = new UserPhotoDataItem() { Title = destFile.Name};\n                userPhoto.SetImage(destFile.Path);\n                item.UserPhotos.Add(userPhoto);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook/Strings/en-US/Resources.resw",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutButton.Label\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AboutPageHeader\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AppLimitation.Text\" xml:space=\"preserve\">\n    <value>All Rights Reserved</value>\n  </data>\n  <data name=\"AppName.Text\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"AppRights.Text\" xml:space=\"preserve\">\n    <value>Copyright © Microsoft 2014</value>\n  </data>\n  <data name=\"AppVersion.Text\" xml:space=\"preserve\">\n    <value>Version 1.0</value>\n  </data>\n  <data name=\"GroupRecipesPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipes</value>\n  </data>\n  <data name=\"Pivot.Title\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"PivotItem1.Header\" xml:space=\"preserve\">\n    <value>item1</value>\n  </data>\n  <data name=\"PivotItem2.Header\" xml:space=\"preserve\">\n    <value>item2</value>\n  </data>\n  <data name=\"PublishedByText.Text\" xml:space=\"preserve\">\n    <value>Published by:</value>\n  </data>\n  <data name=\"RecipeDetailsPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipe</value>\n  </data>\n  <data name=\"RecipeIngredientsPivotItem.Header\" xml:space=\"preserve\">\n    <value>ingredients</value>\n  </data>\n  <data name=\"RegionsPageHeader\" xml:space=\"preserve\">\n    <value>regions</value>\n  </data>\n  <data name=\"VersionText.Text\" xml:space=\"preserve\">\n    <value>Version:</value>\n  </data>\n</root>"
  },
  {
    "path": "MigrationDemo/Begin/ContosoCookbook/ContosoCookbook.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22609.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ContosoCookbook\", \"ContosoCookbook\\ContosoCookbook.csproj\", \"{E977916E-3C97-485A-96FC-0D214F6FC9E3}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Build.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Build.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.ActiveCfg = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Build.0 = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "MigrationDemo/Controls/BackButton.xaml",
    "content": "﻿<UserControl\n    x:Class=\"Template10.Controls.BackButton\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\">\n    <Button x:Name=\"MyBackButton\" Style=\"{StaticResource NavigationBackButtonNormalStyle}\" />\n</UserControl>\n"
  },
  {
    "path": "MigrationDemo/Controls/BackButton.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.Core;\nusing Windows.ApplicationModel.Resources.Core;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Core;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace Template10.Controls\n{\n    public sealed partial class BackButton : UserControl\n    {\n        public BackButton()\n        {\n            this.InitializeComponent();\n            Loaded += BackButton_Loaded;\n            MyBackButton.Click += (s, e) => Frame.GoBack();\n        }\n\n        public Frame Frame { get; private set; }\n\n        private void BackButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            DependencyObject item = this;\n            while (!((item = VisualTreeHelper.GetParent(item)) is Page)) { }\n            Page page = item as Page;\n            this.Frame = page.Frame;\n            this.Visibility = CalculateOnCanvasBackVisibility();\n            Window.Current.SizeChanged += (s, arg) => this.Visibility = CalculateOnCanvasBackVisibility();\n        }\n\n        private Visibility CalculateOnCanvasBackVisibility()\n        {\n            var cangoback = Frame.CanGoBack;\n            if (!cangoback)\n                return Visibility.Collapsed;\n\n            var mobilefam = ResourceContext.GetForCurrentView().QualifierValues[\"DeviceFamily\"].Equals(\"Mobile\");\n            if (mobilefam)\n                return Visibility.Collapsed;\n\n            var desktopfam = ResourceContext.GetForCurrentView().QualifierValues[\"DeviceFamily\"].Equals(\"Desktop\");\n            if (!desktopfam)\n                return Visibility.Collapsed;\n\n            var touchmode = UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Touch;\n            if (touchmode)\n                return Visibility.Collapsed;\n\n            var fullscreen = ApplicationView.GetForCurrentView().IsFullScreen;\n            if (fullscreen)\n                return Visibility.Visible;\n\n            var optinback = SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility.Equals(AppViewBackButtonVisibility.Visible);\n            if (optinback)\n            {\n                var hastitle = !CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar;\n                if (hastitle)\n                    return Visibility.Collapsed;\n            }\n\n            return Visibility.Visible;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/AboutPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    mc:Ignorable=\"d\">\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"AboutPageHeader\" Text=\"about\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <StackPanel Orientation=\"Vertical\" d:LayoutOverrides=\"Height\" VerticalAlignment=\"Top\" Margin=\"20,200,0,0\">\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"VersionText\" Text=\"Version:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Version}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n                </StackPanel>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"PublishedByText\" Text=\"Published by:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Publisher}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                </StackPanel>\n                <TextBlock x:Uid=\"AppRights\" Text=\"AppRights\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,10,0,0\" />\n                <TextBlock x:Uid=\"AppLimitation\" Text=\"AppLimitation\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,15,0,0\" />\n            </StackPanel>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/AboutPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class AboutPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public AboutPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var packageId = Windows.ApplicationModel.Package.Current.Id;\n            var version = packageId.Version;\n            this.DefaultViewModel[\"Version\"] = String.Format(\"{0}.{1}.{2}.{3}\", version.Major, version.Minor, version.Build, version.Revision);\n            this.DefaultViewModel[\"Publisher\"] = packageId.Publisher.Replace(\"CN=\", string.Empty);\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ContosoCookbook.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:converters=\"using:ContosoCookbook.Converters\">\n    \n    <Application.Resources>\n        <converters:UserImagesDisplayConverter x:Key=\"ImagesDisplayConverter\"/>\n        <converters:ImageSourceToStringConverter x:Key=\"ToStringConverter\"/>\n        \n        <SolidColorBrush x:Key=\"AccentBrush\" Color=\"{ThemeResource SystemAccentColor}\"/>\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Phone.UI.Input;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.Suspending += OnSuspending;\n        }\n\n        private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            Frame frame = Window.Current.Content as Frame;\n            if (frame == null)\n            {\n                return;\n            }\n\n            if (frame.CanGoBack)\n            {\n                frame.GoBack();\n                e.Handled = true;\n            }\n        }\n\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), \"AllGroups\"))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;\n\n        }\n\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Common/NavigationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// NavigationManager aids in navigation between pages.  It provides commands used to \n    /// navigate back and forward as well as registers for standard mouse and keyboard \n    /// shortcuts used to go back and forward.  In addition it integrates SuspensionManger\n    /// to handle process lifetime management and state management when navigating between\n    /// pages.\n    /// </summary>\n    /// <example>\n    /// To make use of NavigationManager, follow these two steps or\n    /// start with a BasicPage or any other Page item template other than BlankPage.\n    /// \n    /// 1) Create an instance of the NaivgationHelper somewhere such as in the \n    ///     constructor for the page and register a callback for the LoadState and \n    ///     SaveState events.\n    /// <code>\n    ///     public MyPage()\n    ///     {\n    ///         this.InitializeComponent();\n    ///         var navigationHelper = new NavigationHelper(this);\n    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;\n    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;\n    ///     }\n    ///     \n    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    ///     { }\n    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)\n    ///     { }\n    /// </code>\n    /// \n    /// 2) Register the page to call into the NavigationManager whenever the page participates \n    ///     in navigation by overriding the <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo\"/> \n    ///     and <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedFrom\"/> events.\n    /// <code>\n    ///     protected override void OnNavigatedTo(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedTo(e);\n    ///     }\n    ///     \n    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedFrom(e);\n    ///     }\n    /// </code>\n    /// </example>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public class NavigationHelper : DependencyObject\n    {\n        private Page Page { get; set; }\n        private Frame Frame { get { return this.Page.Frame; } }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationHelper\"/> class.\n        /// </summary>\n        /// <param name=\"page\">A reference to the current page used for navigation.  \n        /// This reference allows for frame manipulation and to ensure that keyboard \n        /// navigation requests only occur when the page is occupying the entire window.</param>\n        public NavigationHelper(Page page)\n        {\n            this.Page = page;\n\n            // When this page is part of the visual tree make two changes:\n            // 1) Map application view state to visual state for the page\n            // 2) Handle keyboard and mouse navigation requests\n            this.Page.Loaded += (sender, e) =>\n            {\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                    // Listen to the window directly so focus isn't required\n                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                        CoreDispatcher_AcceleratorKeyActivated;\n                    Window.Current.CoreWindow.PointerPressed +=\n                        this.CoreWindow_PointerPressed;\n                }\n            };\n\n            // Undo the same changes when the page is no longer visible\n            this.Page.Unloaded += (sender, e) =>\n            {\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                    CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n            };\n        }\n\n        #region Navigation support\n\n        RelayCommand _goBackCommand;\n        RelayCommand _goForwardCommand;\n\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used to bind to the back Button's Command property\n        /// for navigating to the most recent item in back navigation history, if a Frame\n        /// manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoBack\"/>\n        /// as the Execute Action and <see cref=\"CanGoBack\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoBackCommand\n        {\n            get\n            {\n                if (_goBackCommand == null)\n                {\n                    _goBackCommand = new RelayCommand(\n                        () => this.GoBack(),\n                        () => this.CanGoBack());\n                }\n                return _goBackCommand;\n            }\n            set\n            {\n                _goBackCommand = value;\n            }\n        }\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used for navigating to the most recent item in \n        /// the forward navigation history, if a Frame manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoForward\"/>\n        /// as the Execute Action and <see cref=\"CanGoForward\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoForwardCommand\n        {\n            get\n            {\n                if (_goForwardCommand == null)\n                {\n                    _goForwardCommand = new RelayCommand(\n                        () => this.GoForward(),\n                        () => this.CanGoForward());\n                }\n                return _goForwardCommand;\n            }\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go back.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the back navigation history.\n        /// </returns>\n        public virtual bool CanGoBack()\n        {\n            return this.Frame != null && this.Frame.CanGoBack;\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go forward.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the forward navigation history.\n        /// </returns>\n        public virtual bool CanGoForward()\n        {\n            return this.Frame != null && this.Frame.CanGoForward;\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoBack\"/> method.\n        /// </summary>\n        public virtual void GoBack()\n        {\n            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoForward\"/> method.\n        /// </summary>\n        public virtual void GoForward()\n        {\n            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();\n        }\n\n        /// <summary>\n        /// Invoked on every keystroke, including system keys such as Alt key combinations, when\n        /// this page is active and occupies the entire window.  Used to detect keyboard navigation\n        /// between pages even when the page itself doesn't have focus.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,\n            AcceleratorKeyEventArgs e)\n        {\n            var virtualKey = e.VirtualKey;\n\n            // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n            // are pressed\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&\n                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||\n                (int)virtualKey == 166 || (int)virtualKey == 167))\n            {\n                var coreWindow = Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n                bool noModifiers = !menuKey && !controlKey && !shiftKey;\n                bool onlyAlt = menuKey && !controlKey && !shiftKey;\n\n                if (((int)virtualKey == 166 && noModifiers) ||\n                    (virtualKey == VirtualKey.Left && onlyAlt))\n                {\n                    // When the previous key or Alt+Left are pressed navigate back\n                    e.Handled = true;\n                    this.GoBackCommand.Execute(null);\n                }\n                else if (((int)virtualKey == 167 && noModifiers) ||\n                    (virtualKey == VirtualKey.Right && onlyAlt))\n                {\n                    // When the next key or Alt+Right are pressed navigate forward\n                    e.Handled = true;\n                    this.GoForwardCommand.Execute(null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender,\n            PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed) return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) this.GoBackCommand.Execute(null);\n                if (forwardPressed) this.GoForwardCommand.Execute(null);\n            }\n        }\n\n        #endregion\n\n        #region Process lifetime management\n\n        private String _pageKey;\n\n        /// <summary>\n        /// Register this event on the current page to populate the page\n        /// with content passed during navigation as well as any saved\n        /// state provided when recreating a page from a prior session.\n        /// </summary>\n        public event LoadStateEventHandler LoadState;\n        /// <summary>\n        /// Register this event on the current page to preserve\n        /// state associated with the current page in case the\n        /// application is suspended or the page is discarded from\n        /// the navigaqtion cache.\n        /// </summary>\n        public event SaveStateEventHandler SaveState;\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.  \n        /// This method calls <see cref=\"LoadState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            this._pageKey = \"Page-\" + this.Frame.BackStackDepth;\n\n            if (e.NavigationMode == NavigationMode.New)\n            {\n                // Clear existing state for forward navigation when adding a new page to the\n                // navigation stack\n                var nextPageKey = this._pageKey;\n                int nextPageIndex = this.Frame.BackStackDepth;\n                while (frameState.Remove(nextPageKey))\n                {\n                    nextPageIndex++;\n                    nextPageKey = \"Page-\" + nextPageIndex;\n                }\n\n                // Pass the navigation parameter to the new page\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));\n                }\n            }\n            else\n            {\n                // Pass the navigation parameter and preserved page state to the page, using\n                // the same strategy for loading suspended state and recreating pages discarded\n                // from cache\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked when this page will no longer be displayed in a Frame.\n        /// This method calls <see cref=\"SaveState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            var pageState = new Dictionary<String, Object>();\n            if (this.SaveState != null)\n            {\n                this.SaveState(this, new SaveStateEventArgs(pageState));\n            }\n            frameState[_pageKey] = pageState;\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.LoadState\"/>event\n    /// </summary>\n    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.SaveState\"/>event\n    /// </summary>\n    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);\n\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to load state.\n    /// </summary>\n    public class LoadStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </summary>\n        public Object NavigationParameter { get; private set; }\n        /// <summary>\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LoadStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"navigationParameter\">\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </param>\n        /// <param name=\"pageState\">\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </param>\n        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.NavigationParameter = navigationParameter;\n            this.PageState = pageState;\n        }\n    }\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to save state.\n    /// </summary>\n    public class SaveStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// An empty dictionary to be populated with serializable state.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SaveStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"pageState\">An empty dictionary to be populated with serializable state.</param>\n        public SaveStateEventArgs(Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.PageState = pageState;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Common/ObservableDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Foundation.Collections;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// Implementation of IObservableMap that supports reentrancy for use as a default view\n    /// model.\n    /// </summary>\n    public class ObservableDictionary : IObservableMap<string, object>\n    {\n        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>\n        {\n            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)\n            {\n                this.CollectionChange = change;\n                this.Key = key;\n            }\n\n            public CollectionChange CollectionChange { get; private set; }\n            public string Key { get; private set; }\n        }\n\n        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();\n        public event MapChangedEventHandler<string, object> MapChanged;\n\n        private void InvokeMapChanged(CollectionChange change, string key)\n        {\n            var eventHandler = MapChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));\n            }\n        }\n\n        public void Add(string key, object value)\n        {\n            this._dictionary.Add(key, value);\n            this.InvokeMapChanged(CollectionChange.ItemInserted, key);\n        }\n\n        public void Add(KeyValuePair<string, object> item)\n        {\n            this.Add(item.Key, item.Value);\n        }\n\n        public bool Remove(string key)\n        {\n            if (this._dictionary.Remove(key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n                return true;\n            }\n            return false;\n        }\n\n        public bool Remove(KeyValuePair<string, object> item)\n        {\n            object currentValue;\n            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&\n                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);\n                return true;\n            }\n            return false;\n        }\n\n        public object this[string key]\n        {\n            get\n            {\n                return this._dictionary[key];\n            }\n            set\n            {\n                this._dictionary[key] = value;\n                this.InvokeMapChanged(CollectionChange.ItemChanged, key);\n            }\n        }\n\n        public void Clear()\n        {\n            var priorKeys = this._dictionary.Keys.ToArray();\n            this._dictionary.Clear();\n            foreach (var key in priorKeys)\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n            }\n        }\n\n        public ICollection<string> Keys\n        {\n            get { return this._dictionary.Keys; }\n        }\n\n        public bool ContainsKey(string key)\n        {\n            return this._dictionary.ContainsKey(key);\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return this._dictionary.TryGetValue(key, out value);\n        }\n\n        public ICollection<object> Values\n        {\n            get { return this._dictionary.Values; }\n        }\n\n        public bool Contains(KeyValuePair<string, object> item)\n        {\n            return this._dictionary.Contains(item);\n        }\n\n        public int Count\n        {\n            get { return this._dictionary.Count; }\n        }\n\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)\n        {\n            int arraySize = array.Length;\n            foreach (var pair in this._dictionary)\n            {\n                if (arrayIndex >= arraySize) break;\n                array[arrayIndex++] = pair;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Common/ReadMe.txt",
    "content": "﻿The Common directory contains classes that simplify application development.\n\nClasses in the Common directory form part of your project and may be further enhanced to meet your\nneeds.  Care should be taken when altering existing methods and properties as incompatible changes\nwill require corresponding changes to code included in a variety of Visual Studio templates.  For\nexample, additional pages added to your project are written assuming that the original methods and\nproperties in Common classes are still present and that the names of the types have not changed."
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Common/RelayCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// A command whose sole purpose is to relay its functionality \n    /// to other objects by invoking delegates. \n    /// The default return value for the CanExecute method is 'true'.\n    /// <see cref=\"RaiseCanExecuteChanged\"/> needs to be called whenever\n    /// <see cref=\"CanExecute\"/> is expected to return a different value.\n    /// </summary>\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n\n        /// <summary>\n        /// Raised when RaiseCanExecuteChanged is called.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n\n        /// <summary>\n        /// Creates a new command that can always execute.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        /// <summary>\n        /// Creates a new command.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        /// <param name=\"canExecute\">The execution status logic.</param>\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canExecute;\n        }\n\n        /// <summary>\n        /// Determines whether this <see cref=\"RelayCommand\"/> can execute in its current state.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        /// <returns>true if this command can be executed; otherwise, false.</returns>\n        public bool CanExecute(object parameter)\n        {\n            return _canExecute == null ? true : _canExecute();\n        }\n\n        /// <summary>\n        /// Executes the <see cref=\"RelayCommand\"/> on the current command target.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            _execute();\n        }\n\n        /// <summary>\n        /// Method used to raise the <see cref=\"CanExecuteChanged\"/> event\n        /// to indicate that the return value of the <see cref=\"CanExecute\"/>\n        /// method has changed.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            var handler = CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Common/SuspensionManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// SuspensionManager captures global session state to simplify process lifetime management\n    /// for an application.  Note that session state will be automatically cleared under a variety\n    /// of conditions and should only be used to store information that would be convenient to\n    /// carry across sessions, but that should be discarded when an application crashes or is\n    /// upgraded.\n    /// </summary>\n    internal sealed class SuspensionManager\n    {\n        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();\n        private static List<Type> _knownTypes = new List<Type>();\n        private const string sessionStateFilename = \"_sessionState.xml\";\n\n        /// <summary>\n        /// Provides access to global session state for the current session.  This state is\n        /// serialized by <see cref=\"SaveAsync\"/> and restored by\n        /// <see cref=\"RestoreAsync\"/>, so values must be serializable by\n        /// <see cref=\"DataContractSerializer\"/> and should be as compact as possible.  Strings\n        /// and other self-contained data types are strongly recommended.\n        /// </summary>\n        public static Dictionary<string, object> SessionState\n        {\n            get { return _sessionState; }\n        }\n\n        /// <summary>\n        /// List of custom types provided to the <see cref=\"DataContractSerializer\"/> when\n        /// reading and writing session state.  Initially empty, additional types may be\n        /// added to customize the serialization process.\n        /// </summary>\n        public static List<Type> KnownTypes\n        {\n            get { return _knownTypes; }\n        }\n\n        /// <summary>\n        /// Save the current <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also preserve their current\n        /// navigation stack, which in turn gives their active <see cref=\"Page\"/> an opportunity\n        /// to save its state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been saved.</returns>\n        public static async Task SaveAsync()\n        {\n            try\n            {\n                // Save the navigation state for all registered frames\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        SaveFrameNavigationState(frame);\n                    }\n                }\n\n                // Serialize the session state synchronously to avoid asynchronous access to shared\n                // state\n                MemoryStream sessionData = new MemoryStream();\n                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                serializer.WriteObject(sessionData, _sessionState);\n\n                // Get an output stream for the SessionState file and write the state asynchronously\n                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);\n                using (Stream fileStream = await file.OpenStreamForWriteAsync())\n                {\n                    sessionData.Seek(0, SeekOrigin.Begin);\n                    await sessionData.CopyToAsync(fileStream);\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        /// <summary>\n        /// Restores previously saved <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also restore their prior navigation\n        /// state, which in turn gives their active <see cref=\"Page\"/> an opportunity restore its\n        /// state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been read.  The\n        /// content of <see cref=\"SessionState\"/> should not be relied upon until this task\n        /// completes.</returns>\n        public static async Task RestoreAsync()\n        {\n            _sessionState = new Dictionary<String, Object>();\n\n            try\n            {\n                // Get the input stream for the SessionState file\n                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);\n                using (IInputStream inStream = await file.OpenSequentialReadAsync())\n                {\n                    // Deserialize the Session State\n                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());\n                }\n\n                // Restore any registered frames to their saved state\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        frame.ClearValue(FrameSessionStateProperty);\n                        RestoreFrameNavigationState(frame);\n                    }\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        private static DependencyProperty FrameSessionStateKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionStateKey\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionStateProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionState\", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);\n        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();\n\n        /// <summary>\n        /// Registers a <see cref=\"Frame\"/> instance to allow its navigation history to be saved to\n        /// and restored from <see cref=\"SessionState\"/>.  Frames should be registered once\n        /// immediately after creation if they will participate in session state management.  Upon\n        /// registration if state has already been restored for the specified key\n        /// the navigation history will immediately be restored.  Subsequent invocations of\n        /// <see cref=\"RestoreAsync\"/> will also restore navigation history.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should be managed by\n        /// <see cref=\"SuspensionManager\"/></param>\n        /// <param name=\"sessionStateKey\">A unique key into <see cref=\"SessionState\"/> used to\n        /// store navigation-related information.</param>\n        public static void RegisterFrame(Frame frame, String sessionStateKey)\n        {\n            if (frame.GetValue(FrameSessionStateKeyProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames can only be registered to one session state key\");\n            }\n\n            if (frame.GetValue(FrameSessionStateProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames must be either be registered before accessing frame session state, or not registered at all\");\n            }\n\n            // Use a dependency property to associate the session key with a frame, and keep a list of frames whose\n            // navigation state should be managed\n            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);\n            _registeredFrames.Add(new WeakReference<Frame>(frame));\n\n            // Check to see if navigation state can be restored\n            RestoreFrameNavigationState(frame);\n        }\n\n        /// <summary>\n        /// Disassociates a <see cref=\"Frame\"/> previously registered by <see cref=\"RegisterFrame\"/>\n        /// from <see cref=\"SessionState\"/>.  Any navigation state previously captured will be\n        /// removed.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should no longer be\n        /// managed.</param>\n        public static void UnregisterFrame(Frame frame)\n        {\n            // Remove session state and remove the frame from the list of frames whose navigation\n            // state will be saved (along with any weak references that are no longer reachable)\n            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));\n            _registeredFrames.RemoveAll((weakFrameReference) =>\n            {\n                Frame testFrame;\n                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;\n            });\n        }\n\n        /// <summary>\n        /// Provides storage for session state associated with the specified <see cref=\"Frame\"/>.\n        /// Frames that have been previously registered with <see cref=\"RegisterFrame\"/> have\n        /// their session state saved and restored automatically as a part of the global\n        /// <see cref=\"SessionState\"/>.  Frames that are not registered have transient state\n        /// that can still be useful when restoring pages that have been discarded from the\n        /// navigation cache.\n        /// </summary>\n        /// <remarks>Apps may choose to rely on <see cref=\"NavigationHelper\"/> to manage\n        /// page-specific state instead of working with frame session state directly.</remarks>\n        /// <param name=\"frame\">The instance for which session state is desired.</param>\n        /// <returns>A collection of state subject to the same serialization mechanism as\n        /// <see cref=\"SessionState\"/>.</returns>\n        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)\n        {\n            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);\n\n            if (frameState == null)\n            {\n                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);\n                if (frameSessionKey != null)\n                {\n                    // Registered frames reflect the corresponding session state\n                    if (!_sessionState.ContainsKey(frameSessionKey))\n                    {\n                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();\n                    }\n                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];\n                }\n                else\n                {\n                    // Frames that aren't registered have transient state\n                    frameState = new Dictionary<String, Object>();\n                }\n                frame.SetValue(FrameSessionStateProperty, frameState);\n            }\n            return frameState;\n        }\n\n        private static void RestoreFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            if (frameState.ContainsKey(\"Navigation\"))\n            {\n                frame.SetNavigationState((String)frameState[\"Navigation\"]);\n            }\n        }\n\n        private static void SaveFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            frameState[\"Navigation\"] = frame.GetNavigationState();\n        }\n    }\n    public class SuspensionManagerException : Exception\n    {\n        public SuspensionManagerException()\n        {\n        }\n\n        public SuspensionManagerException(Exception e)\n            : base(\"SuspensionManager failed\", e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/ContosoCookbook.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E977916E-3C97-485A-96FC-0D214F6FC9E3}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ContosoCookbook</RootNamespace>\n    <AssemblyName>ContosoCookbook</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <Page Include=\"AboutPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\BackButton.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"RecipeDetailPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"GroupDetailPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AboutPage.xaml.cs\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\NavigationHelper.cs\" />\n    <Compile Include=\"Common\\ObservableDictionary.cs\" />\n    <Compile Include=\"Common\\RelayCommand.cs\" />\n    <Compile Include=\"Common\\SuspensionManager.cs\" />\n    <Compile Include=\"Controls\\BackButton.xaml.cs\">\n      <DependentUpon>BackButton.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Converters\\ImageSourceToStringConverter.cs\" />\n    <Compile Include=\"Converters\\UserImagesDisplayConverter.cs\" />\n    <Compile Include=\"DataModel\\BindableBase.cs\" />\n    <Compile Include=\"DataModel\\RecipeDataSource.cs\" />\n    <Compile Include=\"DataModel\\SampleDataSource.cs\" />\n    <Compile Include=\"RecipeDetailPage.xaml.cs\">\n      <DependentUpon>RecipeDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"GroupDetailPage.xaml.cs\">\n      <DependentUpon>GroupDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\DarkGray.png\" />\n    <Content Include=\"Assets\\LightGray.png\" />\n    <Content Include=\"Assets\\Logo.scale-250.png\" />\n    <Content Include=\"Assets\\MediumGray.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-250.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-250.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-250.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-250.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-250.png\" />\n    <Content Include=\"Common\\ReadMe.txt\" />\n    <Content Include=\"Data\\Recipes.txt\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_310_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\chinese_group.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_detail.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_header.png\" />\n    <Content Include=\"Images\\french\\French_1_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_1_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_310_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_600_C.jpg\" />\n    <Content Include=\"Images\\french\\french_group.png\" />\n    <Content Include=\"Images\\french\\french_group_detail.png\" />\n    <Content Include=\"Images\\french\\french_group_header.png\" />\n    <Content Include=\"Images\\german\\German_1_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_1_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_310_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_600_C.jpg\" />\n    <Content Include=\"Images\\german\\german_group.png\" />\n    <Content Include=\"Images\\german\\german_group_detail.png\" />\n    <Content Include=\"Images\\german\\german_group_header.png\" />\n    <Content Include=\"Images\\indian\\Indian_1_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_1_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\indian_group.png\" />\n    <Content Include=\"Images\\indian\\indian_group_detail.png\" />\n    <Content Include=\"Images\\indian\\indian_group_header.png\" />\n    <Content Include=\"Images\\italian\\Italian_1_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_1_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\italian_group.png\" />\n    <Content Include=\"Images\\italian\\italian_group_detail.png\" />\n    <Content Include=\"Images\\italian\\italian_group_header.png\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\mexican_group.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_detail.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_header.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\en-US\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"WindowsMobile, Version=10.0.0.1\">\n      <Name>Microsoft Mobile Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Controls/BackButton.xaml",
    "content": "﻿<UserControl\n    x:Class=\"Template10.Controls.BackButton\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\">\n    <Button x:Name=\"MyBackButton\" Style=\"{StaticResource NavigationBackButtonNormalStyle}\" />\n</UserControl>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Controls/BackButton.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.Core;\nusing Windows.ApplicationModel.Resources.Core;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Core;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace Template10.Controls\n{\n    public sealed partial class BackButton : UserControl\n    {\n        public BackButton()\n        {\n            this.InitializeComponent();\n            Loaded += BackButton_Loaded;\n            MyBackButton.Click += (s, e) => Frame.GoBack();\n        }\n\n        public Frame Frame { get; private set; }\n\n        private void BackButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            DependencyObject item = this;\n            while (!((item = VisualTreeHelper.GetParent(item)) is Page)) { }\n            Page page = item as Page;\n            this.Frame = page.Frame;\n            this.Visibility = CalculateOnCanvasBackVisibility();\n            Window.Current.SizeChanged += (s, arg) => this.Visibility = CalculateOnCanvasBackVisibility();\n        }\n\n        private Visibility CalculateOnCanvasBackVisibility()\n        {\n            var cangoback = Frame.CanGoBack;\n            if (!cangoback)\n                return Visibility.Collapsed;\n\n            var mobilefam = ResourceContext.GetForCurrentView().QualifierValues[\"DeviceFamily\"].Equals(\"Mobile\");\n            if (mobilefam)\n                return Visibility.Collapsed;\n\n            var desktopfam = ResourceContext.GetForCurrentView().QualifierValues[\"DeviceFamily\"].Equals(\"Desktop\");\n            if (!desktopfam)\n                return Visibility.Collapsed;\n\n            var touchmode = UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Touch;\n            if (touchmode)\n                return Visibility.Collapsed;\n\n            var fullscreen = ApplicationView.GetForCurrentView().IsFullScreen;\n            if (fullscreen)\n                return Visibility.Visible;\n\n            var optinback = SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility.Equals(AppViewBackButtonVisibility.Visible);\n            if (optinback)\n            {\n                var hastitle = !CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar;\n                if (hastitle)\n                    return Visibility.Collapsed;\n            }\n\n            return Visibility.Visible;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Converters/ImageSourceToStringConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class ImageSourceToStringConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var file = value.ToString();\n            if (!file.Contains(\"/\")) return string.Empty;\n            var start = file.IndexOf(\"/\") + 1;\n            var end = file.IndexOf(\".\");\n            return string.Format(\"Created Date: {0}\", file.Substring(start, (end - start)));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Converters/UserImagesDisplayConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class UserImagesDisplayConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var list = value as ObservableCollection<string>;\n\n            if (null != list)\n            {\n                if (list.Count == 0)\n                    return Visibility.Visible;\n                else\n                    return Visibility.Collapsed;\n            }\n            else\n                return Visibility.Visible;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Data/Recipes.txt",
    "content": "﻿[ { \"backgroundImage\" : \"images/Chinese/Chinese_1_600_C.jpg\",\n    \"directions\" : \"Mix the ground pork with the salt, sugar, pepper, cornstarch and sesame oil. Add the dried mushrooms and Chinese sausage.Divide into 18 approximately equal portions. Take one portion of the meat and slightly flatten in your hand. Place a cooked quail egg on top of the meat and cover the meat around the egg to make a small round ball. Set aside. Dough:Mix the flour and sugar in a big bowl. Pour the milk in and mix until it becomes a dough Let it sit for 5 minutes. Divide into about 18 equal portions. If you feel any lumps, work through the dough with your hands to remove them. Forming and Cooking the Buns: flour, 18 pieces of dough, 18 balls of meat filling,  parchment paper, cut into 18 square. On a floured surface, roll out a piece of dough into a circle, ideally tapered at the edges Dip one of the prepared meat fillings in flour, With the piece of dough in one hand, place the meat filling on top. \",\n    \"extraImages\" : [ { \"image\" : \"images/Chinese/Chinese_1_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_2_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_3_600_C.jpg\" }\n      ],\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"600 g Ground pork\",\n        \"1 tsp Salt\",\n        \"1 tsp sugar\",\n        \"1/2 tsp Ground black pepper\",\n        \"2 tsp Cornstarch\",\n        \"1 tbsp Sesame oil\",\n        \"1 handful Sliced dried mushrooms \",\n        \"soaked and well drained\",\n        \"18 Quail eggs\",\n        \"cooked and peeled - alternately use 5 chicken eggs and cut them into quarters \",\n        \"3/4 cup Sugar\",\n        \"4 1/2 cups Self-raising flour\",\n        \"1 1/2 cups Milk\"\n      ],\n    \"key\" : 1000,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Steam bun baos\",\n    \"tileImage\" : \"images/Chinese/Chinese_1_150_C.jpg\",\n    \"title\" : \"Steam bun baos\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_2_600_C.jpg\",\n    \"directions\" : \"Crumble the bread mix it with the egg add salt to it. Cover each 2 shrimps with the mix hit a pan pour the souce to the pen fry the balls in the pan. Simply mix all ingredients by hand. At first it does not appear like it will mix, but keep at it just a bit longer and you have Hoisin Sauce. Letting it rest does not appear to improve the flavour any.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"8 Shrimp\",\n        \"2 peices of Bread\",\n        \"1 Egg\",\n        \"Salt\",\n        \"4 Tablespoons Soy sauce - dark/light/usual\",\n        \"2 tablespoons Peanut butter - or black bean paste\",\n        \"1 tablespoon Honey - or molasses\",\n        \"2 teaspoons White vinegar\",\n        \"1/8 teaspoon Garlic powder\",\n        \"2 teaspoons Sesame seed oil\",\n        \"20 drops Chinese-style hot sauce\",\n        \"1/8 teaspoon Black pepper\"\n      ],\n    \"key\" : 1001,\n    \"preptime\" : 45,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Breaded shrimp balls\",\n    \"tileImage\" : \"images/Chinese/Chinese_2_150_C.jpg\",\n    \"title\" : \"Breaded shrimp balls with hoisin sauce\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_3_600_C.jpg\",\n    \"directions\" : \"Cut the carrots and pears and pour on them soya souce and salt\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"2 Pears\",\n        \"Soy souce\",\n        \"Salt\"\n      ],\n    \"key\" : 1002,\n    \"preptime\" : 10,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Carrot Salad\",\n    \"tileImage\" : \"images/Chinese/Chinese_3_150_C.jpg\",\n    \"title\" : \"Asian Pear and Shredded Carrot Salad on a Plate; Chopsticks\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_4_600_C.jpg\",\n    \"directions\" : \"Mix the meat with one age and salt and flower. Heat water add sald and bay leaves, and  nuddels  and throw in the meatballs. wait for 35 minuts and its done\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 kg of Ground meat\",\n        \"Salt\",\n        \"Paper\",\n        \"1/2 cup of Flower\",\n        \"Water\",\n        \"2 Bay leaves\",\n        \"1 Egg\",\n        \"1 package of Nuddels\"\n      ],\n    \"key\" : 1003,\n    \"preptime\" : 50,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Shanghai Noodle Soup\",\n    \"tileImage\" : \"images/Chinese/Chinese_4_150_C.jpg\",\n    \"title\" : \"Shanghai Noodle and Meatball Soup\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_5_600_C.jpg\",\n    \"directions\" : \"Wash and finely chop the green onion. Lightly beat the eggs with the salt and pepper. Heat a wok or frying pan and add 2 tablespoons oil. When the oil is hot, add the eggs. Cook, stirring, until they are lightly scrambled but not too dry. Remove the eggs and clean out the pan.Add 2 tablespoons oil. Add the rice. Stir-fry for a few minutes, using chopsticks or a wooden spoon to break it apart. Stir in the soy sauce or oyster sauce as desired. When the rice is heated through, add the scrambled egg back into the pan. Mix thoroughly. Stir in the green onion. Serve hot.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1 or 2 Green onions\",\n        \"2 Large eggs\",\n        \"1 teaspoon Salt\",\n        \"Pepper to taste\",\n        \"4 tablespoons Oil for stir-frying or as needed\",\n        \"4 cups Cold cooked rice\",\n        \"1 - 2 tablespoons Light soy sauce or Oyster sauce\"\n      ],\n    \"key\" : 1004,\n    \"preptime\" : 30,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Fried Rice\",\n    \"tileImage\" : \"images/Chinese/Chinese_5_150_C.jpg\",\n    \"title\" : \"Fried Rice\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_6_600_C.jpg\",\n    \"directions\" : \"Combine the first 10 ingredients in a large bowl, using your fingers to mix everything together. Fill each wrapper with a heaping teaspoon of the pork filling. Add the filling in the middle of the potsticker wrapper, using your finger to spread it out toward the sides. Be sure not to overfill or to spread the filling too close to the edge of the wrapper. To fold the dumpling, moisten the edges of the wrapper with the egg white or mixture of water and cornstarch. Gently lift the edges of the moistened wrapper over the filling. Crimp the edges of the wrapper and pinch together to seal.Heat a wok or nonstick skillet on medium-high heat and add 1 tablespoon oil. Add 10 – 12 potstickers, and cook for 2 to 3 minutes, until the bottom is browned. Add 1/3 cup water, cover, and steam the dumplings until the liquid is absorbed. Remove and cook the remainder of the dumplings.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 cup finely chopped Bok choy leaves\",\n        \"1/2 cup finely chopped Sui Choy\",\n        \"1/4 cup finely chopped Green onion\",\n        \"1/4 cup chopped water Chestnuts\",\n        \"1 pound Ground pork\",\n        \"1 teaspoon Light soy sauce\",\n        \"1 teaspoon Dark soy sauce\",\n        \"2 teaspoons Chinese rice wine or dry sherry\",\n        \"1 teaspoon Asian sesame oil\",\n        \"Dash white pepper\",\n        \"1 package Wonton or Gyoza wrappers\",\n        \"1 tablespoon Cornstarch mixed with 2 tablespoons Water or 1 lightly beaten Egg white\",\n        \"1 cup Water or as needed\"\n      ],\n    \"key\" : 1005,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fried Dumpling\",\n    \"tileImage\" : \"images/Chinese/Chinese_6_150_C.jpg\",\n    \"title\" : \"Fried Dumpling\"\n  },\n  { \"backgroundImage\" : \"images/French/French_1_600_C.jpg\",\n    \"directions\" : \"Place flour and butter in a food processor and process on medium speed until only tiny lumps of butter remain. In a cup or small bowl, stir together water and egg yolk. Add yolk mixture to the butter and flour mixture. Process on medium speed until the mixture starts to clump together. Remove the processor blade and use your hand to press the dough clumps together into a mass. Tip the dough onto a large sheet of baking paper. Use your hands to bring the pastry together into a smooth ball. Form the pastry into a disc shape. Wrap pastry disc with plastic wrap or place in a freezer bag, and refrigerate for 30 minutes. Place unwrapped pastry disc between two large sheets of baking paper. Using a rolling pin, roll pastry out to fit a 23cm diameter quiche dish. The bottom sheet of baking paper may develop creases during rolling. These creases can make deep cuts in the pastry. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"220g plain Flour\",\n        \"120g cold Butter\",\n        \"1 tablespoon very cold Water\",\n        \"1 large Egg\",\n        \"separated into yolk and white\",\n        \"1 teaspoon Oil\",\n        \"1 small Onion\",\n        \"220g Bacon\",\n        \"finely chopped 5 large Eggs\",\n        \"125ml Cream\",\n        \"1/4 teaspoon Ground nutmeg Salt and pepper\",\n        \"110g grated tasty Cheddar cheese\"\n      ],\n    \"key\" : 2000,\n    \"preptime\" : 120,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Quiche Lorraine\",\n    \"tileImage\" : \"images/French/French_1_150_C.jpg\",\n    \"title\" : \"Quiche Lorraine, a slice cut\"\n  },\n  { \"backgroundImage\" : \"images/French/French_2_600_C.jpg\",\n    \"directions\" : \"Pulse confectioners' sugar and almond flour in a food processor until combined. Sift mixture 2 times. Preheat oven to 375 degrees. Whisk whites with a mixer on medium speed until foamy. Add cream of tartar, and whisk until soft peaks form. Reduce speed to low, then add superfine sugar. Increase speed to high, and whisk until stiff peaks form, about 8 minutes. Sift flour mixture over whites, and fold until mixture is smooth and shiny. Transfer batter to a pastry bag fitted with a 1/2-inch plain round tip, and pipe 3/4-inch rounds 1 inch apart on parchment-lined baking sheets, dragging pastry tip to the side of rounds rather than forming peaks. Tap bottom of each sheet on work surface to release trapped air. Let stand at room temperature for 15 minutes. Reduce oven temperature to 325 degrees. Bake 1 sheet at a time, rotating halfway through, until macarons are crisp and firm, about 10 minutes. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 cup Confectioners' sugar\",\n        \"3/4 cup Almond flour\",\n        \"2 large Egg whites, room temperature\",\n        \"Pinch of Cream of tartar\",\n        \"1/4 cup Superfine sugar\",\n        \"Chocolate: Chocolate Ganache\",\n        \"Coconut: 1 cup Swiss Meringue Buttercream mixed with 1/3 cup angel-flake coconut\",\n        \"Peanut: Chocolate Ganache or store-bought dulce de leche jam or peanut butter\",\n        \"1 cup Swiss Meringue Buttercream mixed with 1/3 cup finely chopped pistachios.\",\n        \"Raspberry: 3/4 cup seedless Raspberry jam\",\n        \"Swiss Meringue Buttercream\"\n      ],\n    \"key\" : 2001,\n    \"preptime\" : 80,\n    \"rating\" : 5,\n    \"shortTitle\" : \"French macaroons\",\n    \"tileImage\" : \"images/French/French_2_150_C.jpg\",\n    \"title\" : \"French macaroons\"\n  },\n  { \"backgroundImage\" : \"images/French/French_3_600_C.jpg\",\n    \"directions\" : \"1. Heat 1/4 cup of the olive oil in a large saucepan. When it is hot, add onions and shallots. Saute for a minute, then add crushed garlic, and sweet red pepper. Add tomato, celery, and fennel. Stir the vegetables into the oil with a wooden sppon until well coated. Then add another 1/4 cup of olive oil, thyme, bay leaf, cloves and the orange zest. Cook until the onion is soft and golden but not brown. 2. Cut fish fillets into 2-inch pieces. Add the pieces of fish and 2 cups of water to the vegetable mixture. Bring to a boil, then reduce heat and simmer, uncovered, for about 10 minutes. Add oysters, clams or mussels and shrimp, crabmeat or lobster tails, cut into pieces or left whole. 3. Add saffron, salt, pepper. Add clam juice, lemon juice, and white wine. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"3 pounds of at least 3 different kinds of Fish fillets\",\n        \"1/2 cup Olive oil\",\n        \"1-2 pounds of Oysters clams or mussels\",\n        \"1 cup cooked Shrimp crab or Lobster meat or Rock lobster tails\",\n        \"1 cup thinly sliced Onions\",\n        \"4 Shallots thinly sliced OR the white parts of 2 or 3 leeks\",\n        \"2 cloves Garlic, crushed\",\n        \"1 large Tomato chopped or 1/2 cup canned tomatoes\",\n        \"1 Sweet red pepper chopped\",\n        \"4 Stalks celery thinly sliced\"\n      ],\n    \"key\" : 2002,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Bouillabaisse\",\n    \"tileImage\" : \"images/French/French_3_150_C.jpg\",\n    \"title\" : \"Bouillabaisse\"\n  },\n  { \"backgroundImage\" : \"images/French/French_4_600_C.jpg\",\n    \"directions\" : \"Bake the fillet in the oven for 8 minnuts fry the bacon on oil. Cover the fillet with bacon put on a plate musshrooms and Brussels sprouts put on top the fillet.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"Venison fillet\",\n        \"Bacon\",\n        \"Forest mushrooms\",\n        \"Brussels sprouts\"\n      ],\n    \"key\" : 2003,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Venison fillet in bacon\",\n    \"tileImage\" : \"images/French/French_4_150_C.jpg\",\n    \"title\" : \"Venison fillet in bacon, forest mushrooms & Brussels sprouts\"\n  },\n  { \"backgroundImage\" : \"images/French/French_5_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 375 degrees. Heat a large skillet. Swirl in the olive oil, add the bacon, and cook until the bacon is golden, 2-3 minutes. Remove the bacon from the skillet. Salt and pepper the chicken and add to the skillet to brown on both sides, about 4 minutes, and remove. Add the onions and mushrooms to the skillet, sauteing until golden brown, 5-8 minutes. Stir in the tomato paste. Deglaze the pan with white wine, scraping to pick up the brown bits, and reduce. Stir in the flour. Add the chicken stock and stir to combine. Return the chicken and bacon to the skillet. Stir in the noodles and cheese. Transfer the mixture to a 9- x 13-inch baking dish. Top with panko, sprinkle on the paprika, and drizzle with olive oil. Bake for 25 minutes.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Extra-virgin olive oil plus more for drizzling\",\n        \"2 strips Bacon sliced crosswise into strips\",\n        \"2 1/2 pounds Boneless chicken thighs skin-on\",\n        \"Coarse salt and freshly Ground black pepper\",\n        \"1 small Onion halved and thinly sliced\",\n        \"10 ounces White button\",\n        \"Mushrooms quartered\",\n        \"3 tablespoons Tomato paste\",\n        \"1/2 cup White wine\",\n        \"1/3 cup Flour\",\n        \"1 1/2 cups Chicken stock\",\n        \"1 extra-wide Egg noodles\",\n        \"cooked to package instruction\",\n        \"2 cups shredded Muenster cheese\",\n        \"Pinch of paprika\",\n        \"1 cup panko Breadcrumbs\"\n      ],\n    \"key\" : 2004,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Coq au vin\",\n    \"tileImage\" : \"images/French/French_5_150_C.jpg\",\n    \"title\" : \"Coq au vin in a casserole dish\"\n  },\n  { \"backgroundImage\" : \"images/French/French_6_600_C.jpg\",\n    \"directions\" : \"Allow the fish filet to defrost if they were frozen. Peel and finely chop the onion and shallots. Peel and crush the clove of garlic. Get the leaves out the bunch of parsley and snip them in a glass with scissors. Juice up the lemon and place in a bowl. Prepare the breadcrumbs. You have several options to get breadcrumbs, the easy way is to buy ready to go breadcrumbs, the other option is to grate a really hard stale piece of bread using a box or zest grater, this is also achievable using a mortar grinder. If you do not have hard bread available, it is possible to make it hard using a toaster. You can use every kind of bread but I would recommend the use of farmhouse, wholemeal or rye bread. In a saucepan add the butter and the very finely chopped onion and shallots, add the crushed garlic. Stir fry over medium heat for 5 minutes then add the white wine, salt & pepper and reduce over low heat until almost all liquid has evaporated. Preheat you oven at 180 °C ( 360 °F ). \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"4 Fish filets frozen or not\",\n        \"1 big Onion\",\n        \"2 Shallots\",\n        \"1 clove of Garlic\",\n        \"30g Butter\",\n        \"10cl dry White wine\",\n        \"Juice of a lLemon\",\n        \"50g Bbreadcrumbs\",\n        \"1 bunch of Parsley\",\n        \"3 tbs. Olive oil\",\n        \"Salt and Pepper\"\n      ],\n    \"key\" : 2005,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fish a la bordelaise\",\n    \"tileImage\" : \"images/French/French_6_150_C.jpg\",\n    \"title\" : \"Fish a la bordelaise\"\n  },\n  { \"backgroundImage\" : \"images/German/German_1_600_C.jpg\",\n    \"directions\" : \"Combine the first 8 ingredients in a bowl; stir well. Shape mixture into 24 (1-inch) meatballs. Coat a large nonstick skillet with cooking spray; place over medium heat until hot. Add meatballs; cook 10 minutes or until browned, stirring frequently. Remove from skillet; set aside. Add garlic to skillet; saut? 30 seconds. Add wine; bring to a boil over medium heat, and cook 1 minute. Return the meatballs to skillet; cover and cook 5 minutes or until done. Remove from heat. Remove meatballs from the skillet with a slotted spoon; set aside, and keep warm. Add sour cream and pepper to wine mixture in skillet; stir well. Spoon sauce over meatballs. make salad with cucumber with slised potato and add sald put on top hot meatbals.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1/2 pound Ground round\",\n        \"1/2 pound lean Ground pork\",\n        \"1/4 cup dry Breadcrumbs\",\n        \"1 1/2 tablespoons chopped fresh Parsley\",\n        \"1/4 teaspoon Salt\",\n        \"1 teaspoon prepared Mustard\",\n        \"1/2 teaspoon Worcestershire sauce\",\n        \"1 Egg white lightly beaten\",\n        \"Vegetable cooking spray\",\n        \"2 Garlic cloves minced\",\n        \"1 cup Riesling or other slightly sweet White wine\",\n        \"1/2 cup nonfat Sour cream\",\n        \"1/4 teaspoon Pepper\",\n        \"2 cooked Potato\",\n        \"1 Cucumber\"\n      ],\n    \"key\" : 3000,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"German meatballs\",\n    \"tileImage\" : \"images/German/German_1_150_C.jpg\",\n    \"title\" : \"German meatballs on potato and cucumber salad with pretzel\"\n  },\n  { \"backgroundImage\" : \"images/German/German_2_600_C.jpg\",\n    \"directions\" : \"Water, vinegar and wine to the boil with the spices. Peel the onions, cut into rings and add the peeled and thinly sliced carrots and simmer for 10 minutes. Then leave the sausages in a very low heat (so they do not burst) 15 minutes, more like, pull until they are fairly firm. The sausages with vegetables and a little brew served hot. Serve with dark bread baked twice\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 liter of Water\",\n        \"2 pcs Cloves\",\n        \"5 pcs Peppercorns\",\n        \"10 pcs Mustard seeds\",\n        \"3 pcs Bay leaves\",\n        \"1 teaspoon Salt\",\n        \"2 tsp Sugar\",\n        \"1 small Carrot\",\n        \"3 large Onions\",\n        \"100 ml White wine\",\n        \"100 ml Wine vinegar\",\n        \"5 pcs Juniper berries\",\n        \"16 pcs Nuremberg grilled sausages\"\n      ],\n    \"key\" : 3001,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Saure Zipfel\",\n    \"tileImage\" : \"images/German/German_2_150_C.jpg\",\n    \"title\" : \"Saure Zipfel, Nuremberg sausages cooked in vinegar\"\n  },\n  { \"backgroundImage\" : \"images/German/German_3_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 350°F. Cut off the tips of the heads of garlic and brush the cut sides with 1 tablespoon of the olive oil. Set garlic cut-side down on a sheet pan and roast until it is soft to the touch, about 30 minutes. Let garlic cool for 5 minutes, then squeeze the roasted cloves out of the garlic and into a bowl. Mash with a fork and spread over the top of the lamb .Meanwhile, place the lamb in a large roasting pan and season with salt, pepper and half of the rosemary. Allow to stand at room temperature for 30 minutes to an hour. Place the potatoes in an oven-proof dish and toss with the remaining oil and rosemary. Set aside. Roast lamb for about 1 hour 40 minutes, until it registers 130-135°F on a meat thermometer for a medium-rare roast, or until the juices run clear when a sharp knife or skewer is inserted in the thickest part of the meat. When the lamb has been roasting for 40 or 50 minutes, place the potatoes in the oven and bake until well browned and tender. Transfer the lamb to a warm platter and let rest for 15 minutes. (It will continue to cook as it rests.) \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 leg of Lamb bone in\",\n        \"2 heads Garlic halved\",\n        \"3 tablespoons Olive oil\",\n        \"Salt and freshly Ground pepper to taste\",\n\t\t\"2 tablespoons Rosemary chopped\",\n        \"3 pounds small Red potatoes halved\",\n        \"grilled Asparagus or preferred vegetable to serve\"\n      ],\n    \"key\" : 3002,\n    \"preptime\" : 90,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Leg of lamb\",\n    \"tileImage\" : \"images/German/German_3_150_C.jpg\",\n    \"title\" : \"Leg of lamb (Heidschnucke) with root vegetables\"\n  },\n  { \"backgroundImage\" : \"images/German/German_4_600_C.jpg\",\n    \"directions\" : \"Backe the sausage in the oven for 30 minuts, cook the carrot ground it after coocking, mix it with butter and salt, put on top a backed sausage.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"German sausage\",\n        \"Salt\",\n        \"Butter\"\n      ],\n    \"key\" : 3003,\n    \"preptime\" : 40,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Roasted sausages\",\n    \"tileImage\" : \"images/German/German_4_150_C.jpg\",\n    \"title\" : \"Roasted sausages on top of carrot stew\"\n  },\n  { \"backgroundImage\" : \"images/German/German_5_600_C.jpg\",\n    \"directions\" : \"In a small bowl, whisk the milk with the egg yolks and egg. In a large bowl, whisk the flour with the nutmeg, 1 teaspoon of salt and 1/4 teaspoon of pepper. Using a wooden spoon, stir the egg mixture into the flour, leaving a few lumps. Cover and refrigerate the batter for at least 1 hour or overnight. Bring a large pot of salted water to a boil. Prepare a large bowl of ice water. Carefully hold a colander with large holes over the boiling water. Add about 1/2 cup of the batter to the colander and press it into the simmering water with a spatula or the back of a spoon. Repeat until all of the batter has been used. Cook the spaetzle for 2 minutes longer, then drain. Immediately transfer the spaetzle to the ice water, swirling the dumplings until all of the ice melts. Drain and transfer to a large bowl. Stir in 1 tablespoon of the oil, season with salt and pepper and toss to coat. Preheat the oven to 400°. Oil a 9-by-13-inch baking dish. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"3 cups all-purpose Flour\",\n        \"1/4 teaspoon freshly Grated nutmeg\",\n        \"1 medium White onion thinly sliced\",\n        \"1 large Egg\",\n        \"1 1/2 cups shredded Gruyere cheese\",\n        \"1 3/4 cups Milk\",\n        \"1 tablespoon unsalted Butter cut into small pieces\",\n        \"Salt and freshly ground Pepper\",\n        \"4 large Egg yolks\",\n        \"2 tablespoons Peanut oil\"\n      ],\n    \"key\" : 3004,\n    \"preptime\" : 50,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Spaetzle and onion\",\n    \"tileImage\" : \"images/German/German_5_150_C.jpg\",\n    \"title\" : \"Spaetzle and onion\"\n  },\n  { \"backgroundImage\" : \"images/German/German_6_600_C.jpg\",\n    \"directions\" : \"Mash the Camembert with a fork and add the butter, cream cheese and onions. Season with salt, pepper, paprika and caraway to taste. Add beer gradually and stir. Spoon a portion of Obatzda onto each plate and garnish with onion rings, chives and caraway. Serve preferably with rye bread, wholemeal bread and radishes. Obatzda is available to purchase ready-made for tho\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"500g ripe Camembert \",\n        \"40g soft Butter \",\n        \"200g cream cheese \",\n        \"80g finely chopped Onions\",\n        \"Salt, pepper and Paprika caraway\",\n        \"2 desert spoons of chopped Chives\",\n        \"60g finely sliced Onion rings \",\n        \"6 or 8 desert spoons of Beer to taste\"\n      ],\n    \"key\" : 3005,\n    \"preptime\" : 65,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Obatzda\",\n    \"tileImage\" : \"images/German/German_6_150_C.jpg\",\n    \"title\" : \"Obatzda\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_1_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour.While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups all purpose Flour\",\n        \"1 1/2 teaspoons Salt\",\n        \"1/2 cup Ghee or clarified Butter or Oil\",\n        \"Cold water as needed usually about 10 tablespoons\",\n        \"3 medium baking Potatoes boiled until tender drained and cooled\",\n        \"1 cup minced Onion\",\n        \"1 tablespoon minced fresh Ginger\",\n        \"1 hot green Chile such as Serrano finely minced\",\n        \"1 teaspoon ground Coriander\",\n        \"1 teaspoon garam Masala\",\n        \"1 tablespoon Lemon juice Chutney for serving\"\n      ],\n    \"key\" : 4000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable samosas\",\n    \"tileImage\" : \"images/Indian/Indian_1_150_C.jpg\",\n    \"title\" : \"Vegetable samosas\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_2_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour. While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.While the filling is cooking, make teyogurt dipping sauce by combining the yogurt, remaining tablespoon of cilantro, mint, green onion, lemon juice, remaining 1/4 teaspoon of salt and remaining 1/8 teaspoon of pepper and stir to combine. Set aside, refrigerated, until ready to serve the samosas. Divide the samosa dough into 10 portions and roll each piece of dough into a circle about 5 inches in diameter. Cut each circle in half. Lightly moisten the straight edge  each half circle and press together to seal; you should now have a cone-shaped portion of dough. Carefully spoon about 2 heaping tablespoons of the filling into the dough cone and then moisten the remaining edges with a bit of water and press together to seal. Repeat with the remaining portions of dough and filling. When you are ready to fry the samosas, heat a large saucepan filled at least 2 inches with oil to about 340 degrees F. Fry the samosas, a few at a time and stirring to promote even cooking, until golden brown, about 4 minutes.Remove using a slotted spoon and transfer to a per-lined plate to drain. Repeat until all samosas have been fried. Serve immediately, with the yogurt dipping sauce and your favorite chutney\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 lbs. boneless Chicken breast \",\n        \"1/4 cup Yogurt\",\n        \"3 tsp minced Ginger \",\n        \"3 tsp crushed Garlic\",\n        \"1/4 tsp White pepper\",\n        \"1/4 tsp Cumin powder\",\n        \"1/4 tsp Mace\",\n        \"1/4 tsp Nutmeg \",\n        \"1/4 tsp green Cardamom powder\",\n        \"1/4 tsp Chili powder \",\n        \"1/4 tsp Turmeric \",\n        \"3 tbsp Lemon juice \",\n        \"2 tsp Ginger julienned\",\n        \"Honey to taste\"\n      ],\n    \"key\" : 4001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Chicken Chili Tikka Masala\",\n    \"tileImage\" : \"images/Indian/Indian_2_150_C.jpg\",\n    \"title\" : \"Chicken Chili Tikka Masala\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_3_600_C.jpg\",\n    \"directions\" : \"Keep lobia soaked overnight. Strain water in morning,Cook lobia in a large pan in 1 1/2 cup water, baking soda, asafoetida, onion, ginger, mint and garam masaala. Cook to soften lobias,Strain water. Keep aside lobia. Retain stock,Heat oil in frying pan. Add salt, cumin powder, coriander powder, green coriander, tomato, red chilli powder and green chillies. Stir fry for a while,Add boiled potatoes followed by lobia. Roast for 2 minutes. Add lobia water (stock). Look for 2 minutes,Serve hot with rice, rotis or chapatis\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"250 gr Lobia \",\n        \"Salt to taste\",\n        \"1/2 tsp Cumin seed \",\n        \"1 Green chilli \",\n        \"3 tbsps Oil \",\n        \"1 tsp Coriander \",\n        \"a pinch of Asafoetida\",\n        \"8-10 Mint leaves \",\n        \"a pinch of Baking soda \",\n        \"1 tsp Red chilli \",\n        \"1 tsp Garam masaala \",\n        \"1 piece Ginger \",\n        \"1 tsp Coriander \",\n        \"2 Potato \",\n        \"1/2 tsp Turmeric \",\n        \"2 Onion \",\n        \"2 Tomatoes \"\n      ],\n    \"key\" : 4002,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lobia Aloo\",\n    \"tileImage\" : \"images/Indian/Indian_3_150_C.jpg\",\n    \"title\" : \"Lobia Aloo ,Black Eyed Bean and Potato Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_4_600_C.jpg\",\n    \"directions\" : \"Place chicken in bowl and marinate in yogurt, 1 clove garlic, half an onion, paprika, ginger, salt and pepper for a few hours. Heat oil in large heavy casserole; gently saut? remaining onion and garlic for 1 minute. Remove and set aside. Add to casserole the coriander, chili, cumin, cardamom seeds, poppy seed and turmeric. Fry for a few minutes. Add the chicken. Pour enough water to cover and add remaining marinade. Add onion and garlic with bay leaf. Simmer 45 minutes or until chicken is tender. Sprinkle the chicken korma with fresh coriander and serve.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 1/2 pound cut up Chicken \",\n        \"2 cups Yogurt \",\n        \"3 cloves Garlic \",\n        \"2 medium Onions chopped \",\n        \"1 tsp Paprika \",\n        \"2 tsp fresh Ginger chopped \",\n        \"2 tsp Peanut or Sunflower oil\",\n        \"2 tsp ground Coriander \",\n        \"1/2 tsp ground Chili \",\n        \"1 tsp Cumin seeds of 2 peeled Cardamom pod \",\n        \"1 tsp Poppy seed \",\n        \"1 tsp Turmeric \",\n        \"1 Bay leaf \",\n        \"2 tbsp fresh Coriander chopped\"\n      ],\n    \"key\" : 4003,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Chicken Korma Curry\",\n    \"tileImage\" : \"images/Indian/Indian_4_150_C.jpg\",\n    \"title\" : \"Chicken Korma Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_5_600_C.jpg\",\n    \"directions\" : \"Rice: Wash rice gently changing water several times until the water appears clear. For fluffier rice, the rice should be soaked for at least 15 minutes prior to cooking. Drain the rice and put it into the saucepan. Add water, oil, and salt, and bring to a boil. Once the water is boiling reduce the heat to low and cover the pan. Cook about 15 minutes, or until the rice is tender and the water has evaporated. Turn off the heat and fluff the rice with a fork. For a few minutes soak saffron in warm milk then gently fold the milk into the cooked rice. Vegetable And Gravy: Blend tomatoes to make a puree.In a bowl add yogurt, ginger, green chili, salt, turmeric, chili powder – mix it well. Add all the vegetables (cauliflower, beans, bell pepper, carrots, paneer, cashews, ginger and green chili) to the yogurt. Mix it well then let it marinate for 10 to 15 minutes. Heat the oil in a saucepan. Test the heat by adding one cumin seed to the oil; if seed cracks right away oil is ready. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups Basmati Rice\",\n        \"1 cup mixed Vegetables\",\n        \"150 gms Green peas\",\n        \"3 finely sliced Onions\",\n        \"1 tsp Red chilli powder\",\n        \"4 Cloves\",\n        \"4 Tomatoes\",\n        \"1/2 cup Yogurt\",\n        \"1/2 tsp Mustard seeds\"\n      ],\n    \"key\" : 4004,\n    \"preptime\" : 50,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable Biryani\",\n    \"tileImage\" : \"images/Indian/Indian_5_150_C.jpg\",\n    \"title\" : \"Vegetable Biryani\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_6_600_C.jpg\",\n    \"directions\" : \"For the lemon rice, cook the lemon zest and spices in a little oil until fragrant. Add the rice and stir well. Tip in 2 mugs of water and 1 tsp salt, bring to a simmer, put on a lid and cook until water is absorbed and rice cooked. Add a splash of lemon juice to serve. To make the dhal, put the lentils and turmeric in a pan and add water to cover by 2cm. Season and simmer for about 20 minutes until tender, adding more water if needed. Heat some oil in a pan then cook the onion, garlic and chilli for a few minutes. Add the garam masala, cook for a minute then stir into the cooked lentils. For the saag paneer, fry the paneer in a little oil until golden. Add the onion, ginger, garlic and spices, and cook until softened. Add the spinach and a splash of water and cook until wilted. To make the onion raita, mix everything together just before serving and season. Make the aubergine and tomato curry by frying the onion in oil until soft. Tip onto a plate. Add a little more oil to the pan and fry the aubergine in batches until browned all over and tender. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"1 Lemon zest pared and juiced\",\n        \"1/2 tsp Mustard seeds\",\n        \"3 Cardamon pods bashed\",\n        \"1 mugful Basmati rice\",\n        \"250g Red lentils\",\n        \"1 tsp Turmeric\",\n        \"Oil\",\n        \"1 Onion  grated\",\n        \"2 Garlic cloves finely chopped\",\n        \"1 Red chilli shredded\",\n        \"1 tsp Garam masala\",\n        \"1 punnet Cherry tomatoes\"\n      ],\n    \"key\" : 4005,\n    \"preptime\" : 40,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Thali\",\n    \"tileImage\" : \"images/Indian/Indian_6_150_C.jpg\",\n    \"title\" : \"Thali\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_1_600_C.jpg\",\n    \"directions\" : \"In a medium saucepan, whisk together egg yolks and sugar until well blended. Whisk in milk and cook over medium heat, stirring constantly, until mixture boils. Boil gently for 1 minute, remove from heat and allow to cool slightly. Cover tightly and chill in refrigerator 1 hour.In a medium bowl, beat cream with vanilla until stiff peaks form. Whisk mascarpone into yolk mixture until smooth. In a small bowl, combine coffee and rum. Split ladyfingers in half lengthwise and drizzle with coffee mixture.Arrange half of soaked ladyfingers in bottom of a 7x11 inch dish. Spread half of mascarpone mixture over ladyfingers, then half of whipped cream over that. Repeat layers and sprinkle with cocoa. Cover and refrigerate 4 to 6 hours, until set.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"6 Egg yolks\",\n        \"3/4 cup White sugar\",\n        \"2/3 cup Milk\",\n        \"1 1/4 cups Heavy cream\",\n        \"1/2 teaspoon Vanilla extract\",\n        \"1 pound Mascarpone cheese\",\n        \"1/4 cup strong brewed Coffee room temperature\",\n        \"2 tablespoons Rum\",\n        \"2  packages Ladyfinger cookies\",\n        \"1 tablespoon unsweetened Cocoa powder\"\n      ],\n    \"key\" : 5000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Tiramisu\",\n    \"tileImage\" : \"images/Italian/Italian_1_150_C.jpg\",\n    \"title\" : \"Tiramisu\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_2_600_C.jpg\",\n    \"directions\" : \"1. Put 1 1/2 quarts (6 cups) of water into a pot. Add 1 level tablespoon of kosher salt (or 2 level teaspoons if you are using table salt). Bring to a boil. Lower the heat to warm, cover and keep warm while you make the risotto. 2. In a large, wide saute pan, heat olive oil and butter on medium heat. Add the onions and cook until translucent, about 5 minutes. 3. Add arborio rice. Stir to coat. Cook, stirring, 5-7 minutes, until the rice just barely begins to brown on some of the grains. 4. Add the wine. Stir continuously, a few minutes, until the liquid has been completely absorbed by the rice. 5. Lower the heat to medium low. Start adding the hot salted water to the rice, one ladleful (about 1/2 cup) at a time. After each addition, stir continuously for a few minutes until the rice has completely absorbed the liquid. Stir enough to keep the rice from sticking to the edge of the pan. Stirring continuously helps extract starch from the rice, to make a creamy sauce for the rice. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"Salt\",\n        \"1 1/2 quarts Water\",\n        \"3 tbsp Olive oil\",\n        \"1 tbsp Butter\",\n        \"3/4 cup finely chopped Onion\",\n        \"2 cups Arborio rice or other Risotto rice\",\n        \"1 cup White wine\",\n        \"1 or 2 Meyer lemons enough for 1 tbsp of zest and 3 tbsp of juice\",\n        \"1 tbsp of chopped fresh Oregano leaves\",\n        \"1/4 teaspoon freshly Ground black pepper\",\n        \"1/4 cup lightly toasted Pine nuts\"\n      ],\n    \"key\" : 5001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lemon risotto\",\n    \"tileImage\" : \"images/Italian/Italian_2_150_C.jpg\",\n    \"title\" : \"Lemon risotto with pine nuts, herb oil and rosemary\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_3_600_C.jpg\",\n    \"directions\" : \"Bring a large pot of lightly salted water to a boil. Add pasta and cook for 8 to 10 minutes, or until al dente. Drain and set aside.Melt butter over medium-high heat in a large skillet. Add onions, mushrooms, and garlic, and saute until tender. Pour in wine and simmer for 10 minutes, reducing heat if necessary.Stir in clams, reserved clam juice, sour cream, pepper, and parsley, and simmer another 20 minutes. Toss with linguine, and serve. Enjoy!\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 package Linguine pasta\",\n        \"8 tablespoons unsalted Butter\",\n        \"1 medium white Onion chopped\",\n        \"8 ounces fresh Mushrooms sliced\",\n        \"4 cloves Garlic pressed\",\n        \"1 cup dry White wine\",\n        \"4 cans chopped Clams, drained and rinsed with juices reserved\",\n        \"2 tablespoons Sour cream\",\n        \"freshly Ground black pepper\",\n        \"1/4 cup chopped flat leaf Parsley\"\n      ],\n    \"key\" : 5002,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Linguine with clams\",\n    \"tileImage\" : \"images/Italian/Italian_3_150_C.jpg\",\n    \"title\" : \"Linguine with clams\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_4_600_C.jpg\",\n    \"directions\" : \"In a large saucepan combine crushed tomatoes, diced tomatoes, tomato sauce, minced garlic, sugar, parsley, garlic powder, salt, oregano, basil, and ground black pepper. Add capers and crushed red pepper if desired. Cover. Bring to a boil.Lower heat and simmer, with cover, for 45 to 60 minutes. As simmering time nears, in a large pot with boiling salted water cook spaghetti until al dente.Toss spaghetti with cooked sauce. Serve warm.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 pound Spaghetti\",\n        \"1  can crushed Tomatoes\",\n        \"1  can diced Tomatoes\",\n        \"1 can Tomato sauce\",\n        \"1 tablespoon Minced garlic\",\n        \"2 teaspoons White sugar\",\n        \"2 teaspoons dried Parsley\",\n        \"1 teaspoon Garlic powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon dried Oregano\",\n        \"1/4 teaspoon dried Basil\",\n        \"1/4 teaspoon ground Black pepper\",\n        \"1 1/2 tablespoons Capers\",\n        \"1 pinch crushed Red pepper flakes\"\n      ],\n    \"key\" : 5003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Spaghetti with marinara sauce\",\n    \"tileImage\" : \"images/Italian/Italian_4_150_C.jpg\",\n    \"title\" : \"Spaghetti with marinara sauce\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_5_600_C.jpg\",\n    \"directions\" : \"Layer alternating slices of tomatoes and mozzarella, adding a basil leaf between each, on a large, shallow platter. Drizzle the salad with extra-virgin olive oil and season with salt and pepper, to taste.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"3 Vine ripe tomatoes\",\n        \"1 pound fresh Mozzarell\",\n        \"20 to 30 leaves fresh Basil\",\n        \"Extra-virgin olive oil for drizzling\",\n        \"Coarse Salt and Pepper\"\n      ],\n    \"key\" : 5004,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Caprese Salad\",\n    \"tileImage\" : \"images/Italian/Italian_5_150_C.jpg\",\n    \"title\" : \"Caprese Salad\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_6_600_C.jpg\",\n    \"directions\" : \"1. Brown lean ground beef in skillet until lightly browned and cooked through. Put a few layers of paper towels in large bowl. With slotted spoon, remove browned beef from skillet draining off excess beef fat and put on top of blotting towels. After all the browned beef has been removed from the skillet, drain off and dispose of excess beef fat. Wipe skillet clean with paper towel.Add diced green pepper and onion to skillet. Brown for a few minutes on medium high heat. Add the garlic and cook for 30 seconds more. Add browned beef back to the skillet, lower the heat to low and continue to cook for 5 more minutes stirring frequently. 2. Transfer browned beef, green pepper and onions to 3 Qt. pot. Add tomato sauce, tomato paste. Open stewed tomatoes and dice, then add to 3 Qt. pot. Add oregano, parsley, Italian Spice Mix to taste, probably 2 teaspoons of each. Add a pinch of garlic powder and a pinch of garlic salt, to taste. Add a dash of white wine vinegar. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 lb lean Ground beef\",\n        \"1/2 medium sweet white Onion diced\",\n        \"1/2 large Bell pepper seeds and veins removed\",\n        \"1/2 lb dry Lasagna noodles\",\n        \"1/4 cup Sugar \", \n\t\t\"1 28oz can Tomato sauce\",\n        \"1/2 28 oz can Stewed tomatoes\",\n        \"1/2 6 oz can Tomato paste\",\n        \"1 lb Ricotta cheese\",\n        \"1 1/2 lb Mozzarella cheese\",\n        \"3/4 lb freshly grated Parmesan cheese\",\n        \"Garlic Powder\",\n        \"Oregano\",\n        \"White wine vinegar\"\n      ],\n    \"key\" : 5005,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lasagna\",\n    \"tileImage\" : \"images/Italian/Italian_6_150_C.jpg\",\n    \"title\" : \"Lasagna\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_1_600_C.jpg\",\n    \"directions\" : \"1. If you are starting with somewhat old, dried out tortillas, great. If not and you are starting with relatively fresh tortillas, put them on a baking sheet and put them in the oven at 200°F for 10-15 minutes to dry them out a bit. It is best to start with tortillas that don't have a lot of moisture in them. Cut tortillas in half, and then cut the halves into 1/4-inch wide strips. Heat oil over medium-high heat in a 3-quart pot. Working in three batches, fry the tortilla strips in the oil, until lightly browned and crisp. Remove the tortilla strips from the pan and let drain on a paper-towel-lined plate. 2. Add the chopped onions to the pan, cook 2 minutes, stirring frequently. Add the chopped chile and cook for 2-3 minutes more, until the onions and chiles have softened. Add the garlic and cook for 30 seconds more. Add the broth, tomatoes, and salt. Increase the heat to high, heat until the soup begins to boil, then reduce the heat to a low simmer, cover and simmer for 15 minutes. Add the shredded chicken and cook until heated through. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"6 Corn tortillas preferably a little old and dried out\",\n        \"1/4 cup grapeseed Oil peanut oil other high smoke point oil\",\n        \"1/2 cup Chopped onion\",\n        \"2 cloves Garlic minced\",\n        \"1 medium Anaheim poblano or Jalapeno chile seeded veins removed chopped\",\n        \"4 cups Chicken broth or homemade chicken stock\",\n        \"1 can  diced Tomatoes undrained \",\n        \"1/2 teaspoon coarse salt\",\n        \"1 1/2 cups shredded cooked Chicken\",\n        \"1 ripe Avocado\",\n        \"1/2 cup shredded Monterey Jack cheese \",\n        \"Chopped fresh Cilantro\",\n        \"1 Lime cut into wedges\"\n      ],\n    \"key\" : 6000,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Tortilla soup\",\n    \"tileImage\" : \"images/Mexican/Mexican_1_150_C.jpg\",\n    \"title\" : \"Tortilla soup\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_2_600_C.jpg\",\n    \"directions\" : \"Combine salsa and sour cream in a large bowl. Heat oil in a large nonstick skillet over medium heat. Add onion and garlic and cook, stirring often, until softened, about 2 minutes. Add turkey and cook, stirring often and crumbling with a wooden spoon, until cooked through, about 5 minutes. Add tomatoes, beans, cumin and chili powder; cook, stirring, until the tomatoes begin to break down, 2 to 3 minutes. Remove from the heat, stir in cilantro and 1/4 cup of the salsa mixture. Add lettuce to the remaining salsa mixture in the bowl; toss to coat. To serve, divide the lettuce among 4 plates, top with the turkey mixture and sprinkle with cheese.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1/2 cup prepared Salsa\",\n        \"1/4 cup reduced-fat Sour cream\",\n        \"1 teaspoon Canola oil\",\n        \"1 medium Onion chopped\",\n        \"3 cloves Garlic minced\",\n        \"1 pound 93% lean Ground turkey\",\n        \"2 large plum Tomatoes diced\",\n        \"1 can kidney Beans rinsed\",\n        \"2 teaspoons Ground cumin\",\n        \"2 teaspoons Chili powder\",\n        \"1/4 cup chopped fresh Cilantro\",\n        \"8 cups shredded Romaine lettuce\",\n        \"1/2 cup shredded sharp Cheddar cheese\"\n      ],\n    \"key\" : 6001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Taco Salad\",\n    \"tileImage\" : \"images/Mexican/Mexican_2_150_C.jpg\",\n    \"title\" : \"Taco Salad\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_3_600_C.jpg\",\n    \"directions\" : \"Heat the oven to 400. Heat the oil in a large skillet over medium heat. Add the onion and garlic and cook them for 3 minutes, stirring often. Add the beef and use a wooden spoon or a spatula to break it up while it cooks, until it is no longer red, about 3 minutes. Stir in 1/2 cup of the salsa, the chili powder, and the salt and pepper. Cook the mixture over low heat, stirring occasionally, for 10 minutes. Place the tortillas on a plate and cover them with damp paper towels. Microwave them until warm and pliable, about 45 seconds. Top each tortilla with 1/4 cup of the beef mixture, spreading it to an inch from the edges. Sprinkle cheese evenly over the beef.Roll up the tortillas and place them on a foil-lined baking sheet with the seam sides down. Brush the taquitos lightly with vegetable oil, then bake them until the filling is heated through and the tortillas are lightly browned, about 8 to 12 minutes. Serve them hot with sour cream and/or salsa. Serves 4 to 6.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Vegetable oil plus more for brushing on the taquitos\",\n        \"1 medium Onion finely chopped\",\n        \"1 clove Garlic minced\",\n        \"3/4 pound lean Ground beef\",\n        \"1 cup Salsa plus more for dipping\",\n        \"2 teaspoons Chili powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon Pepper\",\n        \"10 flour Tortillas\",\n        \"1/2 cup shredded Cheddar or Monterey Jack Sour cream\"\n      ],\n    \"key\" : 6002,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Taquitos\",\n    \"tileImage\" : \"images/Mexican/Mexican_3_150_C.jpg\",\n    \"title\" : \"Taquitos\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_4_600_C.jpg\",\n    \"directions\" : \"Trim fat from pork. In a 3 1/2- or 4-quart slow cooker combine pork shoulder, broth, onion, garlic, cumin, ground chipotle chile pepper or chili powder, and salt. Cover and cook on low-heat setting for 10 to 11 hours or on high-heat setting for 5 to 6 hours. 2. Preheat oven to 400 degrees F. Remove pork from slow cooker, reserving cooking liquid. Using two forks, pull meat into coarse strands. 3. In a large bowl combine pork, 1/2 cup of the enchilada sauce, 2 tablespoons of the reserved cooking liquid, and the 1 tablespoon snipped cilantro. Set aside. 4. In a medium bowl combine the remaining enchilada sauce, 1/4 cup of the reserved cooking liquid (discard any remaining cooking liquid), and the diced green chile peppers. Spread about 1/2 cup of enchilada-green chile pepper mixture in the bottom of a 3-quart rectangular baking dish; set aside. 5. Divide pork mixture and 1 1/2 cups of the cheese among tortillas, placing meat and cheese near the edge of each tortilla. Roll up tortillas. Place filled tortillas, seam sides down, in the prepared baking dish (place tortillas close together); top with the remaining enchilada-green chile pepper mixture. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3 1/2 pounds boneless Pork shoulder\",\n        \"1 14 ounce can Chicken broth\",\n        \"1/2 cup chopped Onion\",\n        \"6 cloves garlic minced\",\n        \"1 tablespoon Ground cumin\",\n        \"2 or 3 teaspoons ground Chipotle chile pepper or Hot chili powder\",\n        \"1 teaspoon Salt\",\n        \"3 10 ounce cans Enchilada sauce\",\n        \"1 tablespoon snipped fresh Cilantro\",\n        \"1 4 ounce can diced Green hile peppers\",\n        \"8 ounces Cotija cheese shredded\",\n        \"8 inches flour Tortillas\",\n        \"Snipped fresh Cilantro\",\n        \"Diced tomato or quartered Grape tomatoes \",\n\t\t\"Sour cream\"\n      ],\n    \"key\" : 6003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Pulled Pork Enchilada\",\n    \"tileImage\" : \"images/Mexican/Mexican_4_150_C.jpg\",\n    \"title\" : \"Pulled Pork Enchilada\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_5_600_C.jpg\",\n    \"directions\" : \"1. Remove papery husks from tomatillos and rinse well. 2. Roasting method Cut in half and place cut side down on a foil-lined baking sheet. Place under a broiler for about 5-7 minutes to lightly blacken the skin. 3. Boiling method Place tomatillos in a saucepan, cover with water. Bring to a boil and simmer for 5 minutes. Remove tomatillos with a slotted spoon. 3. Place tomatillos, lime juice, onions, cilantro, chili peppers, sugar in a food processor (or blender) and pulse until all ingredients are finely chopped and mixed. Season to taste with salt. Cool in refrigerator.Serve with chips or as a salsa accompaniment to Mexican dishes. Makes 3 cups.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 1/2 lb Tomatillos\",\n        \"1/2 cup chopped White onion\",\n        \"1/2 cup Cilantro leaves\",\n        \"1 Tbsp fresh Lime juice\",\n        \"1/4 teaspoon Sugar\",\n        \"2 Jalapeno peppers OR 2 Serrano peppers stemmed seeded and chopped\",\n        \"Salt to taste\"\n      ],\n    \"key\" : 6004,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Salsa Verde\",\n    \"tileImage\" : \"images/Mexican/Mexican_5_150_C.jpg\",\n    \"title\" : \"Salsa Verde\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_6_600_C.jpg\",\n    \"directions\" : \"Place hominy in a large Dutch oven. Cover with water to 4 inches above hominy; cover and let stand 8 hours. Drain. Return hominy to pan. Cover with water to 4 inches above hominy; bring to a boil. Reduce heat, and simmer 1 hour, stirring occasionally; drain. Wipe pan dry with a paper towel.Heat oil in pan over medium-high heat. Add pork to pan; saut? 5 minutes, turning to brown on all sides. Add onion; saut? 2 minutes or until tender. Add oregano, salt, garlic, and bay leaf; saut? 1 minute. Return hominy to pan. Add 3 cups water and broth; bring to a boil. Reduce heat, and simmer 30 minutes, stirring occasionally. Add chiles; simmer 30 minutes, stirring occasionally. Discard chiles and bay leaf. Ladle about 1 1/2 cups posole into each of 8 bowls. Garnish each serving with 1/4 cup cabbage, about 2 teaspoons cilantro, about 2 teaspoons radishes, about 2 teaspoons green onions, and 1 lime wedge.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3/4 pound dried White corn hominy\",\n        \"2 teaspoons Canola oil\",\n        \"8 ounces boneless Pork loin cut into 1/2-inch pieces \",\n        \"1 cup chopped Onion \",\n        \"2 teaspoons dried Oregano\",\n        \"3/4 teaspoon Salt\",\n        \"2 Garlic cloves minced\",\n        \"1 Bay leaf\",\n        \"3 cups Water\",\n        \"3 cans fat-free less-sodium Chicken broth\",\n        \"2 dried New Mexican chiles\",\n        \"2 cups shredded Cabbage\",\n        \"1/3 cup chopped fresh Cilantro\",\n        \"1/3 cup slivered Radishes\",\n        \"1/3 cup chopped Green onions \", \n\t\t\"8 lime wedges\"\n      ],\n    \"key\" : 6005,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Posole\",\n    \"tileImage\" : \"images/Mexican/Mexican_6_150_C.jpg\",\n    \"title\" : \"Posole\"\n  }\n]"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/DataModel/BindableBase.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Implementation of <see cref=\"INotifyPropertyChanged\"/> to simplify models.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        /// <summary>\n        /// Multicast event for property change notifications.\n        /// </summary>\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        /// <summary>\n        /// Checks if a property already matches a desired value.  Sets the property and\n        /// notifies listeners only when necessary.\n        /// </summary>\n        /// <typeparam name=\"T\">Type of the property.</typeparam>\n        /// <param name=\"storage\">Reference to a property with both getter and setter.</param>\n        /// <param name=\"value\">Desired value for the property.</param>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers that\n        /// support CallerMemberName.</param>\n        /// <returns>True if the value was changed, false if the existing value matched the\n        /// desired value.</returns>\n        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)\n        {\n            if (object.Equals(storage, value)) return false;\n\n            storage = value;\n            this.OnPropertyChanged(propertyName);\n            return true;\n        }\n\n        /// <summary>\n        /// Notifies listeners that a property value has changed.\n        /// </summary>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers\n        /// that support <see cref=\"CallerMemberNameAttribute\"/>.</param>\n        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)\n        {\n            var eventHandler = this.PropertyChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/DataModel/RecipeDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing System.Net.Http;\nusing Windows.Data.Json;\nusing Windows.ApplicationModel;\nusing System.Threading.Tasks;\nusing Windows.Storage;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"RecipeDataItem\"/> and <see cref=\"RecipeDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class RecipeDataCommon : BindableBase\n    {\n        public Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public RecipeDataCommon(String uniqueId, String title, String shortTitle, String imagePath)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._shortTitle = shortTitle;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _shortTitle = string.Empty;\n        public string ShortTitle\n        {\n            get { return this._shortTitle; }\n            set { this.SetProperty(ref this._shortTitle, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n\n        public Uri ImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._imagePath);\n            }\n        }\n\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(_baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n\n        public string GetImageUri()\n        {\n            return _imagePath;\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class UserPhotoDataItem : RecipeDataCommon\n    {\n        public new Uri _baseUri = new Uri(\"ms-appdata:///local/\");\n\n        public UserPhotoDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class RecipeDataItem : RecipeDataCommon\n    {\n        public RecipeDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n            // HACK - just initialize the User Photos evrytime we start the app\n            UserPhotos = new ObservableCollection<UserPhotoDataItem>();\n        }\n\n        public RecipeDataItem(String uniqueId, String title, String shortTitle, String imagePath, int preptime, String directions, ObservableCollection<string> ingredients, RecipeDataGroup group)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n            this._preptime = preptime;\n            this._directions = directions;\n            this._ingredients = ingredients;\n            this._group = group;\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private ObservableCollection<string> _ingredients;\n        public ObservableCollection<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private ObservableCollection<UserPhotoDataItem> _userphotos;\n        public ObservableCollection<UserPhotoDataItem> UserPhotos\n        {\n            get { return this._userphotos; }\n            set { this.SetProperty(ref this._userphotos, value); }\n        }\n        private RecipeDataGroup _group;\n        public RecipeDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n\n        private ImageSource _tileImage;\n        private string _tileImagePath;\n\n        public Uri TileImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._tileImagePath);\n            }\n        }\n\n        public ImageSource TileImage\n        {\n            get\n            {\n                if (this._tileImage == null && this._tileImagePath != null)\n                {\n                    this._tileImage = new BitmapImage(new Uri(_baseUri, this._tileImagePath));\n                }\n                return this._tileImage;\n            }\n            set\n            {\n                this._tileImagePath = null;\n                this.SetProperty(ref this._tileImage, value);\n            }\n        }\n\n        public void SetTileImage(String path)\n        {\n            this._tileImage = null;\n            this._tileImagePath = path;\n            this.OnPropertyChanged(\"TileImage\");\n        }\n    }\n\n    /// <summary>\n    /// Recipe group data model.\n    /// </summary>\n    public class RecipeDataGroup : RecipeDataCommon\n    {\n        public RecipeDataGroup()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n\n        public RecipeDataGroup(String uniqueId, String title, String shortTitle, String imagePath, String description)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n        }\n\n        private ObservableCollection<RecipeDataItem> _items = new ObservableCollection<RecipeDataItem>();\n        public ObservableCollection<RecipeDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<RecipeDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _groupImage;\n        private string _groupImagePath;\n\n        public ImageSource GroupImage\n        {\n            get\n            {\n                if (this._groupImage == null && this._groupImagePath != null)\n                {\n                    this._groupImage = new BitmapImage(new Uri(_baseUri, this._groupImagePath));\n                }\n                return this._groupImage;\n            }\n            set\n            {\n                this._groupImagePath = null;\n                this.SetProperty(ref this._groupImage, value);\n            }\n        }\n\n        public int RecipesCount\n        {\n            get\n            {\n                return this.Items.Count;\n            }\n        }\n\n        public void SetGroupImage(String path)\n        {\n            this._groupImage = null;\n            this._groupImagePath = path;\n            this.OnPropertyChanged(\"GroupImage\");\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items.\n    /// </summary>\n    public sealed class RecipeDataSource\n    {\n        //public event EventHandler RecipesLoaded;\n\n        private static RecipeDataSource _recipeDataSource = new RecipeDataSource();\n\n        private ObservableCollection<RecipeDataGroup> _allGroups = new ObservableCollection<RecipeDataGroup>();\n        public ObservableCollection<RecipeDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static async Task<IEnumerable<RecipeDataGroup>> GetGroupsAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _recipeDataSource.AllGroups;\n        }\n\n        public static async Task<RecipeDataGroup> GetGroupAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static async Task<RecipeDataItem> GetItemAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        private static async Task EnsureRecipeDataLoaded()\n        {\n            if (_recipeDataSource == null || _recipeDataSource.AllGroups.Count == 0)\n                await _recipeDataSource.LoadLocalDataAsync();\n\n            return;\n        }\n\n        public async Task LoadLocalDataAsync()\n        {\n            // Retrieve recipe data from Recipes.txt\n            var file = await Package.Current.InstalledLocation.GetFileAsync(\"Data\\\\Recipes.txt\");\n            var result = await FileIO.ReadTextAsync(file);\n\n            // Parse the JSON recipe data\n            var recipes = JsonArray.Parse(result);\n\n            // Convert the JSON objects into RecipeDataItems and RecipeDataGroups\n            CreateRecipesAndRecipeGroups(recipes);\n        }\n\n        private static void CreateRecipesAndRecipeGroups(JsonArray array)\n        {\n            foreach (var item in array)\n            {\n                var obj = item.GetObject();\n                RecipeDataItem recipe = new RecipeDataItem();\n                RecipeDataGroup group = null;\n\n                foreach (var key in obj.Keys)\n                {\n                    IJsonValue val;\n                    if (!obj.TryGetValue(key, out val))\n                        continue;\n\n                    switch (key)\n                    {\n                        case \"key\":\n                            recipe.UniqueId = val.GetNumber().ToString();\n                            break;\n                        case \"title\":\n                            recipe.Title = val.GetString();\n                            break;\n                        case \"shortTitle\":\n                            recipe.ShortTitle = val.GetString();\n                            break;\n                        case \"preptime\":\n                            recipe.PrepTime = (int)val.GetNumber();\n                            break;\n                        case \"directions\":\n                            recipe.Directions = val.GetString();\n                            break;\n                        case \"ingredients\":\n                            var ingredients = val.GetArray();\n                            var list = (from i in ingredients select i.GetString()).ToList();\n                            recipe.Ingredients = new ObservableCollection<string>(list);\n                            break;\n                        case \"backgroundImage\":\n                            recipe.SetImage(val.GetString());\n                            break;\n                        case \"tileImage\":\n                            recipe.SetTileImage(val.GetString());\n                            break;\n                        case \"group\":\n                            var recipeGroup = val.GetObject();\n\n                            IJsonValue groupKey;\n                            if (!recipeGroup.TryGetValue(\"key\", out groupKey))\n                                continue;\n\n                            group = _recipeDataSource.AllGroups.FirstOrDefault(c => c.UniqueId.Equals(groupKey.GetString()));\n\n                            if (group == null)\n                                group = CreateRecipeGroup(recipeGroup);\n\n                            recipe.Group = group;\n                            break;\n                    }\n                }\n\n                if (group != null)\n                    group.Items.Add(recipe);\n            }\n        }\n\n        private static RecipeDataGroup CreateRecipeGroup(JsonObject obj)\n        {\n            RecipeDataGroup group = new RecipeDataGroup();\n\n            foreach (var key in obj.Keys)\n            {\n                IJsonValue val;\n                if (!obj.TryGetValue(key, out val))\n                    continue;\n\n                switch (key)\n                {\n                    case \"key\":\n                        group.UniqueId = val.GetString();\n                        break;\n                    case \"title\":\n                        group.Title = val.GetString();\n                        break;\n                    case \"shortTitle\":\n                        group.ShortTitle = val.GetString();\n                        break;\n                    case \"description\":\n                        group.Description = val.GetString();\n                        break;\n                    case \"backgroundImage\":\n                        group.SetImage(val.GetString());\n                        break;\n                    case \"groupImage\":\n                        group.SetGroupImage(val.GetString());\n                        break;\n                }\n            }\n\n            _recipeDataSource.AllGroups.Add(group);\n            return group;\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/DataModel/SampleDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.ApplicationModel.Resources.Core;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"SampleDataItem\"/> and <see cref=\"SampleDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class SampleDataCommon : BindableBase\n    {\n        private static Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public SampleDataCommon(String uniqueId, String title, String subtitle, String imagePath, String description)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._subtitle = subtitle;\n            this._description = description;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _subtitle = string.Empty;\n        public string Subtitle\n        {\n            get { return this._subtitle; }\n            set { this.SetProperty(ref this._subtitle, value); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(SampleDataCommon._baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n    }\n\n    /// <summary>\n    /// Generic item data model.\n    /// </summary>\n    public class SampleDataItem : SampleDataCommon\n    {\n        public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, int prepTime, String description, IEnumerable<string> ingredients, String content, SampleDataGroup group)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n            this._content = content;\n            this._group = group;\n            this._preptime = prepTime;\n            this._directions = description;\n            this._ingredients = ingredients;\n        }\n\n        private string _content = string.Empty;\n        public string Content\n        {\n            get { return this._content; }\n            set { this.SetProperty(ref this._content, value); }\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private IEnumerable<string> _ingredients;\n        public IEnumerable<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private SampleDataGroup _group;\n        public SampleDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n    }\n\n    /// <summary>\n    /// Generic group data model.\n    /// </summary>\n    public class SampleDataGroup : SampleDataCommon\n    {\n        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n        }\n\n        private ObservableCollection<SampleDataItem> _items = new ObservableCollection<SampleDataItem>();\n        public ObservableCollection<SampleDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<SampleDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items with hard-coded content.\n    /// </summary>\n    public sealed class SampleDataSource\n    {\n        private static SampleDataSource _sampleDataSource = new SampleDataSource();\n\n        private ObservableCollection<SampleDataGroup> _allGroups = new ObservableCollection<SampleDataGroup>();\n        public ObservableCollection<SampleDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static IEnumerable<SampleDataGroup> GetGroups(string uniqueId)\n        {\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _sampleDataSource.AllGroups;\n        }\n\n        public static SampleDataGroup GetGroup(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static SampleDataItem GetItem(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public SampleDataSource()\n        {\n            String ITEM_CONTENT = String.Format(\"Item Content: {0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\",\n                        \"Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\");\n            IEnumerable<string> ITEM_INGREDIENTS = new string[] { \"Curabitur\", \"aliquam\", \"vestibulum\", \"nam \", \"curae\", \"maecenas\" };\n\n            var group1 = new SampleDataGroup(\"Group-1\",\n                    \"Group Title: 1\",\n                    \"Group Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    25,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-2\",\n                    \"Item Title: 2 but this one has a long name\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    30,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    40,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            this.AllGroups.Add(group1);\n\n            var group2 = new SampleDataGroup(\"Group-2\",\n                    \"Group Title: 2\",\n                    \"Group Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/MediumGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    47,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            this.AllGroups.Add(group2);\n\n            var group3 = new SampleDataGroup(\"Group-3\",\n                    \"Group Title: 3\",\n                    \"Group Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/MediumGray.png\",\n                    10,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    66,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    11,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            this.AllGroups.Add(group3);\n\n            var group4 = new SampleDataGroup(\"Group-4\",\n                    \"Group Title: 4\",\n                    \"Group Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    13,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    14,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    16,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    17,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/LightGray.png\",\n                    18,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            this.AllGroups.Add(group4);\n\n            var group5 = new SampleDataGroup(\"Group-5\",\n                    \"Group Title: 5\",\n                    \"Group Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    20,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    23,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/MediumGray.png\",\n                    45,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            this.AllGroups.Add(group5);\n\n            var group6 = new SampleDataGroup(\"Group-6\",\n                    \"Group Title: 6\",\n                    \"Group Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    55,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    7,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    33,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/LightGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/MediumGray.png\",\n                    36,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-8\",\n                    \"Item Title: 8\",\n                    \"Item Subtitle: 8\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            this.AllGroups.Add(group6);\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/GroupDetailPage.xaml",
    "content": "﻿<Page\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\" \n    xmlns:Controls=\"using:Template10.Controls\"\n    x:Class=\"ContosoCookbook.GroupDetailPage\" \n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Mode=Self}}\"\n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <DataTemplate x:Key=\"PivotTitleTemplate\">\n            <Grid>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\"/>\n                    <ColumnDefinition/>\n                </Grid.ColumnDefinitions>\n                <Controls:BackButton />\n                <TextBlock Text=\"Contoso Cookbook\" Grid.Column=\"1\"/>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" \n\t\t\tDataContext=\"{Binding Group}\"\n\t\t\td:DataContext=\"{Binding AllGroups[0], Source={d:DesignInstance IsDesignTimeCreatable=True, Type=data:SampleDataSource}}\" \n\t\t\tTitleTemplate=\"{StaticResource PivotTitleTemplate}\" \n               >\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"GroupDetailsPivotItem\" Header=\"{Binding Title}\">\n                <Grid x:Name=\"PivotLayoutGrid\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"220\"/>\n                        <RowDefinition/>\n                    </Grid.RowDefinitions>\n                    <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" x:Name=\"img\" Grid.Column=\"0\" \n\t\t\t\t\t\tHorizontalAlignment=\"Left\"/>\n                    <StackPanel Orientation=\"Horizontal\" Margin=\"0,0,5,5\" \n\t\t\t\t\t\tHorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\">\n                        <TextBlock Text=\"Total Recipes: \" Style=\"{StaticResource BodyTextBlockStyle}\"\n\t\t\t\t\t\t\tForeground=\"{ThemeResource AccentBrush}\"/>\n                        <TextBlock Text=\"{Binding RecipesCount}\" Style=\"{StaticResource BodyTextBlockStyle}\" \n\t\t\t\t\t\t\tForeground=\"{ThemeResource AccentBrush}\" Margin=\"10,0,0,0\"/>\n                    </StackPanel>\n                    <ScrollViewer x:Name=\"DescriptionScrollViewer\" Grid.Row=\"1\" Margin=\"0,10,0,0\">\n                        <TextBlock Text=\"{Binding Description}\" TextWrapping=\"Wrap\" HorizontalAlignment=\"Left\" \n\t\t\t\t\t\t\tStyle=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                    </ScrollViewer>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"GroupRecipesPivotItem\" Header=\"recipes\">\n                <!--Double line list no text wrapping-->\n                <ListView x:Name=\"lstRecipes\"  ItemsSource=\"{Binding Items}\" SelectionChanged=\"lstRecipes_SelectionChanged\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"160\"/>\n                                    <ColumnDefinition Width=\"*\"/>\n                                </Grid.ColumnDefinitions>\n                                <Image Source=\"{Binding Image}\" Width=\"150\" Stretch=\"UniformToFill\" HorizontalAlignment=\"Left\" \n\t\t\t\t\t\t\t\t\tMargin=\"0,0,0,10\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\"/>\n                                <StackPanel Margin=\"10,0,0,0\" Grid.Column=\"1\">\n                                    <TextBlock Text=\"{Binding Title}\"  \n\t\t\t\t\t\t\t\t\t\tPivot.SlideInAnimationGroup=\"1\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\" \n\t\t\t\t\t\t\t\t\t\tFontSize=\"18\" TextWrapping=\"WrapWholeWords\" MaxLines=\"3\"/>\n                                    <StackPanel Grid.Column=\"1\" Orientation=\"Horizontal\" Pivot.SlideInAnimationGroup=\"2\"\n\t\t\t\t\t\t\t\t\t\tCommonNavigationTransitionInfo.IsStaggerElement=\"True\" VerticalAlignment=\"Top\" Margin=\"0,5,0,0\">\n                                        <TextBlock Text=\"Prep time: \" Style=\"{StaticResource CaptionTextBlockStyle}\" />\n                                        <TextBlock Text=\"{Binding PrepTime}\" Style=\"{StaticResource CaptionTextBlockStyle}\" \n\t\t\t\t\t\t\t\t\t\t\tMargin=\"10,0,0,0\"/>\n                                    </StackPanel>\n                                </StackPanel>\n                            </Grid>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n        </Pivot>\n     </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/GroupDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class GroupDetailPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public GroupDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var group = await RecipeDataSource.GetGroupAsync((string)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = group;\n\n            lstRecipes.SelectedItem = null;\n        }\n\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void lstRecipes_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (e.AddedItems.Count > 0)\n            {\n                var itemId = ((RecipeDataItem)e.AddedItems[0]).UniqueId;\n                this.Frame.Navigate(typeof(RecipeDetailPage), itemId);\n            }\n        }\n\n        private void AppBarButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (Frame.CanGoBack)\n            {\n                Frame.GoBack();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    xmlns:animation=\"using:Windows.UI.Xaml.Media.Animation\"\n    mc:Ignorable=\"d\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    d:DataContext=\"{d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}\">\n\n    <Page.Resources>\n        <DataTemplate x:Key=\"RecipeGroupDataTemplate\">\n            <Grid Margin=\"20, 0, 0, 10\" >\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"3*\"/>\n                    <ColumnDefinition Width=\"7*\"/>\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition/>\n                    <RowDefinition/>\n                </Grid.RowDefinitions>\n                <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" Grid.RowSpan=\"2\"/>\n                <TextBlock Text=\"{Binding Title}\"  Grid.Column=\"1\" Grid.Row=\"0\" \n\t\t\t\t           Style=\"{StaticResource HeaderTextBlockStyle}\" FontSize=\"24\" Margin=\"10,0,0,0\"/>\n                <TextBlock Text=\"{Binding Description}\" Grid.Column=\"1\" Grid.Row=\"1\" \n\t\t\t\t           Style=\"{StaticResource BodyTextBlockStyle}\" TextWrapping=\"NoWrap\" \n                           TextTrimming=\"CharacterEllipsis\"  Margin=\"10,0,0,0\"/>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Page.BottomAppBar>\n        <CommandBar ClosedDisplayMode=\"Minimal\">\n            <CommandBar.SecondaryCommands>\n                <AppBarButton x:Uid=\"AboutButton\" Label=\"about\" Click=\"About_Click\"/>\n            </CommandBar.SecondaryCommands>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"RegionsPageHeader\" Text=\"regions\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <ListView x:Name=\"groupListView\" \n                      ItemsSource=\"{Binding AllGroups}\"\n                      SelectionChanged=\"lstGroups_SelectionChanged\" \n                      ItemTemplate=\"{StaticResource RecipeGroupDataTemplate}\"/>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/MainPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var recipeDataGroups = await RecipeDataSource.GetGroupsAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"AllGroups\"] = recipeDataGroups;\n\n            groupListView.SelectedItem = null;\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void About_Click(object sender, RoutedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(AboutPage));\n        }\n\n        private void lstGroups_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(GroupDetailPage), (groupListView.SelectedItem as RecipeDataGroup).UniqueId);\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n  <Identity Name=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" Publisher=\"CN=Andy\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>ContosoCookbook</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"ContosoCookbook.App\">\n      <uap:VisualElements DisplayName=\"ContosoCookbook\" Square150x150Logo=\"Assets\\Logo.png\" Square44x44Logo=\"Assets\\SmallLogo.png\" Description=\"ContosoCookbook\"  BackgroundColor=\"#464646\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        <!--Used in XAML Designer. DO NOT REMOVE-->\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n    <uap:Capability Name=\"picturesLibrary\" />\n    <DeviceCapability Name=\"webcam\" />\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ContosoCookbook\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ContosoCookbook\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/RecipeDetailPage.xaml",
    "content": "﻿<Page\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    xmlns:triggers=\"using:ContosoCookbook.Triggers\"\n    xmlns:Controls=\"using:Template10.Controls\"\n    x:Class=\"ContosoCookbook.RecipeDetailPage\"\n    mc:Ignorable=\"d\"\n    d:DataContext=\"{Binding AllGroups[1].Items[1], Source={d:DesignInstance IsDesignTimeCreatable=True, Type=data:SampleDataSource}}\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Mode=Self}}\">\n    <Page.Resources>\n        <DataTemplate x:Key=\"PivotTitleTemplate\">\n            <Grid>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\"/>\n                    <ColumnDefinition/>\n                </Grid.ColumnDefinitions>\n                <TextBlock Text=\"Contoso Cookbook\" Grid.Column=\"1\"/>\n                <Controls:BackButton/>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton x:Name=\"btnPinToStart\" Icon=\"Pin\" Click=\"btnPinToStart_Click\" Label=\"Like\"/>\n            <AppBarButton x:Name=\"btnReminderTimer\" Icon=\"Clock\" Label=\"timer\" Click=\"btnReminderTimer_Click\"/>\n            <AppBarButton x:Name=\"btnTakePhoto\" Icon=\"Camera\" Label=\"nailed it!\" Click=\"btnPhoto_Click\"/>\n            <AppBarButton x:Name=\"btnShare\" Icon=\"ReShare\" Label=\"share\" Click=\"btnShare_Click\"/>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n\t\tDataContext=\"{Binding Item}\" d:DataContext=\"{Binding}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" \n\t\t\tTitleTemplate=\"{StaticResource PivotTitleTemplate}\" >\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"RecipeDetailsPivotItem\" Header=\"recipe\" >\n                <Grid x:Name=\"RecipePanel\" Grid.Row=\"1\" >\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"Auto\"/>\n                        <RowDefinition Height=\"110*\"/>\n                        <RowDefinition Height=\"155*\"/>\n                        <RowDefinition Height=\"Auto\"/>\n                    </Grid.RowDefinitions>\n                    <TextBlock Text=\"{Binding Title}\" Style=\"{ThemeResource BodyTextBlockStyle}\" \n\t\t\t\t\t\tForeground=\"{StaticResource AccentBrush}\" FontSize=\"{StaticResource TextStyleExtraLargeFontSize}\" \n\t\t\t\t\t\tMargin=\"0,0,0,5\"/>\n                    <Image Source=\"{Binding ImagePath}\" Stretch=\"UniformToFill\" Grid.Row=\"1\"/>\n                    <ScrollViewer Grid.Row=\"2\" Margin=\"0,10\">\n                        <TextBlock x:Name=\"InstructionsTextBlock\" TextWrapping=\"WrapWholeWords\" \n\t\t\t\t\t\t\tStyle=\"{StaticResource BodyTextBlockStyle}\"\n\t\t\t\t\t\t\tText=\"{Binding Directions}\"/>\n                    </ScrollViewer>\n                    <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\" >\n                        <TextBlock Text=\"Prep time:\" Style=\"{StaticResource BodyTextBlockStyle}\"\n\t\t\t\t\t\t\tForeground=\"{StaticResource AccentBrush}\"/>\n                        <TextBlock x:Name=\"PrepTimeTextBlock\" Text=\"{Binding PrepTime}\" Style=\"{StaticResource BodyTextBlockStyle}\" Margin=\"10,0,0,10\"/>\n                    </StackPanel>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"RecipeIngredientsPivotItem\" Header=\"ingredients\">\n                <ListView ItemsSource=\"{Binding Ingredients}\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Mode=OneWay}\" Style=\"{ThemeResource BodyTextBlockStyle}\"/>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n\n            <!--Pivot item three-->\n            <PivotItem x:Name=\"PicsPivot\" Header=\"notes\">\n                <Grid>\n                    <TextBlock Text=\"No images found.\"  HorizontalAlignment=\"Center\"\n\t\t\t\t\t\tVisibility=\"{Binding UserImages, Converter={StaticResource ImagesDisplayConverter}}\"  VerticalAlignment=\"Center\" />\n                    <ListBox x:Name=\"listUserPictures\" ItemsSource=\"{Binding UserPhotos}\">\n                        <ListBox.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <VirtualizingStackPanel Orientation=\"Vertical\"/>\n                            </ItemsPanelTemplate>\n                        </ListBox.ItemsPanel>\n                        <ListBox.ItemTemplate>\n                            <DataTemplate>\n                                <Grid>\n                                    <Image Source=\"{Binding Image}\" Margin=\"5\"/>\n                                    <Rectangle Fill=\"#33FFFFFF\" Height=\"50\" VerticalAlignment=\"Bottom\"/>\n                                    <StackPanel Orientation=\"Horizontal\" Margin=\"5\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" >\n                                        <TextBlock Text=\"{Binding Converter={StaticResource ToStringConverter}}\" Margin=\"10,0,0,5\" Style=\"{ThemeResource HeaderTextBlockStyle}\" />\n                                    </StackPanel>\n                                </Grid>\n                            </DataTemplate>\n                        </ListBox.ItemTemplate>\n                    </ListBox>\n                </Grid>\n            </PivotItem>\n\n        </Pivot>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/RecipeDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel.Activation;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\nusing Windows.Storage.Streams;\nusing Windows.UI.Notifications;\nusing Windows.UI.Popups;\nusing Windows.UI.StartScreen;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class RecipeDetailPage : Page\n    {\n        private RecipeDataItem item;\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public RecipeDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            item = await RecipeDataSource.GetItemAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = item.Group;\n            this.DefaultViewModel[\"Item\"] = item;\n\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n\n            DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested;\n        }\n\n        private async void OnShareDataRequested(DataTransferManager sender, DataRequestedEventArgs args)\n        {\n            DataRequest request = args.Request;\n            var deferral = args.Request.GetDeferral();\n\n            try\n            {\n                Uri photoFileUri = new Uri(new Uri(\"ms-appdata:///local/\"), item.UserPhotos[0].Title);\n                var photoFile = await StorageFile.GetFileFromApplicationUriAsync(photoFileUri);\n\n                request.Data.Properties.Title = \"I've been baking!\";\n                request.Data.Properties.Description = \"This was my attempt at making \" + item.ShortTitle;\n\n                // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image\n                // since the target app may only support one or the other.\n                List<IStorageItem> imageItems = new List<IStorageItem>();\n                imageItems.Add(photoFile);\n                request.Data.SetStorageItems(imageItems);\n\n                RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(photoFile);\n                // It is recommended that you always add a thumbnail image any time you're sharing an image\n                request.Data.Properties.Thumbnail = imageStreamRef;\n                request.Data.SetBitmap(imageStreamRef);\n\n                // Set Text to share for those targets that can't accept images\n                request.Data.SetText(\"I just made \" + item.ShortTitle + \" from Contoso Cookbook!\");\n            }\n            finally\n            {\n                deferral.Complete();\n            }\n        }\n\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private async void btnPinToStart_Click(object sender, RoutedEventArgs e)\n        {\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n            {\n                var tile = new SecondaryTile(item.UniqueId);\n                await tile.RequestDeleteAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.Pin);\n            }\n            else\n            {\n                var uri = new Uri(item.TileImagePath.AbsoluteUri);\n\n                var tile = new SecondaryTile(\n                        item.UniqueId,              // Tile ID\n                        item.ShortTitle,            // Tile short name\n                        item.UniqueId,              // Activation argument\n                        uri,                        // Tile logo URI\n                        TileSize.Square150x150\n                    );\n\n                await tile.RequestCreateAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n            }\n        }\n\n        private async void btnReminderTimer_Click(object sender, RoutedEventArgs e)\n        {\n            var notifier = ToastNotificationManager.CreateToastNotifier();\n\n            // Make sure notifications are enabled\n            if (notifier.Setting != NotificationSetting.Enabled)\n            {\n                var dialog = new MessageDialog(\"Notifications are currently disabled\");\n                await dialog.ShowAsync();\n                return;\n            }\n\n            // Get a toast template and insert a text node containing a message\n            var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n            var element = template.GetElementsByTagName(\"text\")[0];\n            element.AppendChild(template.CreateTextNode(\"Reminder!\"));\n\n            // Schedule the toast to appear 30 seconds from now\n            var date = DateTimeOffset.Now.AddSeconds(30);\n            var stn = new ScheduledToastNotification(template, date);\n            notifier.AddToSchedule(stn);\n        }\n\n        private void btnShare_Click(object sender, RoutedEventArgs e)\n        {\n            if (item.UserPhotos == null || item.UserPhotos.Count == 0)\n            {\n                var i = new MessageDialog(\"You must insert a picture first!\").ShowAsync();\n            }\n            else\n            {\n                DataTransferManager.ShowShareUI();\n            }\n        }\n\n        private async void btnPhoto_Click(object sender, RoutedEventArgs e)\n        {\n            FileOpenPicker openPicker = new FileOpenPicker();\n            openPicker.ViewMode = PickerViewMode.Thumbnail;\n            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;\n            openPicker.FileTypeFilter.Add(\".jpg\");\n            openPicker.FileTypeFilter.Add(\".jpeg\");\n            openPicker.FileTypeFilter.Add(\".png\");\n\n            StorageFile file = await openPicker.PickSingleFileAsync();\n\n            if (file != null)\n            {\n                var destFile = await file.CopyAsync(Windows.Storage.ApplicationData.Current.LocalFolder, file.Name, NameCollisionOption.ReplaceExisting);\n                var userPhoto = new UserPhotoDataItem() { Title = destFile.Name};\n                userPhoto.SetImage(destFile.Path);\n                item.UserPhotos.Add(userPhoto);\n            }\n        }\n\n        private void AppBarButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (Frame.CanGoBack)\n                Frame.GoBack();\n        }\n    }\n}\n"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook/Strings/en-US/Resources.resw",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutButton.Label\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AboutPageHeader\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AppLimitation.Text\" xml:space=\"preserve\">\n    <value>All Rights Reserved</value>\n  </data>\n  <data name=\"AppName.Text\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"AppRights.Text\" xml:space=\"preserve\">\n    <value>Copyright © Microsoft 2014</value>\n  </data>\n  <data name=\"AppVersion.Text\" xml:space=\"preserve\">\n    <value>Version 1.0</value>\n  </data>\n  <data name=\"GroupRecipesPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipes</value>\n  </data>\n  <data name=\"Pivot.Title\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"PivotItem1.Header\" xml:space=\"preserve\">\n    <value>item1</value>\n  </data>\n  <data name=\"PivotItem2.Header\" xml:space=\"preserve\">\n    <value>item2</value>\n  </data>\n  <data name=\"PublishedByText.Text\" xml:space=\"preserve\">\n    <value>Published by:</value>\n  </data>\n  <data name=\"RecipeDetailsPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipe</value>\n  </data>\n  <data name=\"RecipeIngredientsPivotItem.Header\" xml:space=\"preserve\">\n    <value>ingredients</value>\n  </data>\n  <data name=\"RegionsPageHeader\" xml:space=\"preserve\">\n    <value>regions</value>\n  </data>\n  <data name=\"VersionText.Text\" xml:space=\"preserve\">\n    <value>Version:</value>\n  </data>\n</root>"
  },
  {
    "path": "MigrationDemo/End/ContosoCookbook/ContosoCookbook.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ContosoCookbook\", \"ContosoCookbook\\ContosoCookbook.csproj\", \"{E977916E-3C97-485A-96FC-0D214F6FC9E3}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Build.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Build.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.ActiveCfg = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Build.0 = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Navigation/Blank1/ViewModels/Page2ViewModel.cs",
    "content": "﻿using Blank1.Mvvm;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.ViewModels\n{\n    class Page2ViewModel: ViewModelBase\n    {\n        public Page2ViewModel()\n        {\n            this.Parameter = \"Set from constructor\";\n        }\n\npublic override void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state)\n{\n    this.Parameter = parameter?.ToString() ?? \"Empty\";\n}\n\n        private string _Parameter = default(string);\n        public string Parameter { get { return _Parameter; } set { Set(ref _Parameter, value); } }\n    }\n}\n"
  },
  {
    "path": "Navigation/Blank1/Views/MainPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace Blank1.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            InitializeComponent();\n            this.DataContextChanged += (s, e) => ViewModel = DataContext as ViewModels.MainPageViewModel;\n        }\n\n        // strongly-typed view models enable x:bind\n        public ViewModels.MainPageViewModel ViewModel { get; set; }\n\nprivate void Goto2(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n{\n    var app = App.Current as Common.BootStrapper;\n    var nav = app.NavigationService;\n    nav.Navigate(typeof(Views.Page2), parameterTextBox.Text);\n}\n    }\n}"
  },
  {
    "path": "Performance/Performance/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"Template10.App\" xmlns:common=\"using:Template10.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:Template10.Converters\"\n                     xmlns:local=\"using:Template10\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "Performance/Performance/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\n\nnamespace Template10\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnInitializeAsync()\n        {\n            // use splitview shell\n            Window.Current.Content = new Views.ShellPage(this.RootFrame);\n            return base.OnInitializeAsync();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.DeferedPhasePage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "Performance/Performance/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace Template10.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace Template10.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Template10.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "Performance/Performance/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"08968ce9-45d0-4986-a681-6e980538529f\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"08968ce9-45d0-4986-a681-6e980538529f\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Performance</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Performance.App\">\n      <uap:VisualElements\n        DisplayName=\"Performance\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Performance\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "Performance/Performance/Performance.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{A21E27D9-1CB0-4758-B1CC-420A851C1821}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Performance_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"ViewModels\\IncrementalAccessPageViewModel.cs\" />\n    <Compile Include=\"Virtualize\\IncrementalList.cs\" />\n    <Compile Include=\"Virtualize\\IProvider.cs\" />\n    <Compile Include=\"Virtualize\\RandomAccessList.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\RandomAccessPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"Views\\DeferedPhasePage.xaml.cs\">\n      <DependentUpon>DeferedPhasePage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\IncrementalAccessPage.xaml.cs\">\n      <DependentUpon>IncrementalAccessPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\RandomAccessPage.xaml.cs\">\n      <DependentUpon>RandomAccessPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ShellPage.xaml.cs\">\n      <DependentUpon>ShellPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Virtualize\\TodoItemViewModelProvider.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"Performance_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\DeferedPhasePage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\IncrementalAccessPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\RandomAccessPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\ShellPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Performance/Performance/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TODO\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TODO\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Performance/Performance/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "Performance/Performance/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Models;\n\nnamespace Template10.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "Performance/Performance/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "Performance/Performance/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "Performance/Performance/ViewModels/IncrementalAccessPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Template10.Virtualize;\n\nnamespace Template10.ViewModels\n{\n    public class IncrementalAccessPageViewModel : Mvvm.ViewModelBase\n    {\n        public IncrementalAccessPageViewModel()\n        {\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                var repo = new Repositories.TodoItemRepository();\n                foreach (var item in repo.Sample())\n                {\n                    this.Items.Add(new ViewModels.TodoItemViewModel(item));\n                }\n            }\n            else\n            {\n                this.Items.Provider.PropertyChanged += (s, e) =>\n                {\n                    if (e.PropertyName.Equals(nameof(Busy)))\n                        this.Busy = this.Items.Provider.Busy;\n                };\n            }\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        IncrementalList<TodoItemViewModel> _items = new IncrementalList<TodoItemViewModel>(new TodoItemViewModelProvider());\n        public IncrementalList<TodoItemViewModel> Items { get { return _items; } set { Set(ref _items, value); } }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/ViewModels/RandomAccessPageViewModel.cs",
    "content": "﻿namespace Template10.ViewModels\n{\n    using Template10.Virtualize;\n\n    class RandomAccessPageViewModel : Mvvm.ViewModelBase\n    {\n        public RandomAccessPageViewModel()\n        {\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                var repo = new Repositories.TodoItemRepository();\n                foreach (var item in repo.Sample())\n                {\n                    this.Items.Add(new ViewModels.TodoItemViewModel(item));\n                }\n            }\n            else\n            {\n                this.Items.Provider.PropertyChanged += (s, e) =>\n                {\n                    if (e.PropertyName.Equals(nameof(Busy)))\n                        this.Busy = this.Items.Provider.Busy;\n                };\n            }\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        RandomAccessList<TodoItemViewModel> _items = new RandomAccessList<TodoItemViewModel>(new TodoItemViewModelProvider());\n        public RandomAccessList<TodoItemViewModel> Items { get { return _items; } set { Set(ref _items, value); } }\n    }\n}\n\n"
  },
  {
    "path": "Performance/Performance/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing Template10.Models;\n\nnamespace Template10.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        static int count = 0;\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n            Debug.WriteLine(\"TodoItemViewModel created count [{0}]\", count++);\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Views/DeferedPhasePage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.DeferedPhasePage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "Performance/Performance/Views/DeferedPhasePage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class DeferedPhasePage : Page\n    {\n        public DeferedPhasePage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Views/IncrementalAccessPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.IncrementalAccessPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Template10.ViewModels\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:IncrementalAccessPageViewModel/>\n    </Page.DataContext>\n\n    <Page.Resources>\n        <CollectionViewSource x:Name=\"CVS\" Source=\"{Binding Items}\" />\n    </Page.Resources>\n\n    <Hub Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Header=\"Incremental Access Virtualization\">\n            <DataTemplate>\n                <GridView ItemsSource=\"{Binding Source={StaticResource CVS}}\">\n                    <GridView.ItemTemplate>\n                        <DataTemplate>\n                            <Grid Height=\"200\" Width=\"200\" Background=\"SteelBlue\">\n                                <TextBlock Text=\"{Binding TodoItem.Title}\" />\n                            </Grid>\n                        </DataTemplate>\n                    </GridView.ItemTemplate>\n                </GridView>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n</Page>\n"
  },
  {
    "path": "Performance/Performance/Views/IncrementalAccessPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class IncrementalAccessPage : Page\n    {\n        public IncrementalAccessPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Views/RandomAccessPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.RandomAccessPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Template10.ViewModels\"\n    mc:Ignorable=\"d\">\n    \n    <Page.DataContext>\n        <vm:RandomAccessPageViewModel/>\n    </Page.DataContext>\n    \n    <Page.Resources>\n        <CollectionViewSource x:Name=\"CVS\" Source=\"{Binding Items}\" />\n    </Page.Resources>\n    \n    <Hub Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Header=\"Random Access Virtualization\" Background=\"LightSteelBlue\">\n            <DataTemplate>\n                <GridView ItemsSource=\"{Binding Items}\">\n                    <GridView.ItemTemplate>\n                        <DataTemplate>\n                            <Grid Height=\"200\" Width=\"200\" Background=\"SteelBlue\">\n                                \n                            </Grid>\n                        </DataTemplate>\n                    </GridView.ItemTemplate>\n                </GridView>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n</Page>\n"
  },
  {
    "path": "Performance/Performance/Views/RandomAccessPage.xaml.cs",
    "content": "﻿using System.ComponentModel;\nusing Template10.ViewModels;\nusing Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class RandomAccessPage : Page\n    {\n        public RandomAccessPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Views/ShellPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.ShellPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <SplitView x:Name=\"MySplitView\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n               CompactPaneLength=\"256\" DisplayMode=\"CompactOverlay\">\n        <SplitView.Pane>\n            <StackPanel>\n                <StackPanel.Resources>\n                    <Style TargetType=\"Button\">\n                        <Setter Property=\"Width\" Value=\"256\" />\n                        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\n                        <Setter Property=\"Margin\" Value=\"0,3\" />\n                    </Style>\n                </StackPanel.Resources>\n                <Button Content=\"Random Access Virtualization\" Click=\"Rav_Click\" />\n                <Button Content=\"Incremental Access Virtualization\" Click=\"Iav_Click\" />\n                <Button Content=\"Deferred Phase Rendering\" Click=\"Dpr_Click\" />\n            </StackPanel>\n        </SplitView.Pane>\n    </SplitView>\n</Page>\n"
  },
  {
    "path": "Performance/Performance/Views/ShellPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class ShellPage : Page\n    {\n        Services.NavigationService.NavigationService _navigationService;\n        public ShellPage(Frame frame)\n        {\n            this.InitializeComponent();\n            this.MySplitView.Content = frame;\n            _navigationService = (App.Current as Common.BootStrapper).NavigationService;\n        }\n\n        private void Rav_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            _navigationService.Navigate(typeof(Views.RandomAccessPage));\n        }\n\n        private void Iav_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            _navigationService.Navigate(typeof(Views.IncrementalAccessPage));\n        }\n\n        private void Dpr_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            _navigationService.Navigate(typeof(Views.DeferedPhasePage));\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Virtualize/IProvider.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Virtualize\n{\n    public interface IProvider<T> : INotifyPropertyChanged\n    {\n        int Count { get; }\n        bool Busy { get; set; }\n\n        Task<Dictionary<int, T>> LoadAsync(uint start, int size);\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Virtualize/IncrementalList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing System.ComponentModel;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Virtualize\n{\n    public class IncrementalList<T> : List<T>, ISupportIncrementalLoading, INotifyCollectionChanged, INotifyPropertyChanged\n    {\n        int _pageSize;\n        int _currentPage = 1;\n\n        public event NotifyCollectionChangedEventHandler CollectionChanged;\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public IncrementalList(IProvider<T> provider, int pageSize = 10)\n        {\n            this.Provider = provider;\n            this._pageSize = pageSize;\n        }\n\n        bool _busy;\n        public bool Busy { get { return _busy; } set { if (_busy == value) return; _busy = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Busy))); } }\n\n        public IProvider<T> Provider { get; private set; }\n\n        public bool HasMoreItems { get { return Provider.Count > (_pageSize * _currentPage); } }\n\n        public IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count)\n        {\n            if (Busy)\n                throw new Exception();\n            Busy = true;\n            return AsyncInfo.Run(async (c) =>\n            {\n                try\n                {\n                    var items = await Provider.LoadAsync(count, _pageSize);\n                    foreach (var item in items)\n                        this.Add(item.Value);\n                    CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, items));\n                    return new LoadMoreItemsResult { Count = (uint)items.Count };\n                }\n                finally { Busy = false; }\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/Virtualize/ObservableVector.cs",
    "content": "﻿\nnamespace Template10.Virtualize\n{\n    using System;\n    using System.Collections;\n    using System.Collections.Generic;\n    using System.Collections.ObjectModel;\n    using System.Collections.Specialized;\n    using Windows.Foundation.Collections;\n\n    //NOTE: This a concrete implementation of IObservableVector<T> which will raise change notifications\n    //NOTE: Currently ObservableCollection does not support change notifications \n    // so in the interim please use the extension method ToObservableVector<T>\n    public class ObservableVector<T> : IObservableVector<T>, IList<T>, IEnumerable<T>, IEnumerable\n    {\n        private IList<T> _internalCollection;\n        private ReadOnlyCollection<T> _readOnlyCollection;\n\n        public ObservableVector(INotifyCollectionChanged list)\n        {\n            if (list is IList<T>)\n            {\n                _internalCollection = list as IList<T>;\n                _readOnlyCollection = new ReadOnlyCollection<T>((IList<T>)list);\n            }\n            else\n            {\n                throw new Exception(\"Must implement IList<T>\");\n            }\n        }\n\n        #region IList<object> Members\n\n        public int IndexOf(T item)\n        {\n            return _internalCollection.IndexOf(item);\n        }\n\n        public void Insert(int index, T item)\n        {\n            _internalCollection.Insert(index, item);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemInserted, Index = (uint)index });\n            }\n        }\n\n        public void RemoveAt(int index)\n        {\n            _internalCollection.RemoveAt(index);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemRemoved, Index = (uint)index });\n            }\n        }\n\n        public T this[int index]\n        {\n            get\n            {\n                return _internalCollection[index];\n            }\n            set\n            {\n                _internalCollection[index] = value;\n\n                if (VectorChanged != null)\n                {\n                    VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemChanged, Index = (uint)index });\n                }\n            }\n        }\n\n        #endregion\n\n        #region ICollection<object> Members\n\n        public void Add(T item)\n        {\n            _internalCollection.Add(item);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemInserted, Index = (uint)(_internalCollection.Count - 1) });\n            }\n        }\n\n        public bool Contains(T item)\n        {\n            return _internalCollection.Contains(item);\n        }\n\n        public void CopyTo(T[] array, int arrayIndex)\n        {\n            _internalCollection.CopyTo(array, arrayIndex);\n        }\n\n        public int Count\n        {\n            get\n            {\n                return _internalCollection.Count;\n            }\n        }\n\n        public bool IsReadOnly\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public bool Remove(T item)\n        {\n            int index = _internalCollection.IndexOf(item);\n            bool retVal = _internalCollection.Remove(item);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemRemoved, Index = (uint)index });\n            }\n\n            return retVal;\n        }\n\n        #endregion\n\n        #region IIterable<object> Members\n\n        public Windows.Foundation.Collections.IIterator<object> First()\n        {\n            throw new NotImplementedException();\n        }\n\n        #endregion\n\n        #region IEnumerable Members\n\n        public IEnumerator GetEnumerator()\n        {\n            return _internalCollection.GetEnumerator();\n        }\n\n        #endregion\n\n        #region IEnumerable<object> Members\n\n        IEnumerator<T> IEnumerable<T>.GetEnumerator()\n        {\n            return _internalCollection.GetEnumerator();\n        }\n\n        #endregion\n\n        #region IObservableVector<object> Members\n\n        public event VectorChangedEventHandler<T> VectorChanged;\n\n        #endregion\n\n        #region IVector<object> Members\n\n        public void Append(T value)\n        {\n            _internalCollection.Add(value);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemInserted, Index = (uint)(_internalCollection.Count - 1) });\n            }\n        }\n\n        public void Clear()\n        {\n            _internalCollection.Clear();\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.Reset, Index = 0 });\n            }\n        }\n\n        public object GetAt(uint index)\n        {\n            return _internalCollection[(int)index];\n        }\n\n        public uint GetMany(uint startIndex, object[] items)\n        {\n            throw new NotImplementedException();\n        }\n\n        public IReadOnlyList<T> GetView()\n        {\n            return _readOnlyCollection;\n        }\n\n        public bool IndexOf(T value, out uint index)\n        {\n            index = (uint)_internalCollection.IndexOf(value);\n            return true;\n        }\n\n        public void InsertAt(uint index, T value)\n        {\n            _internalCollection.Insert((int)index, value);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemInserted, Index = index });\n            }\n        }\n\n        public void RemoveAt(uint index)\n        {\n            _internalCollection.RemoveAt((int)index);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemRemoved, Index = index });\n            }\n        }\n\n        public void RemoveAtEnd()\n        {\n            _internalCollection.RemoveAt(_internalCollection.Count - 1);\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemRemoved, Index = (uint)(_internalCollection.Count - 1) });\n            }\n        }\n\n        public void ReplaceAll(object[] items)\n        {\n            throw new NotImplementedException();\n        }\n\n        public void SetAt(uint index, T value)\n        {\n            _internalCollection[(int)index] = value;\n\n            if (VectorChanged != null)\n            {\n                VectorChanged(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemChanged, Index = index });\n            }\n        }\n\n        public uint Size\n        {\n            get\n            {\n                return (uint)_internalCollection.Count;\n            }\n        }\n\n        #endregion\n    }\n\n    public class VectorChangedEventArgs : IVectorChangedEventArgs\n    {\n        #region IVectorChangedEventArgs Members\n\n        public CollectionChange CollectionChange\n        {\n            get;\n            set;\n        }\n\n        public uint Index\n        {\n            get;\n            set;\n        }\n\n        #endregion\n    }\n\n    public static class ObservableVectorExtensionClass\n    {\n        public static ObservableVector<T> ToObservableVector<T>(this INotifyCollectionChanged s)\n        {\n            return new ObservableVector<T>(s);\n        }\n    }\n}\n\n"
  },
  {
    "path": "Performance/Performance/Virtualize/RandomAccessList - Copy.cs",
    "content": "﻿namespace Template10.Virtualize\n{\n    using System;\n    using System.Linq;\n    using System.Diagnostics;\n    using System.ComponentModel;\n    using System.Collections.Generic;\n    using System.Collections.ObjectModel;\n    using Windows.Foundation.Collections;\n    using System.Collections.Specialized;\n\n    public class RandomAccessList<T> : Collection<object>, INotifyPropertyChanged, IObservableVector<object>\n    {\n        public event NotifyCollectionChangedEventHandler CollectionChanged;\n        public event PropertyChangedEventHandler PropertyChanged;\n        public event VectorChangedEventHandler<object> VectorChanged;\n\n        Dictionary<int, T> _cache = new Dictionary<int, T>();\n        Stack<int> _chunks = new Stack<int>();\n        public int _previousIndex = 0;\n        public int _cacheLimit = 100;\n        public int _takeSize;\n\n        public IProvider<T> Provider { get; private set; }\n        public new int Count { get; set; } = 0;\n\n        bool _busy;\n        public bool Busy { get { return _busy; } set { if (_busy == value) return; _busy = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Busy))); } }\n\n        public RandomAccessList(IProvider<T> provider, int takeSize = 20)\n        {\n            Debug.WriteLine(\"ObservableVector.Constructor\");\n            this._takeSize = takeSize;\n            this.Provider = provider;\n        }\n\n        public new object this[int index]\n        {\n            get\n            {\n                Debug.WriteLine(\"ObservableVector.Index {0}\", index);\n\n                T value;\n                if (!_cache.TryGetValue(_previousIndex = index, out value))\n                    StartLoadAsync(index);\n                return value;\n            }\n            set { throw new NotImplementedException(); }\n        }\n\n        private async void StartLoadAsync(int start)\n        {\n            Debug.WriteLine(\"ObservableVector.StartLoadAsync {0}\", start);\n\n            if (_chunks.Contains(start))\n                _chunks.Push(start);\n            if (Busy)\n                return;\n            try\n            {\n                var index = (_chunks.Any()) ? _chunks.Pop() : start;\n                if (Math.Abs(index - _previousIndex) >= _cacheLimit)\n                    return;\n                Busy = true;\n\n                var items = await Provider.LoadAsync((uint)start, _takeSize);\n                foreach (var item in items)\n                {\n                    _cache[item.Key] = item.Value;\n                    var args = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, item.Value, default(object), item.Key);\n                    CollectionChanged?.Invoke(this, args);\n                    InsertItem(item.Key, (T)item.Value);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        protected override void ClearItems()\n        {\n            base.ClearItems();\n            RaiseChanged(true, true, CollectionChange.Reset, 0);\n        }\n\n        protected override void InsertItem(int index, object item)\n        {\n            base.InsertItem(index, item);\n            RaiseChanged(true, true, CollectionChange.ItemInserted, (uint)index);\n        }\n\n        protected override void RemoveItem(int index)\n        {\n            base.RemoveItem(index);\n            RaiseChanged(true, true, CollectionChange.ItemRemoved, (uint)index);\n        }\n\n        protected override void SetItem(int index, object item)\n        {\n            base.SetItem(index, (T)item);\n            RaiseChanged(false, true, CollectionChange.ItemChanged, (uint)index);\n        }\n\n        void RaiseChanged(bool count, bool items, CollectionChange change, uint index)\n        {\n            if (count) this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Count)));\n            if (items) this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Items)));\n            VectorChanged?.Invoke(this, new VectorChangedEventArgs { CollectionChange = change, Index = index });\n        }\n\n        public new int IndexOf(object item) { throw new NotImplementedException(); }\n        public new void Insert(int index, object item) { throw new NotImplementedException(); }\n        public new void Add(object item) { throw new NotImplementedException(); }\n        public new bool Contains(object item) { throw new NotImplementedException(); }\n        public new void CopyTo(object[] array, int arrayIndex) { throw new NotImplementedException(); }\n        public new bool Remove(object item) { throw new NotImplementedException(); }\n        IEnumerator<object> IEnumerable<object>.GetEnumerator() { throw new NotImplementedException(); }\n\n        private class VectorChangedEventArgs : IVectorChangedEventArgs\n        {\n            public CollectionChange CollectionChange { get; set; }\n            public uint Index { get; set; }\n        }\n    }\n\n}\n"
  },
  {
    "path": "Performance/Performance/Virtualize/RandomAccessList.cs",
    "content": "﻿namespace Template10.Virtualize\n{\n    using System;\n    using System.Linq;\n    using System.Diagnostics;\n    using System.ComponentModel;\n    using System.Collections.Generic;\n    using System.Collections.ObjectModel;\n    using Windows.Foundation.Collections;\n    using System.Collections.Specialized;\n    using System.Threading.Tasks;\n\n    public class RandomAccessList<T> : ObservableCollection<object>, IObservableVector<object>\n    {\n        public event VectorChangedEventHandler<object> VectorChanged;\n        Dictionary<int, T> _cache = new Dictionary<int, T>();\n        Stack<int> _chunks = new Stack<int>();\n        public int _previousIndex = 1;\n        public int _cacheLimit = 100;\n        public int _takeSize;\n\n        #region\n\n        public IProvider<T> Provider { get; private set; }\n        public new int Count { get; set; } = 0;\n\n        bool _busy;\n        public bool Busy { get { return _busy; } set { if (_busy == value) return; _busy = value; OnPropertyChanged(new PropertyChangedEventArgs(nameof(Busy))); } }\n\n        #endregion\n\n        public RandomAccessList(IProvider<T> provider, int takeSize = 20)\n        {\n            Debug.WriteLine(\"ObservableVector.Constructor\");\n            this._takeSize = takeSize;\n            this.Provider = provider;\n            var x = this[1];\n        }\n\n        public new object this[int index]\n        {\n            get\n            {\n                Debug.WriteLine(\"ObservableVector.Index {0}\", index);\n\n                T value;\n                if (!_cache.TryGetValue(_previousIndex = index, out value))\n                {\n                    Task.Run((Func<Task>)(async () =>\n                    {\n                        Debug.WriteLine(\"ObservableVector.StartLoadAsync {0}\", index);\n\n                        if (_chunks.Contains(index))\n                            _chunks.Push(index);\n                        if (Busy)\n                            return;\n                        try\n                        {\n                            var i = (_chunks.Any()) ? _chunks.Pop() : index;\n                            if (Math.Abs(i - _previousIndex) >= _cacheLimit)\n                                return;\n                            Busy = true;\n\n                            var items = await Provider.LoadAsync((uint)i, _takeSize);\n                            foreach (var item in items)\n                            {\n                                if (_cache.ContainsKey(item.Key))\n                                    _cache[item.Key] = item.Value;\n                                else\n                                    _cache.Add(item.Key, item.Value);\n                                base.Add((T)item.Value);\n                                var current = (uint)IndexOf(item.Value);\n                                VectorChanged?.Invoke(this, new VectorChangedEventArgs { CollectionChange = CollectionChange.ItemInserted, Index = current });\n                            }\n                        }\n                        catch { Debugger.Break(); }\n                        finally { Busy = false; }\n                    }));\n                }\n                return value;\n            }\n            set { throw new NotImplementedException(); }\n        }\n\n        private class VectorChangedEventArgs : IVectorChangedEventArgs\n        {\n            public CollectionChange CollectionChange { get; set; }\n            public uint Index { get; set; }\n        }\n    }\n\n}\n"
  },
  {
    "path": "Performance/Performance/Virtualize/TodoItemViewModelProvider.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Template10.Repositories;\nusing Template10.ViewModels;\n\nnamespace Template10.Virtualize\n{\n    public class TodoItemViewModelProvider : IProvider<TodoItemViewModel>\n    {\n        private TodoItemRepository _repository;\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public TodoItemViewModelProvider()\n        {\n            this._repository = new Repositories.TodoItemRepository();\n\n            // hard coded for demo\n            this.Count = 1000;\n        }\n\n        public int Count { get; set; }\n\n        bool _busy;\n        public bool Busy { get { return _busy; } set { if (_busy == value) return; _busy = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Busy))); } }\n\n        public async Task<Dictionary<int, TodoItemViewModel>> LoadAsync(uint start, int size)\n        {\n            // constrain to count\n            size = (int)start + size;\n            if (size > Count) size = Count;\n\n            var dictionary = new Dictionary<int, TodoItemViewModel>();\n            foreach (var index in Enumerable.Range((int)start, size))\n            {\n                // fake delay for demo\n                await Task.Delay(10);\n\n                // fake data for demo\n                var model = _repository.Sample(1).First();\n                var viewmodel = new ViewModels.TodoItemViewModel(model);\n                dictionary.Add(index, viewmodel);\n            }\n            return dictionary;\n        }\n    }\n}\n"
  },
  {
    "path": "Performance/Performance/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "Performance/Performance.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Performance\", \"Performance\\Performance.csproj\", \"{A21E27D9-1CB0-4758-B1CC-420A851C1821}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x64.Build.0 = Debug|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x86.Build.0 = Debug|x86\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|ARM.Build.0 = Release|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x64.ActiveCfg = Release|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x64.Build.0 = Release|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x64.Deploy.0 = Release|x64\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x86.ActiveCfg = Release|x86\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x86.Build.0 = Release|x86\n\t\t{A21E27D9-1CB0-4758-B1CC-420A851C1821}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/App.xaml",
    "content": "﻿<Application\n    x:Class=\"FirstProtocolHandler.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:FirstProtocolHandler\">\n\n</Application>\n"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\nusing Microsoft.ApplicationInsights;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace FirstProtocolHandler\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public TelemetryClient TelemetryClient = new TelemetryClient();\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            //if (System.Diagnostics.Debugger.IsAttached)\n            //{\n            //    this.DebugSettings.EnableFrameRateCounter = true;\n            //}\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n\n        protected override void OnActivated(IActivatedEventArgs args)\n        {\n            ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;\n\n            if (args != null)\n            {\n                Frame rootFrame = Window.Current.Content as Frame;\n\n                // Do not repeat app initialization when the Window already has content,\n                // just ensure that the window is active\n                if (rootFrame == null)\n                {\n                    // Create a Frame to act as the navigation context and navigate to the first page\n                    rootFrame = new Frame();\n                    // Set the default language\n                    rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                    rootFrame.NavigationFailed += OnNavigationFailed;\n\n                    // Place the frame in the current Window\n                    Window.Current.Content = rootFrame;\n                }\n\n                if (rootFrame.Content == null)\n                {\n                    // When the navigation stack isn't restored navigate to the first page,\n                    // configuring the new page by passing required information as a navigation\n                    // parameter\n                    rootFrame.Navigate(typeof(MainPage), null);\n                }\n                // Ensure the current window is active\n                Window.Current.Activate();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/FirstProtocolHandler.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{1980E93A-2C11-406A-BA7C-5C355A4F3D06}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>FirstProtocolHandler</RootNamespace>\n    <AssemblyName>FirstProtocolHandler</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>FirstProtocolHandler_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>91569652</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"FirstProtocolHandler_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.RuntimeTelemetry.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsStore.0.13.0-build26067\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.winmd</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"FirstProtocolHandler.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:FirstProtocolHandler\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <TextBlock Text=\"You are in the First w10techpreview protocol handler\"\n                   TextWrapping=\"Wrap\" Style=\"{StaticResource SubtitleTextBlockStyle}\" \n                   Margin=\"30,39,0,0\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" Height=\"100\" Width=\"325\"/>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace FirstProtocolHandler\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            Debug.WriteLine(Windows.ApplicationModel.Package.Current.Id.FamilyName);\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"b864e1fb-d8ed-4e8a-a0ba-1a530b180b71\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"b864e1fb-d8ed-4e8a-a0ba-1a530b180b71\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>I can handle that!</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"FirstProtocolHandler.App\">\n      <uap:VisualElements\n        DisplayName=\"I can handle that!\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"FirstProtocolHandler\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"w10techpreview\">\n            <uap:Logo>Assets\\Logo.png</uap:Logo>\n          </uap:Protocol>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"FirstProtocolHandler\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"FirstProtocolHandler\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "ProtocolHandlerDemo/FirstProtocolHandler/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ProtocolHandlerDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ProtocolHandlerDemo\">\n\n</Application>\n"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\nusing Microsoft.ApplicationInsights;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace ProtocolHandlerDemo\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public TelemetryClient TelemetryClient = new TelemetryClient();\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            //if (System.Diagnostics.Debugger.IsAttached)\n            //{\n            //    this.DebugSettings.EnableFrameRateCounter = true;\n            //}\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ProtocolHandlerDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ProtocolHandlerDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Button x:Name=\"LaunchButton\" Content=\"Launch Uri\" FontSize=\"24\" HorizontalAlignment=\"Center\" \n                Click=\"LaunchButton_Click\"/>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace ProtocolHandlerDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private async void LaunchButton_Click(object sender, RoutedEventArgs e)\n        {\n            var options = new LauncherOptions();\n            options.TargetApplicationPackageFamilyName = \"b864e1fb-d8ed-4e8a-a0ba-1a530b180b71_nsf9e2fmhb1sj\";\n            await Windows.System.Launcher.LaunchUriAsync(new Uri(\"w10techpreview:?SomeData=123\"), options);\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"d391a3b0-27b3-4887-8b7b-89981d30021f\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"d391a3b0-27b3-4887-8b7b-89981d30021f\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>ProtocolHandlerDemo</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"ProtocolHandlerDemo.App\">\n      <uap:VisualElements\n        DisplayName=\"ProtocolHandlerDemo\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"ProtocolHandlerDemo\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ProtocolHandlerDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ProtocolHandlerDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/ProtocolHandlerDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ProtocolHandlerDemo</RootNamespace>\n    <AssemblyName>ProtocolHandlerDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>ProtocolHandlerDemo_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>0ec22256</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"ProtocolHandlerDemo_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.RuntimeTelemetry.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsStore.0.13.0-build26067\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.winmd</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "ProtocolHandlerDemo/ProtocolHandlerDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ProtocolHandlerDemo\", \"ProtocolHandlerDemo\\ProtocolHandlerDemo.csproj\", \"{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Handlers\", \"Handlers\", \"{EE137A13-A994-4604-B22E-6E87B7596E3E}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"FirstProtocolHandler\", \"FirstProtocolHandler\\FirstProtocolHandler.csproj\", \"{1980E93A-2C11-406A-BA7C-5C355A4F3D06}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SecondProtocolHandler\", \"SecondProtocolHandler\\SecondProtocolHandler.csproj\", \"{71D645B6-2B29-4A36-A273-1931271FAB34}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x64.Build.0 = Debug|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x86.Build.0 = Debug|x86\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|ARM.Build.0 = Release|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x64.ActiveCfg = Release|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x64.Build.0 = Release|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x64.Deploy.0 = Release|x64\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x86.ActiveCfg = Release|x86\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x86.Build.0 = Release|x86\n\t\t{7C3A5284-D7D8-425D-91EC-169F9BB7F9DE}.Release|x86.Deploy.0 = Release|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x64.Build.0 = Debug|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x86.Build.0 = Debug|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|ARM.Build.0 = Release|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x64.ActiveCfg = Release|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x64.Build.0 = Release|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x64.Deploy.0 = Release|x64\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x86.ActiveCfg = Release|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x86.Build.0 = Release|x86\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06}.Release|x86.Deploy.0 = Release|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x64.Build.0 = Debug|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x86.Build.0 = Debug|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|ARM.Build.0 = Release|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x64.ActiveCfg = Release|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x64.Build.0 = Release|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x64.Deploy.0 = Release|x64\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x86.ActiveCfg = Release|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x86.Build.0 = Release|x86\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{1980E93A-2C11-406A-BA7C-5C355A4F3D06} = {EE137A13-A994-4604-B22E-6E87B7596E3E}\n\t\t{71D645B6-2B29-4A36-A273-1931271FAB34} = {EE137A13-A994-4604-B22E-6E87B7596E3E}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/App.xaml",
    "content": "﻿<Application\n    x:Class=\"SecondProtocolHandler.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SecondProtocolHandler\">\n\n</Application>\n"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\nusing Microsoft.ApplicationInsights;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace SecondProtocolHandler\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public TelemetryClient TelemetryClient = new TelemetryClient();\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n\n        protected override void OnActivated(IActivatedEventArgs args)\n        {\n            ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;\n\n            if (args != null)\n            {\n                Frame rootFrame = Window.Current.Content as Frame;\n\n                // Do not repeat app initialization when the Window already has content,\n                // just ensure that the window is active\n                if (rootFrame == null)\n                {\n                    // Create a Frame to act as the navigation context and navigate to the first page\n                    rootFrame = new Frame();\n                    // Set the default language\n                    rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                    rootFrame.NavigationFailed += OnNavigationFailed;\n\n                    // Place the frame in the current Window\n                    Window.Current.Content = rootFrame;\n                }\n\n                if (rootFrame.Content == null)\n                {\n                    // When the navigation stack isn't restored navigate to the first page,\n                    // configuring the new page by passing required information as a navigation\n                    // parameter\n                    rootFrame.Navigate(typeof(MainPage), null);\n                }\n                // Ensure the current window is active\n                Window.Current.Activate();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"SecondProtocolHandler.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SecondProtocolHandler\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <TextBlock Text=\"You are in the Second w10techpreview protocol handler\"\n                   TextWrapping=\"Wrap\" Style=\"{StaticResource SubtitleTextBlockStyle}\" \n                   Margin=\"30,39,0,0\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" Height=\"100\" Width=\"325\"/>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace SecondProtocolHandler\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"9474f97b-e10a-45bf-880e-f0d4b629aaac\"\n    Publisher=\"CN=Andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"9474f97b-e10a-45bf-880e-f0d4b629aaac\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Yes, but I do it better!</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"SecondProtocolHandler.App\">\n      <uap:VisualElements\n        DisplayName=\"Yes, but I do it better!\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"SecondProtocolHandler\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n      <Extensions>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"w10techpreview\">\n            <uap:Logo>Assets\\Logo.png</uap:Logo>\n          </uap:Protocol>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SecondProtocolHandler\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SecondProtocolHandler\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/SecondProtocolHandler.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{71D645B6-2B29-4A36-A273-1931271FAB34}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SecondProtocolHandler</RootNamespace>\n    <AssemblyName>SecondProtocolHandler</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SecondProtocolHandler_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>b25b1e0e</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"SecondProtocolHandler_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.RuntimeTelemetry.0.13.0-build26067\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.winmd</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsStore.0.13.0-build26067\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.winmd</HintPath>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ProtocolHandlerDemo/SecondProtocolHandler/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "PushTriggerSample/PushTriggerBackgroundTask/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"PushTriggerBackgroundTask\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"PushTriggerBackgroundTask\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "PushTriggerSample/PushTriggerBackgroundTask/PushTriggerBackgroundTask.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{599FFC8A-DE98-40BF-980F-A77BE9DD1537}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>PushTriggerBackgroundTask</RootNamespace>\n    <AssemblyName>PushTriggerBackgroundTask</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"RawTriggerTask.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "PushTriggerSample/PushTriggerBackgroundTask/RawTriggerTask.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Background;\nusing Windows.Data.Xml.Dom;\nusing Windows.Networking.PushNotifications;\nusing Windows.Storage;\nusing Windows.UI.Notifications;\n\nnamespace PushTriggerBackgroundTask\n{\n    public sealed class RawTriggerTask : IBackgroundTask\n    {\n        public void Run(IBackgroundTaskInstance taskInstance)\n        {\n            var _deferral = taskInstance.GetDeferral();\n\n            // Get the background task details\n            ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;\n            string taskName = taskInstance.Task.Name;\n\n            Debug.WriteLine(\"Background \" + taskName + \" starting...\");\n\n            // Store the content received from the notification so it can be retrieved from the UI.\n            RawNotification notification = (RawNotification)taskInstance.TriggerDetails;\n            settings.Values[taskName] = notification.Content;\n\n            // Pop up a toast to notify the user\n            DeliverToast(\"test\", \"testid\");\n\n            Debug.WriteLine(\"Background \" + taskName + \" completed!\");\n        }\n\n        private void DeliverToast(string todoTitle, string todoID)\n        {\n            // Send the Toast Notification informing the user of a new message\n            ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;\n            XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);\n\n            XmlNodeList toastTextElements = toastXml.GetElementsByTagName(\"text\");\n            toastTextElements[0].AppendChild(toastXml.CreateTextNode(todoTitle));\n\n            IXmlNode toastNode = toastXml.SelectSingleNode(\"/toast\");\n\n            ((XmlElement)toastNode).SetAttribute(\"launch\", \"{\\\"type\\\":\\\"toast\\\",\\\"param1\\\":\\\"\" + todoID + \"\\\",\\\"param2\\\":\\\"0\\\"}\");\n\n            ToastNotification toast = new ToastNotification(toastXml);\n\n            // Tag the Toast with the data item ID\n            // Note that Toasts sent from servers set the Tag through an HTTP Header\n            toast.Tag = msgItem.ID;\n\n            ToastNotificationManager.CreateToastNotifier().Show(toast);\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerBackgroundTask/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"System.Numerics.Vectors\" version=\"4.0.0\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"PushTriggerSample.App\" xmlns:common=\"using:PushTriggerSample.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:PushTriggerSample.Converters\"\n                     xmlns:local=\"using:PushTriggerSample\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/App.xaml.cs",
    "content": "﻿using PushTriggerSample.Helpers;\nusing System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace PushTriggerSample\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public async override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n\n            var channelURI = await PushHandlingHelper.RegisterForPushAsync();\n            Debug.WriteLine(channelURI);\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace PushTriggerSample.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* PushTriggerSample: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Converters/Converters.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Converters folder</h1>\n                <ul>Value Converters are used in XAML data binding to change the output of a property to a more-desiarable string.</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Converter?</h2>\n                <p>\n                    In XAML data binding, the default presentation of a property's value is the result of its [ToString] method.\n                    Since, in .Net, every [class] inherits from [object] and since [object] ensures the [ToString] method,\n                    it is the only reliable default XAML could use to present a value. In effect, XAML is using a default, built-in\n                    Value Converter unless it is provided an alternate, custom Value Converter.\n                </p>\n                <p>\n                    Sometimes a developer or designer wants a property's value presented in a way different than the default.\n                    For example, in the case of a DateTime property the default format is \"4/22/2015 4:09:39 PM\". This\n                    format may be accurate, but it is not friendly. What you might want is \"April 22, 2015\". To accomplish\n                    this format in C#, you could use <span style=\"font-family: 'Courier New';\">DateTime.ToString(\"m\");</span>.\n                    To accomplish it in XAML you use a Value Converter with the same C# logic inside.\n                </p>\n                <h2>IValueConverter</h2>\n                <p>\n                    A XAML Value Converter is just a C# class. It must implment [IValueConverter], which may be found in the\n                    [Windows.UI.Xaml.Data] namespace. This interface requires the [Convert] and the [ConvertBack] methods,\n                    though most converters do not implement the [ConvertBack] method. This is generally because they are\n                    [readonly] operations; the [ConvertBack] method is only used when writing back to a property which is\n                    an uncommon scenario for a value converter.\n                </p>\n                <p>\n                    When XAML binds a property, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Apply the default Value Converter</li>\n                        <li>Present the result</li>\n                    </ol>\n                    With a Custom Value Converter, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Pass the property value through the Custom Value Converter's [Convert] method</li>\n                        <li>Present the result</li>\n                    </ol>\n                    This ability to inject into the presentation pipeline gives the developer\n                    considerable control over the presentation of data.\n                </p>\n                <h2>Performance Caveat</h2>\n                <p>\n                    Value Converters, like any executing code, have a cost to process. As a result, it is generally not recommended\n                    to use Custom Value Converters in repeating data, especially when the quantity of data is quite high. The reason\n                    for this is that the Value Converter has to be instantiated for each item and creates a binding performance penalty.\n                </p>\n                <p>\n                    Sometimes a value in repeating data needs to be converted before it is displayed. If this is the case, creating\n                    a new property in the [Model] that handles the formatting is far more cost effective than using a Value Converter.\n                    For example, you might have the property <span style=\"font-family: 'Courier New';\">DateTime DueDate</span> but\n                    will also create a companion, [readonly] property called <span style=\"font-family: 'Courier New';\"> String DueDateFormatted</span>.\n                    The C# syntax is nearly the same as the Value Converter. The developer simply trades the reusability\n                    and declarability of a Value Converter for improved (or maintained) performance.\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the PushTriggerSample functionality in this template.\n                    Each of the types in this folder are inside the [PushTriggerSample.Converters] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>DateTimeFormatConverter.cs</b></li>\n                </ol>\n                <p>\n                    [DateTimeFormatConverter] is a one-way converter that takes a [DateTime] value and applies the\n                    format string supplied in the [CommandParameter] argument. The incoming value must be\n                    a [DateTime] and cannot be a [DateTime?].\n                </p>\n                <ul>\n                    Format string <a href=\"https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx\" target=\"_blank\">reference</a>.\n                </ul>\n                <ol start=\"2\">\n                    <li><b>StateToStringConverter.cs</b></li>\n                </ol>\n                <p>\n                    Unique to this application is the States ENUM (defined in /Models/States.cs) that represents\n                    the current state of a TodoItem (defined in /Models/TodoItem.cs). One possible state, for example is\n                    NotStarted. Notice how it has no space. The [StateToStringConverter] is a one-way converter that\n                    takes a [State] value and returns a custom string, like \"Not Started\".\n                </p>\n                <ul>\n                    Note: this converter does not apply localization the returned string. It is hard coded.\n                </ul>\n                <ol start=\"3\">\n                    <li><b>ValueWhenConverter.cs</b></li>\n                </ol>\n                <p>\n                    The [ValueWhenConverter] is a powerful, reusable converter. It is a one-way converter that\n                    accepts some variable value, testing it against its own [When] property using the [Equals]\n                    method (which is defined on every object in .Net). If [Equals] returns true, it returns\n                    its own [When] property. If it returns false, it returns its own [Otherwise] property.\n                </p>\n                <p>\n                    Because the developer can define [Value], [When], and [Otherwise] this converter can be reused\n                    to meet the requirements of several common (90%) scenarios such as \"VisibleWhenFalse\" or \n                    \"VisibleWhenZero\" or any other values that can be declared in XAML. As a result, the\n                    [ValueWhenConverter] can resude the number of unique converters in a project. That being said,\n                    it cannot meet every need and custom converters may still be necessary. \n                </p>\n                Sample syntax\n<pre>\n&lt;c:valuewhenconverter \n        x:name=\"VisibleWhenZeroConverter\"&gt;\n\n    &lt;c:valuewhenconverter.when&gt;\n        &lt;x:int32&gt;0&lt;/x:int32&gt;\n    &lt;/c:valuewhenconverter.when&gt;\n\n    &lt;c:valuewhenconverter.value&gt;\n        &lt;visibility&gt;Visible&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.value&gt;\n\n    &lt;c:valuewhenconverter.otherwise&gt;\n        &lt;visibility&gt;Collapsed&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.otherwise&gt;\n\n&lt;/c:valuewhenconverter&gt;\n</pre>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace PushTriggerSample.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace PushTriggerSample.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Helpers/PushHandlingHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Networking.PushNotifications;\n\nnamespace PushTriggerSample.Helpers\n{\n    public static class PushHandlingHelper\n    {\n        public static async Task<string> RegisterForPushAsync()\n        {\n            var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();\n            channel.PushNotificationReceived += channel_PushNotificationReceived;\n            return channel.Uri.ToString();\n        }\n\n        static void channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)\n        {\n            string result = args.NotificationType.ToString();\n            switch (args.NotificationType)\n            {\n                case PushNotificationType.Badge:\n                    result += \": \" + args.BadgeNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.Raw:\n                    result += \": \" + args.RawNotification.Content;\n                    break;\n                case PushNotificationType.Tile:\n                    result += \": \" + args.TileNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.TileFlyout:\n                    result += \": \" + args.TileNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.Toast:\n                    result += \": \" + args.ToastNotification.Content.GetXml();\n                    break;\n                default:\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the PushTriggerSample functionality in this template.\n                    Each of the types in this folder are inside the [PushTriggerSample.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A PushTriggerSample list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This PushTriggerSample application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" PushTriggerSample list and a \"vacation\" PushTriggerSample list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace PushTriggerSample.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace PushTriggerSample.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace PushTriggerSample.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace PushTriggerSample.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity \n    Name=\"Applicious.MVAPushTriggerSample\" \n    Publisher=\"CN=426AFF0D-09CF-438E-8140-1F79DD469DD6\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3c03f095-6973-4437-805e-8c22aeaf1aba\" PhonePublisherId=\"426AFF0D-09CF-438E-8140-1F79DD469DD6\"/>\n\n  <Properties>\n    <DisplayName>TODO</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"TODO.App\">\n      <uap:VisualElements\n        DisplayName=\"TODO\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"TODO\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"PushTriggerSample\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"PushTriggerSample\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/PushTriggerSample.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>PushTriggerSample</RootNamespace>\n    <AssemblyName>PushTriggerSample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>TODO_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>1b8df4b3</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Helpers\\PushHandlingHelper.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"TODO_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Converters\\Converters.readme.htm\" />\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing PushTriggerSample.Models;\n\nnamespace PushTriggerSample.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing PushTriggerSample.Models;\n\nnamespace PushTriggerSample.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await this.GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace PushTriggerSample.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace PushTriggerSample.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* PushTriggerSample: persist */ }\n        string LastNavigationType { get; set; /* PushTriggerSample: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // PushTriggerSample: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* PushTriggerSample */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:PushTriggerSample.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing PushTriggerSample.Mvvm;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace PushTriggerSample.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                this.TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                this.TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                var data = _todoListRepository.Sample(10).Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    this.TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing PushTriggerSample.Models;\n\nnamespace PushTriggerSample.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace PushTriggerSample.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            this.TodoList = list;\n            foreach (var item in list.Items)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                this.TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                this.TodoList.Items.Remove(this.SelectedItem.TodoItem);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"PushTriggerSample.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:PushTriggerSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:PushTriggerSample.ViewModels\"\n    xmlns:models=\"using:PushTriggerSample.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n\n        <Hub>\n\n            <Hub.Header>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                    <Grid>\n                        <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                        <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                    </Grid>\n                </StackPanel>\n            </Hub.Header>\n\n            <HubSection VerticalContentAlignment=\"Stretch\" x:Name=\"MainHubSection\">\n                <DataTemplate>\n                    <ItemsControl ItemsSource=\"{Binding TodoLists}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Horizontal\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Width=\"456\" Margin=\"0,0,12,12\">\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"*\" />\n                                    </Grid.RowDefinitions>\n                                    <CommandBar Grid.Row=\"0\" VerticalAlignment=\"Bottom\" ClosedDisplayMode=\"Minimal\" Background=\"DimGray\">\n                                        <CommandBar.SecondaryCommands>\n                                            <AppBarButton Label=\"Delete list\">\n                                                <AppBarButton.Flyout>\n                                                    <Flyout Placement=\"Bottom\">\n                                                        <Button Content=\"Are you sure?\" Command=\"{Binding DataContext.RemoveListCommand, ElementName=MainHubSection}\" CommandParameter=\"{Binding}\" />\n                                                    </Flyout>\n                                                </AppBarButton.Flyout>\n                                            </AppBarButton>\n                                        </CommandBar.SecondaryCommands>\n                                    </CommandBar>\n                                    <Rectangle Grid.Row=\"1\" Fill=\"Black\" Opacity=\".1\" />\n                                    \n                                    <!-- list title -->\n                                    <TextBlock Tapped=\"List_Tapped\" RequestedTheme=\"Light\" Margin=\"24,12\" FontSize=\"34\" FontWeight=\"Light\" Grid.Row=\"1\" Text=\"{Binding TodoList.Title}\" />\n                                    \n                                    <ScrollViewer Grid.Row=\"2\" VerticalAlignment=\"Stretch\">\n                                        <ListView Padding=\"0,0,0,12\" Margin=\"0\" Grid.Row=\"2\"\n                                                  IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                                  ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                                  SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                                  CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                                            <ListView.Background>\n                                                <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                                            </ListView.Background>\n                                            <ListView.ItemContainerTransitions>\n                                                <TransitionCollection>\n                                                    <AddDeleteThemeTransition />\n                                                </TransitionCollection>\n                                            </ListView.ItemContainerTransitions>\n                                            <ListView.ItemContainerStyle>\n                                                <Style TargetType=\"ListViewItem\">\n                                                    <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                                    <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                                                </Style>\n                                            </ListView.ItemContainerStyle>\n                                            <ListView.Header>\n\n                                                <!-- create new item -->\n                                                <TextBox KeyDown=\"TextBox_KeyDown\" PlaceholderText=\"Add a new task\" Margin=\"24,0,24,12\" />\n\n                                            </ListView.Header>\n                                            <ListView.ItemTemplate>\n                                                <DataTemplate>\n                                                    <Grid Height=\"48\">\n                                                        <Grid.ColumnDefinitions>\n                                                            <ColumnDefinition Width=\"48\" />\n                                                            <ColumnDefinition Width=\"*\" />\n                                                            <ColumnDefinition Width=\"48\" />\n                                                        </Grid.ColumnDefinitions>\n\n                                                        <!-- item checked -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                                        <!-- item title -->\n                                                        <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                                        <!-- item strikethrough -->\n                                                        <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                                        <!-- item star -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                                    </Grid>\n                                                </DataTemplate>\n                                            </ListView.ItemTemplate>\n                                        </ListView>\n                                    </ScrollViewer>\n                                </Grid>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n                </DataTemplate>\n            </HubSection>\n        </Hub>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- task editor -->\n        <ContentDialog x:Name=\"TodoEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\" SecondaryButtonCommand=\"{Binding RemoveCommand}\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\">\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"48\" />\n                            <ColumnDefinition Width=\"*\" />\n                        </Grid.ColumnDefinitions>\n\n                        <StackPanel Grid.Column=\"0\" VerticalAlignment=\"Top\">\n                            <!-- item checked -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" />\n                            <!-- item star -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n                        </StackPanel>\n\n                        <!-- item details -->\n                        <StackPanel Grid.Column=\"1\" MaxWidth=\"300\">\n                            <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                        </StackPanel>\n\n                    </Grid>\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace PushTriggerSample.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n            CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;\n            Window.Current.SetTitleBar(AppTitle);\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            this.TodoEditorDialog.DataContext = e.ClickedItem;\n            await this.TodoEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n            this.ListEditorDialog.DataContext = data.TodoList;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            if (e.Key == Windows.System.VirtualKey.Enter\n                && !string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                e.Handled = true;\n                var list = textBox.DataContext as ViewModels.TodoListViewModel;\n                list.AddCommand.Execute(textBox.Text);\n                textBox.Text = string.Empty;\n                textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "PushTriggerSample/PushTriggerSample.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"PushTriggerSample\", \"PushTriggerSample\\PushTriggerSample.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"PushTriggerBackgroundTask\", \"PushTriggerBackgroundTask\\PushTriggerBackgroundTask.csproj\", \"{599FFC8A-DE98-40BF-980F-A77BE9DD1537}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|x64.Build.0 = Debug|x64\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Debug|x86.Build.0 = Debug|x86\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|ARM.Build.0 = Release|ARM\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|x64.ActiveCfg = Release|x64\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|x64.Build.0 = Release|x64\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|x86.ActiveCfg = Release|x86\n\t\t{599FFC8A-DE98-40BF-980F-A77BE9DD1537}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "README.md",
    "content": "# 201505-MVA\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"RoamingSettingsDemo.App\" xmlns:common=\"using:RoamingSettingsDemo.Common\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:local=\"using:RoamingSettingsDemo\" RequestedTheme=\"Dark\">\n</common:BootStrapper>"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace RoamingSettingsDemo\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace RoamingSettingsDemo.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"5f1f3aeb-a06d-44c1-8560-f7c0940287d3\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"5f1f3aeb-a06d-44c1-8560-f7c0940287d3\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>RoamingData</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"RoamingData\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"RoamingData\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"RoamingSettingsDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"RoamingSettingsDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/RoamingSettingsDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E481767A-6A1F-43F9-BD06-7F86D3D215D9}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>RoamingSettingsDemo</RootNamespace>\n    <AssemblyName>RoamingSettingsDemo</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>11389afa</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"Blank_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace RoamingSettingsDemo.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n        void OnNavigatingFrom(NavigatingCancelEventArgs args);\n    }\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace RoamingSettingsDemo.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace RoamingSettingsDemo.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace RoamingSettingsDemo.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"RoamingSettingsDemo.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:RoamingSettingsDemo.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid x:Name=\"MainGrid\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"80\" />\n            <RowDefinition />\n        </Grid.RowDefinitions>\n\n        <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Top\" Margin=\"12,12,0,0\">\n            <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE76E;\" FontSize=\"40\" VerticalAlignment=\"Center\" Margin=\"0,0,20,0\" />\n            <TextBlock Style=\"{StaticResource HeaderTextBlockStyle}\" FontSize=\"24\" Text=\"Hello Template 10\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Margin=\"0,80,0,0\">\n            <!-- content -->\n            <StackPanel Margin=\"62,0,0,0\">\n                <TextBlock x:Name=\"textBlock\" HorizontalAlignment=\"Left\"  \n                           TextWrapping=\"Wrap\" Text=\"Preferred Background Color:\" VerticalAlignment=\"Top\"/>\n                <RadioButton x:Name=\"RedRadioButton\" Content=\"Red\" Checked=\"radioButton_Checked\" />\n                <RadioButton x:Name=\"GreenRadioButton\" Content=\"Green\" Checked=\"radioButton_Checked\"/>\n            </StackPanel>\n      \n        </Grid>\n\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The RoamingSettingsDemo Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace RoamingSettingsDemo.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            SetBackgroundFromSettings();\n\n            Windows.Storage.ApplicationData.Current.DataChanged += RoamingDataChanged;\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            Windows.Storage.ApplicationData.Current.DataChanged -= RoamingDataChanged;\n        }\n\n        private void RoamingDataChanged(Windows.Storage.ApplicationData sender, object args)\n        {\n            // Something has changed in the roaming data or settings\n            var ignore = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, \n                () => SetBackgroundFromSettings()\n            );\n        }\n\n        private void SetBackgroundFromSettings()\n        {\n            // Get the roaming settings\n            Windows.Storage.ApplicationDataContainer roamingSettings =\n                   Windows.Storage.ApplicationData.Current.RoamingSettings;\n\n            if (roamingSettings.Values.ContainsKey(\"PreferredBgColor\"))\n            {\n                var colorName = roamingSettings.Values[\"PreferredBgColor\"].ToString();\n\n                if (colorName == \"Green\")\n                {\n                    MainGrid.Background = new SolidColorBrush(Colors.Green);\n                    GreenRadioButton.IsChecked = true;\n                }\n                else if (colorName == \"Red\")\n                {\n                    MainGrid.Background = new SolidColorBrush(Colors.Red);\n                    RedRadioButton.IsChecked = true;\n                }\n            }\n        }\n\n        private void radioButton_Checked(object sender, RoutedEventArgs e)\n        {\n            if (GreenRadioButton.IsChecked.HasValue && (GreenRadioButton.IsChecked.Value == true))\n            {\n                Windows.Storage.ApplicationData.Current.RoamingSettings.Values[\"PreferredBgColor\"] = \"Green\";\n            }\n            else\n            {\n                Windows.Storage.ApplicationData.Current.RoamingSettings.Values[\"PreferredBgColor\"] = \"Red\";\n            }\n\n            SetBackgroundFromSettings();\n        }\n    }\n}\n"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n</packages>"
  },
  {
    "path": "RoamingSettingsDemo/RoamingSettingsDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"RoamingSettingsDemo\", \"RoamingSettingsDemo\\RoamingSettingsDemo.csproj\", \"{E481767A-6A1F-43F9-BD06-7F86D3D215D9}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.Build.0 = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.Build.0 = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.Build.0 = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.ActiveCfg = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.Build.0 = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.Deploy.0 = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.ActiveCfg = Release|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.Build.0 = Release|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/App.xaml",
    "content": "﻿<Application\n    x:Class=\"SQLiteDemo.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SQLiteDemo\"\n    xmlns:converters=\"using:SQLiteDemo.Converters\">\n\n    <Application.Resources>\n        <converters:DateTimeToStringConverter x:Key=\"DateTimeToStringConverter\"/>\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/App.xaml.cs",
    "content": "﻿using SQLiteDemo.Common;\nusing SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227\n\nnamespace SQLiteDemo\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    public sealed partial class App : Application\n    {\n\n        public static SQLiteConnection conn;\n\n#if WINDOWS_PHONE_APP\n        private TransitionCollection transitions;\n#endif\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += this.OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected async override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            // Get a reference to the SQLite database\n            conn = new SQLiteConnection(\"sqlitepcldemo.db\");\n            CreateDatabase.LoadDatabase(conn);\n\n#if DEBUGEFR\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                //Associate the frame with a SuspensionManager key                                \n                SuspensionManager.RegisterFrame(rootFrame, \"AppFrame\");\n\n                // TODO: change this value to a cache size that is appropriate for your application\n                rootFrame.CacheSize = 1;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    // Restore the saved session state only when appropriate\n                    try\n                    {\n                        await SuspensionManager.RestoreAsync();\n                    }\n                    catch (SuspensionManagerException)\n                    {\n                        // Something went wrong restoring state.\n                        // Assume there is no state and continue\n                    }\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n#if WINDOWS_PHONE_APP\n                // Removes the turnstile navigation for startup.\n                if (rootFrame.ContentTransitions != null)\n                {\n                    this.transitions = new TransitionCollection();\n                    foreach (var c in rootFrame.ContentTransitions)\n                    {\n                        this.transitions.Add(c);\n                    }\n                }\n\n                rootFrame.ContentTransitions = null;\n                rootFrame.Navigated += this.RootFrame_FirstNavigated;\n#endif\n\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n#if WINDOWS_PHONE_APP\n        /// <summary>\n        /// Restores the content transitions after the app has launched.\n        /// </summary>\n        /// <param name=\"sender\">The object where the handler is attached.</param>\n        /// <param name=\"e\">Details about the navigation event.</param>\n        private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e)\n        {\n            var rootFrame = sender as Frame;\n            rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() };\n            rootFrame.Navigated -= this.RootFrame_FirstNavigated;\n        }\n#endif\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private async void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n\n            // Save application state and stop any background activity\n            await SuspensionManager.SaveAsync();\n\n            conn.Dispose();\n            conn = null;\n\n            deferral.Complete();\n        }\n    }\n}"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Common/NavigationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace SQLiteDemo.Common\n{\n    /// <summary>\n    /// NavigationHelper aids in navigation between pages.  It provides commands used to \n    /// navigate back and forward as well as registers for standard mouse and keyboard \n    /// shortcuts used to go back and forward in Windows and the hardware back button in\n    /// Windows Phone.  In addition it integrates SuspensionManger to handle process lifetime\n    /// management and state management when navigating between pages.\n    /// </summary>\n    /// <example>\n    /// To make use of NavigationHelper, follow these two steps or\n    /// start with a BasicPage or any other Page item template other than BlankPage.\n    /// \n    /// 1) Create an instance of the NavigationHelper somewhere such as in the \n    ///     constructor for the page and register a callback for the LoadState and \n    ///     SaveState events.\n    /// <code>\n    ///     public MyPage()\n    ///     {\n    ///         this.InitializeComponent();\n    ///         var navigationHelper = new NavigationHelper(this);\n    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;\n    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;\n    ///     }\n    ///     \n    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    ///     { }\n    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)\n    ///     { }\n    /// </code>\n    /// \n    /// 2) Register the page to call into the NavigationHelper whenever the page participates \n    ///     in navigation by overriding the <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo\"/> \n    ///     and <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedFrom\"/> events.\n    /// <code>\n    ///     protected override void OnNavigatedTo(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedTo(e);\n    ///     }\n    ///     \n    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedFrom(e);\n    ///     }\n    /// </code>\n    /// </example>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public class NavigationHelper : DependencyObject\n    {\n        private Page Page { get; set; }\n        private Frame Frame { get { return this.Page.Frame; } }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationHelper\"/> class.\n        /// </summary>\n        /// <param name=\"page\">A reference to the current page used for navigation.  \n        /// This reference allows for frame manipulation and to ensure that keyboard \n        /// navigation requests only occur when the page is occupying the entire window.</param>\n        public NavigationHelper(Page page)\n        {\n            this.Page = page;\n\n            // When this page is part of the visual tree make two changes:\n            // 1) Map application view state to visual state for the page\n            // 2) Handle hardware navigation requests\n            this.Page.Loaded += (sender, e) =>\n            {\n#if WINDOWS_PHONE_APP\n                Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;\n#elif WINDOWS_APP\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                    // Listen to the window directly so focus isn't required\n                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                        CoreDispatcher_AcceleratorKeyActivated;\n                    Window.Current.CoreWindow.PointerPressed +=\n                        this.CoreWindow_PointerPressed;\n                }\n#elif WINDOWS_UAP\n                SystemNavigationManager.GetForCurrentView().BackRequested += ShellOrHardwareBackPressed;\n\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                    // Listen to the window directly so focus isn't required\n                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                        CoreDispatcher_AcceleratorKeyActivated;\n                    Window.Current.CoreWindow.PointerPressed +=\n                        this.CoreWindow_PointerPressed;\n                }\n#endif\n            };\n\n            // Undo the same changes when the page is no longer visible\n            this.Page.Unloaded += (sender, e) =>\n            {\n#if WINDOWS_PHONE_APP\n                Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;\n#elif WINDOWS_APP\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                    CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n#elif WINDOWS_UAP\n                SystemNavigationManager.GetForCurrentView().BackRequested -= ShellOrHardwareBackPressed;\n\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                    CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n#endif\n            };\n        }\n\n        #region Navigation support\n\n        RelayCommand _goBackCommand;\n        RelayCommand _goForwardCommand;\n\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used to bind to the back Button's Command property\n        /// for navigating to the most recent item in back navigation history, if a Frame\n        /// manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoBack\"/>\n        /// as the Execute Action and <see cref=\"CanGoBack\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoBackCommand\n        {\n            get\n            {\n                if (_goBackCommand == null)\n                {\n                    _goBackCommand = new RelayCommand(\n                        () => this.GoBack(),\n                        () => this.CanGoBack());\n                }\n                return _goBackCommand;\n            }\n            set\n            {\n                _goBackCommand = value;\n            }\n        }\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used for navigating to the most recent item in \n        /// the forward navigation history, if a Frame manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoForward\"/>\n        /// as the Execute Action and <see cref=\"CanGoForward\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoForwardCommand\n        {\n            get\n            {\n                if (_goForwardCommand == null)\n                {\n                    _goForwardCommand = new RelayCommand(\n                        () => this.GoForward(),\n                        () => this.CanGoForward());\n                }\n                return _goForwardCommand;\n            }\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go back.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the back navigation history.\n        /// </returns>\n        public virtual bool CanGoBack()\n        {\n            return this.Frame != null && this.Frame.CanGoBack;\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go forward.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the forward navigation history.\n        /// </returns>\n        public virtual bool CanGoForward()\n        {\n            return this.Frame != null && this.Frame.CanGoForward;\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoBack\"/> method.\n        /// </summary>\n        public virtual void GoBack()\n        {\n            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoForward\"/> method.\n        /// </summary>\n        public virtual void GoForward()\n        {\n            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();\n        }\n\n#if WINDOWS_UAP\n        /// <summary>\n        /// Back requested either through Phone Back button or from Back button on window chrome\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void ShellOrHardwareBackPressed(object sender, BackRequestedEventArgs e)\n        {\n            if (this.GoBackCommand.CanExecute(null))\n            {\n                e.Handled = true;\n                this.GoBackCommand.Execute(null);\n            }\n        }\n#endif\n\n#if WINDOWS_PHONE_APP\n        /// <summary>\n        /// Invoked when the hardware back button is pressed. For Windows Phone only.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)\n        {\n            if (this.GoBackCommand.CanExecute(null))\n            {\n                e.Handled = true;\n                this.GoBackCommand.Execute(null);\n            }\n        }\n#else\n        /// <summary>\n        /// Invoked on every keystroke, including system keys such as Alt key combinations, when\n        /// this page is active and occupies the entire window.  Used to detect keyboard navigation\n        /// between pages even when the page itself doesn't have focus.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,\n            AcceleratorKeyEventArgs e)\n        {\n            var virtualKey = e.VirtualKey;\n\n            // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n            // are pressed\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&\n                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||\n                (int)virtualKey == 166 || (int)virtualKey == 167))\n            {\n                var coreWindow = Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n                bool noModifiers = !menuKey && !controlKey && !shiftKey;\n                bool onlyAlt = menuKey && !controlKey && !shiftKey;\n\n                if (((int)virtualKey == 166 && noModifiers) ||\n                    (virtualKey == VirtualKey.Left && onlyAlt))\n                {\n                    // When the previous key or Alt+Left are pressed navigate back\n                    e.Handled = true;\n                    this.GoBackCommand.Execute(null);\n                }\n                else if (((int)virtualKey == 167 && noModifiers) ||\n                    (virtualKey == VirtualKey.Right && onlyAlt))\n                {\n                    // When the next key or Alt+Right are pressed navigate forward\n                    e.Handled = true;\n                    this.GoForwardCommand.Execute(null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender,\n            PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed) return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) this.GoBackCommand.Execute(null);\n                if (forwardPressed) this.GoForwardCommand.Execute(null);\n            }\n        }\n#endif\n\n        #endregion\n\n        #region Process lifetime management\n\n        private String _pageKey;\n\n        /// <summary>\n        /// Register this event on the current page to populate the page\n        /// with content passed during navigation as well as any saved\n        /// state provided when recreating a page from a prior session.\n        /// </summary>\n        public event LoadStateEventHandler LoadState;\n        /// <summary>\n        /// Register this event on the current page to preserve\n        /// state associated with the current page in case the\n        /// application is suspended or the page is discarded from\n        /// the navigaqtion cache.\n        /// </summary>\n        public event SaveStateEventHandler SaveState;\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.  \n        /// This method calls <see cref=\"LoadState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            this._pageKey = \"Page-\" + this.Frame.BackStackDepth;\n\n            if (e.NavigationMode == NavigationMode.New)\n            {\n                // Clear existing state for forward navigation when adding a new page to the\n                // navigation stack\n                var nextPageKey = this._pageKey;\n                int nextPageIndex = this.Frame.BackStackDepth;\n                while (frameState.Remove(nextPageKey))\n                {\n                    nextPageIndex++;\n                    nextPageKey = \"Page-\" + nextPageIndex;\n                }\n\n                // Pass the navigation parameter to the new page\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));\n                }\n            }\n            else\n            {\n                // Pass the navigation parameter and preserved page state to the page, using\n                // the same strategy for loading suspended state and recreating pages discarded\n                // from cache\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked when this page will no longer be displayed in a Frame.\n        /// This method calls <see cref=\"SaveState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            var pageState = new Dictionary<String, Object>();\n            if (this.SaveState != null)\n            {\n                this.SaveState(this, new SaveStateEventArgs(pageState));\n            }\n            frameState[_pageKey] = pageState;\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.LoadState\"/>event\n    /// </summary>\n    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.SaveState\"/>event\n    /// </summary>\n    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);\n\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to load state.\n    /// </summary>\n    public class LoadStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </summary>\n        public Object NavigationParameter { get; private set; }\n        /// <summary>\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LoadStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"navigationParameter\">\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </param>\n        /// <param name=\"pageState\">\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </param>\n        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.NavigationParameter = navigationParameter;\n            this.PageState = pageState;\n        }\n    }\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to save state.\n    /// </summary>\n    public class SaveStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// An empty dictionary to be populated with serializable state.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SaveStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"pageState\">An empty dictionary to be populated with serializable state.</param>\n        public SaveStateEventArgs(Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.PageState = pageState;\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Common/ObservableDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Foundation.Collections;\n\nnamespace SQLiteDemo.Common\n{\n    /// <summary>\n    /// Implementation of IObservableMap that supports reentrancy for use as a default view\n    /// model.\n    /// </summary>\n    public class ObservableDictionary : IObservableMap<string, object>\n    {\n        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>\n        {\n            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)\n            {\n                this.CollectionChange = change;\n                this.Key = key;\n            }\n\n            public CollectionChange CollectionChange { get; private set; }\n            public string Key { get; private set; }\n        }\n\n        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();\n        public event MapChangedEventHandler<string, object> MapChanged;\n\n        private void InvokeMapChanged(CollectionChange change, string key)\n        {\n            var eventHandler = MapChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));\n            }\n        }\n\n        public void Add(string key, object value)\n        {\n            this._dictionary.Add(key, value);\n            this.InvokeMapChanged(CollectionChange.ItemInserted, key);\n        }\n\n        public void Add(KeyValuePair<string, object> item)\n        {\n            this.Add(item.Key, item.Value);\n        }\n\n        public bool Remove(string key)\n        {\n            if (this._dictionary.Remove(key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n                return true;\n            }\n            return false;\n        }\n\n        public bool Remove(KeyValuePair<string, object> item)\n        {\n            object currentValue;\n            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&\n                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);\n                return true;\n            }\n            return false;\n        }\n\n        public object this[string key]\n        {\n            get\n            {\n                return this._dictionary[key];\n            }\n            set\n            {\n                this._dictionary[key] = value;\n                this.InvokeMapChanged(CollectionChange.ItemChanged, key);\n            }\n        }\n\n        public void Clear()\n        {\n            var priorKeys = this._dictionary.Keys.ToArray();\n            this._dictionary.Clear();\n            foreach (var key in priorKeys)\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n            }\n        }\n\n        public ICollection<string> Keys\n        {\n            get { return this._dictionary.Keys; }\n        }\n\n        public bool ContainsKey(string key)\n        {\n            return this._dictionary.ContainsKey(key);\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return this._dictionary.TryGetValue(key, out value);\n        }\n\n        public ICollection<object> Values\n        {\n            get { return this._dictionary.Values; }\n        }\n\n        public bool Contains(KeyValuePair<string, object> item)\n        {\n            return this._dictionary.Contains(item);\n        }\n\n        public int Count\n        {\n            get { return this._dictionary.Count; }\n        }\n\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)\n        {\n            int arraySize = array.Length;\n            foreach (var pair in this._dictionary)\n            {\n                if (arrayIndex >= arraySize) break;\n                array[arrayIndex++] = pair;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Common/ReadMe.txt",
    "content": "﻿The Common directory contains classes that simplify application development.\n\nClasses in the Common directory form part of your project and may be further enhanced to meet your\nneeds.  Care should be taken when altering existing methods and properties as incompatible changes\nwill require corresponding changes to code included in a variety of Visual Studio templates.  For\nexample, additional pages added to your project are written assuming that the original methods and\nproperties in Common classes are still present and that the names of the types have not changed."
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Common/RelayCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace SQLiteDemo.Common\n{\n    /// <summary>\n    /// A command whose sole purpose is to relay its functionality \n    /// to other objects by invoking delegates. \n    /// The default return value for the CanExecute method is 'true'.\n    /// <see cref=\"RaiseCanExecuteChanged\"/> needs to be called whenever\n    /// <see cref=\"CanExecute\"/> is expected to return a different value.\n    /// </summary>\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n\n        /// <summary>\n        /// Raised when RaiseCanExecuteChanged is called.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n\n        /// <summary>\n        /// Creates a new command that can always execute.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        /// <summary>\n        /// Creates a new command.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        /// <param name=\"canExecute\">The execution status logic.</param>\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canExecute;\n        }\n\n        /// <summary>\n        /// Determines whether this <see cref=\"RelayCommand\"/> can execute in its current state.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        /// <returns>true if this command can be executed; otherwise, false.</returns>\n        public bool CanExecute(object parameter)\n        {\n            return _canExecute == null ? true : _canExecute();\n        }\n\n        /// <summary>\n        /// Executes the <see cref=\"RelayCommand\"/> on the current command target.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            _execute();\n        }\n\n        /// <summary>\n        /// Method used to raise the <see cref=\"CanExecuteChanged\"/> event\n        /// to indicate that the return value of the <see cref=\"CanExecute\"/>\n        /// method has changed.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            var handler = CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Common/SuspensionManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace SQLiteDemo.Common\n{\n    /// <summary>\n    /// SuspensionManager captures global session state to simplify process lifetime management\n    /// for an application.  Note that session state will be automatically cleared under a variety\n    /// of conditions and should only be used to store information that would be convenient to\n    /// carry across sessions, but that should be discarded when an application crashes or is\n    /// upgraded.\n    /// </summary>\n    internal sealed class SuspensionManager\n    {\n        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();\n        private static List<Type> _knownTypes = new List<Type>();\n        private const string sessionStateFilename = \"_sessionState.xml\";\n\n        /// <summary>\n        /// Provides access to global session state for the current session.  This state is\n        /// serialized by <see cref=\"SaveAsync\"/> and restored by\n        /// <see cref=\"RestoreAsync\"/>, so values must be serializable by\n        /// <see cref=\"DataContractSerializer\"/> and should be as compact as possible.  Strings\n        /// and other self-contained data types are strongly recommended.\n        /// </summary>\n        public static Dictionary<string, object> SessionState\n        {\n            get { return _sessionState; }\n        }\n\n        /// <summary>\n        /// List of custom types provided to the <see cref=\"DataContractSerializer\"/> when\n        /// reading and writing session state.  Initially empty, additional types may be\n        /// added to customize the serialization process.\n        /// </summary>\n        public static List<Type> KnownTypes\n        {\n            get { return _knownTypes; }\n        }\n\n        /// <summary>\n        /// Save the current <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also preserve their current\n        /// navigation stack, which in turn gives their active <see cref=\"Page\"/> an opportunity\n        /// to save its state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been saved.</returns>\n        public static async Task SaveAsync()\n        {\n            try\n            {\n                // Save the navigation state for all registered frames\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        SaveFrameNavigationState(frame);\n                    }\n                }\n\n                // Serialize the session state synchronously to avoid asynchronous access to shared\n                // state\n                MemoryStream sessionData = new MemoryStream();\n                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                serializer.WriteObject(sessionData, _sessionState);\n\n                // Get an output stream for the SessionState file and write the state asynchronously\n                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);\n                using (Stream fileStream = await file.OpenStreamForWriteAsync())\n                {\n                    sessionData.Seek(0, SeekOrigin.Begin);\n                    await sessionData.CopyToAsync(fileStream);\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        /// <summary>\n        /// Restores previously saved <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also restore their prior navigation\n        /// state, which in turn gives their active <see cref=\"Page\"/> an opportunity restore its\n        /// state.\n        /// </summary>\n        /// <param name=\"sessionBaseKey\">An optional key that identifies the type of session.\n        /// This can be used to distinguish between multiple application launch scenarios.</param>\n        /// <returns>An asynchronous task that reflects when session state has been read.  The\n        /// content of <see cref=\"SessionState\"/> should not be relied upon until this task\n        /// completes.</returns>\n        public static async Task RestoreAsync(String sessionBaseKey = null)\n        {\n            _sessionState = new Dictionary<String, Object>();\n\n            try\n            {\n                // Get the input stream for the SessionState file\n                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);\n                using (IInputStream inStream = await file.OpenSequentialReadAsync())\n                {\n                    // Deserialize the Session State\n                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());\n                }\n\n                // Restore any registered frames to their saved state\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame) && (string)frame.GetValue(FrameSessionBaseKeyProperty) == sessionBaseKey)\n                    {\n                        frame.ClearValue(FrameSessionStateProperty);\n                        RestoreFrameNavigationState(frame);\n                    }\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        private static DependencyProperty FrameSessionStateKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionStateKey\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionBaseKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionBaseKeyParams\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionStateProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionState\", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);\n        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();\n\n        /// <summary>\n        /// Registers a <see cref=\"Frame\"/> instance to allow its navigation history to be saved to\n        /// and restored from <see cref=\"SessionState\"/>.  Frames should be registered once\n        /// immediately after creation if they will participate in session state management.  Upon\n        /// registration if state has already been restored for the specified key\n        /// the navigation history will immediately be restored.  Subsequent invocations of\n        /// <see cref=\"RestoreAsync\"/> will also restore navigation history.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should be managed by\n        /// <see cref=\"SuspensionManager\"/></param>\n        /// <param name=\"sessionStateKey\">A unique key into <see cref=\"SessionState\"/> used to\n        /// store navigation-related information.</param>\n        /// <param name=\"sessionBaseKey\">An optional key that identifies the type of session.\n        /// This can be used to distinguish between multiple application launch scenarios.</param>\n        public static void RegisterFrame(Frame frame, String sessionStateKey, String sessionBaseKey = null)\n        {\n            if (frame.GetValue(FrameSessionStateKeyProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames can only be registered to one session state key\");\n            }\n\n            if (frame.GetValue(FrameSessionStateProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames must be either be registered before accessing frame session state, or not registered at all\");\n            }\n\n            if (!string.IsNullOrEmpty(sessionBaseKey))\n            {\n                frame.SetValue(FrameSessionBaseKeyProperty, sessionBaseKey);\n                sessionStateKey = sessionBaseKey + \"_\" + sessionStateKey;\n            }\n\n            // Use a dependency property to associate the session key with a frame, and keep a list of frames whose\n            // navigation state should be managed\n            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);\n            _registeredFrames.Add(new WeakReference<Frame>(frame));\n\n            // Check to see if navigation state can be restored\n            RestoreFrameNavigationState(frame);\n        }\n\n        /// <summary>\n        /// Disassociates a <see cref=\"Frame\"/> previously registered by <see cref=\"RegisterFrame\"/>\n        /// from <see cref=\"SessionState\"/>.  Any navigation state previously captured will be\n        /// removed.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should no longer be\n        /// managed.</param>\n        public static void UnregisterFrame(Frame frame)\n        {\n            // Remove session state and remove the frame from the list of frames whose navigation\n            // state will be saved (along with any weak references that are no longer reachable)\n            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));\n            _registeredFrames.RemoveAll((weakFrameReference) =>\n            {\n                Frame testFrame;\n                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;\n            });\n        }\n\n        /// <summary>\n        /// Provides storage for session state associated with the specified <see cref=\"Frame\"/>.\n        /// Frames that have been previously registered with <see cref=\"RegisterFrame\"/> have\n        /// their session state saved and restored automatically as a part of the global\n        /// <see cref=\"SessionState\"/>.  Frames that are not registered have transient state\n        /// that can still be useful when restoring pages that have been discarded from the\n        /// navigation cache.\n        /// </summary>\n        /// <remarks>Apps may choose to rely on <see cref=\"NavigationHelper\"/> to manage\n        /// page-specific state instead of working with frame session state directly.</remarks>\n        /// <param name=\"frame\">The instance for which session state is desired.</param>\n        /// <returns>A collection of state subject to the same serialization mechanism as\n        /// <see cref=\"SessionState\"/>.</returns>\n        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)\n        {\n            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);\n\n            if (frameState == null)\n            {\n                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);\n                if (frameSessionKey != null)\n                {\n                    // Registered frames reflect the corresponding session state\n                    if (!_sessionState.ContainsKey(frameSessionKey))\n                    {\n                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();\n                    }\n                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];\n                }\n                else\n                {\n                    // Frames that aren't registered have transient state\n                    frameState = new Dictionary<String, Object>();\n                }\n                frame.SetValue(FrameSessionStateProperty, frameState);\n            }\n            return frameState;\n        }\n\n        private static void RestoreFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            if (frameState.ContainsKey(\"Navigation\"))\n            {\n                frame.SetNavigationState((String)frameState[\"Navigation\"]);\n            }\n        }\n\n        private static void SaveFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            frameState[\"Navigation\"] = frame.GetNavigationState();\n        }\n    }\n    public class SuspensionManagerException : Exception\n    {\n        public SuspensionManagerException()\n        {\n        }\n\n        public SuspensionManagerException(Exception e)\n            : base(\"SuspensionManager failed\", e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Converters/DateTimeToStringConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing Windows.UI.Xaml.Data;\n\nnamespace SQLiteDemo.Converters\n{\n    class DateTimeToStringConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            string result = \"\";\n\n            if (value is DateTime)\n            {\n                DateTime theDate = (DateTime)value;\n                result = string.Format(\"{0:d}\", theDate);\n            }\n            else\n            {\n                DateTime theDate = DateTime.Now;\n                result = string.Format(\"{0:d}\", theDate);\n            }\n\n            return result;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            return System.Convert.ToDateTime(value);\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/CreateDatabase.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace SQLiteDemo\n{\n    public class CreateDatabase\n    {\n        public static void LoadDatabase(SQLiteConnection db)\n        {\n            string sql = @\"CREATE TABLE IF NOT EXISTS\n                                Customer (Id      INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n                                            Name    VARCHAR( 140 ),\n                                            City    VARCHAR( 140 ),\n                                            Contact VARCHAR( 140 ) \n                            );\";\n            using (var statement = db.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            sql = @\"CREATE TABLE IF NOT EXISTS\n                                Project (Id          INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n                                         CustomerId  INTEGER,\n                                         Name        VARCHAR( 140 ),\n                                         Description VARCHAR( 140 ),\n                                         DueDate     DATETIME,\n                                         FOREIGN KEY(CustomerId) REFERENCES Customer(Id) ON DELETE CASCADE \n                            )\";\n            using (var statement = db.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            // Turn on Foreign Key constraints\n            sql = @\"PRAGMA foreign_keys = ON\";\n            using (var statement = db.Prepare(sql))\n            {\n                statement.Step();\n            }\n        }\n\n        public async static Task ResetDataAsync(SQLiteConnection db)\n        {\n            // Empty the Customer and Project tables \n            string sql = @\"DELETE FROM Project\";\n            using (var statement = db.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            sql = @\"DELETE FROM Customer\";\n            using (var statement = db.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            List<Task> tasks = new List<Task>();\n\n            // Add seed customers and projects\n            var cust1Task = InsertCustomer(db, \"Adventure Works\", \"Bellevue\", \"Mu Han\");\n            tasks.Add(cust1Task.ContinueWith((id) => InsertProject(db, id.Result, \"Expense Reports\", \"Windows Store app\", DateTime.Today.AddDays(4))));\n            tasks.Add(cust1Task.ContinueWith((id) => InsertProject(db, id.Result, \"Time Reporting\", \"Windows Store app\", DateTime.Today.AddDays(14))));\n            tasks.Add(cust1Task.ContinueWith((id) => InsertProject(db, id.Result, \"Project Management\", \"Windows Store app\", DateTime.Today.AddDays(24))));\n            await Task.WhenAll(tasks.ToArray());\n\n            tasks = new List<Task>();\n            var cust2Task = InsertCustomer(db, \"Contoso\", \"Seattle\", \"David Hamilton\");\n            tasks.Add(cust2Task.ContinueWith((id) => InsertProject(db, id.Result, \"Soccer Scheduling\", \"Windows Phone app\", DateTime.Today.AddDays(6))));\n            await Task.WhenAll(tasks.ToArray());\n\n            tasks = new List<Task>();\n            var cust3Task = InsertCustomer(db, \"Fabrikam\", \"Redmond\", \"Guido Pica\");\n            tasks.Add(cust3Task.ContinueWith((id) => InsertProject(db, id.Result, \"Product Catalog\", \"MVC4 app\", DateTime.Today.AddDays(4))));\n            tasks.Add(cust3Task.ContinueWith((id) => InsertProject(db, id.Result, \"Expense Reports\", \"Windows Store app\", DateTime.Today.AddDays(-3))));\n            tasks.Add(cust3Task.ContinueWith((id) => InsertProject(db, id.Result, \"Expense Reports\", \"Windows Phone app\", DateTime.Today.AddDays(45))));\n            await Task.WhenAll(tasks.ToArray());\n\n            tasks = new List<Task>();\n            var cust4Task = InsertCustomer(db, \"Tailspin Toys\", \"Kent\", \"Michelle Alexander\");\n            tasks.Add(cust4Task.ContinueWith((id) => InsertProject(db, id.Result, \"Kids Game\", \"Windows Store app\", DateTime.Today.AddDays(60))));\n            await Task.WhenAll(tasks.ToArray());\n        }\n\n        private async static Task<long> InsertCustomer(ISQLiteConnection db, string customerName, string customerCity, string customerContact)\n        {\n            try\n            {\n                await Task.Run(() =>\n                {\n                    using (var custstmt = db.Prepare(\"INSERT INTO Customer (Name, City, Contact) VALUES (?, ?, ?)\"))\n                    {\n                        custstmt.Bind(1, customerName);\n                        custstmt.Bind(2, customerCity);\n                        custstmt.Bind(3, customerContact);\n                        custstmt.Step();\n\n                        Debug.WriteLine(\"INSERT completed OK for customer \" + customerName);\n                    }\n                }\n                );\n            }\n            catch (Exception ex)\n            {\n                Debug.WriteLine(ex.Message);\n                return 0;\n            }\n\n            using (var idstmt = db.Prepare(\"SELECT last_insert_rowid()\"))\n            {\n                idstmt.Step();\n                {\n                    Debug.WriteLine(\"INSERT ID for customer \" + customerName + \": \" + (long)idstmt[0]);\n                    return (long)idstmt[0];\n                }\n                throw new Exception(\"Couldn't get inserted ID\");\n            };\n        }\n\n        private static Task InsertProject(ISQLiteConnection db, long customerID, string name, string description, DateTime duedate)\n        {\n            return Task.Run(() =>\n            {\n\n                using (var projstmt = db.Prepare(\"INSERT INTO Project (CustomerId, Name, Description, DueDate) VALUES (?, ?, ?, ?)\"))\n                {\n\n                    // Reset the prepared statement so we can reuse it.\n                    projstmt.ClearBindings();\n                    projstmt.Reset();\n\n                    projstmt.Bind(1, customerID);\n                    projstmt.Bind(2, name);\n                    projstmt.Bind(3, description);\n                    projstmt.Bind(4, duedate.ToString(\"yyyy-MM-dd HH:mm:ss\"));\n\n                    projstmt.Step();\n                    Debug.WriteLine(\"INSERT Project completed OK for customer \" + customerID);\n                }\n            }\n            );\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/MainPage.xaml",
    "content": "﻿<Page\n    x:Name=\"pageRoot\"\n    x:Class=\"SQLiteDemo.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SQLiteDemo\"\n    xmlns:common=\"using:SQLiteDemo.Common\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n        <DataTemplate x:Key=\"CustomerDataTemplate\">\n            <StackPanel Orientation=\"Vertical\" Margin=\"10,0,0,12\">\n                <TextBlock Text=\"{Binding Name}\" Style=\"{StaticResource BodyTextBlockStyle}\" Foreground=\"Blue\"/>\n                <TextBlock Text=\"{Binding City}\" Style=\"{StaticResource BodyTextBlockStyle}\" />\n                <TextBlock Text=\"{Binding Contact}\" Style=\"{StaticResource BodyTextBlockStyle}\" />\n            </StackPanel>\n        </DataTemplate>\n    </Page.Resources>\n    <Page.BottomAppBar>\n        <CommandBar>\n            <CommandBar.SecondaryCommands>\n                <AppBarButton x:Name=\"ResetDataAppBarButton\" Icon=\"Refresh\"  Label=\"Reset data\" Click=\"ResetDataAppBarButton_Click\"/>\n            </CommandBar.SecondaryCommands>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <!--\n        This grid acts as a root panel for the page that defines two rows:\n        * Row 0 contains the back button and page title\n        * Row 1 contains the rest of the page layout\n    -->\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.ChildrenTransitions>\n            <TransitionCollection>\n                <EntranceThemeTransition/>\n            </TransitionCollection>\n        </Grid.ChildrenTransitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"100\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- page title -->\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"20\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n            <TextBlock x:Name=\"pageTitle\" Text=\"SQLite Demo\" Style=\"{StaticResource HeaderTextBlockStyle}\" Grid.Column=\"1\" \n                        IsHitTestVisible=\"false\" TextWrapping=\"NoWrap\" VerticalAlignment=\"Bottom\" Margin=\"0,0,20,20\"/>\n        </Grid>\n\n        <Grid Grid.Row=\"1\">\n            <StackPanel Orientation=\"Vertical\" Margin=\"20,10,0,20\" Width=\"300\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Stretch\">\n                <TextBlock Text=\"Customers\" Margin=\"0,0,0,10\" Style=\"{StaticResource TitleTextBlockStyle}\"/>\n                <ListView x:Name=\"CustomersList\" ItemTemplate=\"{StaticResource CustomerDataTemplate}\" SelectionChanged=\"CustomersList_SelectionChanged\"/>\n            </StackPanel>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/MainPage.xaml.cs",
    "content": "﻿using SQLiteDemo.Common;\nusing SQLiteDemo.ViewModels;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237\n\nnamespace SQLiteDemo\n{\n    /// <summary>\n    /// A basic page that provides characteristics common to most applications.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n\n        private NavigationHelper navigationHelper;\n\n        CustomersViewModel viewModel;\n        DateTime timestamp = DateTime.MinValue;\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n            this.navigationHelper.SaveState += navigationHelper_SaveState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation. Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session. The state will be null the first time a page is visited.</param>\n        private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n        }\n\n        /// <summary>\n        /// Preserves state associated with this page in case the application is suspended or the\n        /// page is discarded from the navigation cache.  Values must conform to the serialization\n        /// requirements of <see cref=\"SuspensionManager.SessionState\"/>.\n        /// </summary>\n        /// <param name=\"sender\">The source of the event; typically <see cref=\"NavigationHelper\"/></param>\n        /// <param name=\"e\">Event data that provides an empty dictionary to be populated with\n        /// serializable state.</param>\n        private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)\n        {\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n\n            if (viewModel != null && timestamp >= viewModel.Timestamp)\n                return;\n\n            LoadData();\n\n            timestamp = DateTime.Now;\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void LoadData()\n        {\n            viewModel = CustomersViewModel.GetDefault();\n            CustomersList.ItemsSource = viewModel.GetAllItems();\n        }\n\n        private async void ResetDataAppBarButton_Click(object sender, RoutedEventArgs e)\n        {\n            AppBarButton button = sender as AppBarButton;\n            button.IsEnabled = false;\n\n            CustomersList.ItemsSource = null;\n            await SQLiteDemo.CreateDatabase.ResetDataAsync(App.conn);\n            LoadData();\n\n            button.IsEnabled = true;\n        }\n\n        private void CustomersList_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n             if (CustomersList.SelectedItem != null)\n             {\n                Frame.Navigate(typeof(ProjectsPage), ((Customer)CustomersList.SelectedItem).Id);\n             }\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity Name=\"74c15c34-9c10-4d66-9b40-ae6b0bf08c08\"\n            Publisher=\"CN=anwigley\"\n            Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"74c15c34-9c10-4d66-9b40-ae6b0bf08c08\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>SQLiteDemo.Windows</DisplayName>\n    <PublisherDisplayName>anwigley</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n        Executable=\"$targetnametoken$.exe\"\n        EntryPoint=\"SQLiteDemo.Windows.App\">\n        <uap:VisualElements\n            DisplayName=\"SQLiteDemo.Windows\"\n            Square150x150Logo=\"Assets\\Logo.png\"\n            Square44x44Logo=\"Assets\\SmallLogo.png\"\n            Description=\"SQLiteDemo.Windows\"          \n            BackgroundColor=\"#464646\">\n            <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ProjectsPage.xaml",
    "content": "﻿<Page\n    x:Name=\"pageRoot\"\n    x:Class=\"SQLiteDemo.ProjectsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SQLiteDemo\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n        <DataTemplate x:Key=\"ProjectDataTemplate\">\n            <Grid Margin=\"0,0,0,12\">\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"*\"/>\n                    <RowDefinition Height=\"*\"/>\n                    <RowDefinition Height=\"*\"/>\n                </Grid.RowDefinitions>\n                <TextBlock Text=\"{Binding Name}\" Grid.Row=\"0\" TextWrapping=\"Wrap\" VerticalAlignment=\"Top\" \n                           Style=\"{StaticResource BodyTextBlockStyle}\" Foreground=\"#FF1268B2\" FontSize=\"18\"/>\n                <TextBlock Text=\"{Binding Description}\" Grid.Row=\"1\" VerticalAlignment=\"Center\" \n                           Style=\"{StaticResource BodyTextBlockStyle}\"/>\n                <StackPanel Orientation=\"Horizontal\" Grid.Row=\"2\" VerticalAlignment=\"Top\">\n                    <TextBlock Text=\"Due Date\" Margin=\"0,0,10,0\"\n                               Style=\"{StaticResource CaptionTextBlockStyle}\"/>\n                    <TextBlock Text=\"{Binding DueDate, Converter={StaticResource DateTimeToStringConverter}}\" \n                               Style=\"{StaticResource BodyTextBlockStyle}\"/>\n                </StackPanel>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.ChildrenTransitions>\n            <TransitionCollection>\n                <EntranceThemeTransition/>\n            </TransitionCollection>\n        </Grid.ChildrenTransitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"100\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- page title -->\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\"/>\n                <ColumnDefinition Width=\"*\"/>\n            </Grid.ColumnDefinitions>\n            <Button x:Name=\"backButton\" Margin=\"8,36,0,0\" Command=\"{Binding NavigationHelper.GoBackCommand, ElementName=pageRoot}\"\n                        Style=\"{StaticResource NavigationBackButtonNormalStyle}\"\n                        VerticalAlignment=\"Top\"\n                        AutomationProperties.Name=\"Back\"\n                        AutomationProperties.AutomationId=\"BackButton\"\n                        AutomationProperties.ItemType=\"Navigation Button\"/>\n            <TextBlock x:Name=\"pageTitle\" Text=\"customer_name\" Style=\"{StaticResource HeaderTextBlockStyle}\" Grid.Column=\"1\" \n                        IsHitTestVisible=\"false\" TextWrapping=\"NoWrap\" VerticalAlignment=\"Bottom\" Margin=\"12,0,20,20\"/>\n        </Grid>\n\n        <Grid Grid.Row=\"1\">\n            <StackPanel Orientation=\"Vertical\" Margin=\"20,10,0,20\" Width=\"300\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Stretch\">\n                <TextBlock Text=\"Projects\" Margin=\"0,0,0,10\" Style=\"{StaticResource SubheaderTextBlockStyle}\"/>\n                <ListView x:Name=\"ProjectsList\" ItemTemplate=\"{StaticResource ProjectDataTemplate}\"/>\n            </StackPanel>\n        </Grid>\n    </Grid>\n\n</Page>\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ProjectsPage.xaml.cs",
    "content": "﻿using SQLiteDemo.Common;\nusing SQLiteDemo.ViewModels;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace SQLiteDemo\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class ProjectsPage : Page\n    {\n\n        private NavigationHelper navigationHelper;\n\n        ProjectsViewModel viewModel;\n        DateTime timestamp = DateTime.MinValue;\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n\n        public ProjectsPage()\n        {\n            this.InitializeComponent();\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n            this.navigationHelper.SaveState += navigationHelper_SaveState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation. Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session. The state will be null the first time a page is visited.</param>\n        private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n        }\n\n        /// <summary>\n        /// Preserves state associated with this page in case the application is suspended or the\n        /// page is discarded from the navigation cache.  Values must conform to the serialization\n        /// requirements of <see cref=\"SuspensionManager.SessionState\"/>.\n        /// </summary>\n        /// <param name=\"sender\">The source of the event; typically <see cref=\"NavigationHelper\"/></param>\n        /// <param name=\"e\">Event data that provides an empty dictionary to be populated with\n        /// serializable state.</param>\n        private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)\n        {\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n\n            // Hide the on-canvas Back Button if we're on a phone or there's a shell drawn Back\n            if (SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility == AppViewBackButtonVisibility.Visible \n                || Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.Phone.UI.Input.HardwareButtons\"))\n            {\n                backButton.Visibility = Visibility.Collapsed;\n            }\n\n            var customerID = (long)e.Parameter;\n\n            var custViewModel = CustomersViewModel.GetDefault();\n            pageTitle.Text = custViewModel.GetItem(customerID).Name;\n\n            if (viewModel != null && (customerID == viewModel.CustomerId) && (timestamp >= viewModel.Timestamp))\n                return;\n\n            viewModel = ProjectsViewModel.GetForCustomerId(customerID);\n            ProjectsList.ItemsSource = viewModel.GetAllItems();\n\n            timestamp = DateTime.Now;\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SQLiteDemo.Windows\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SQLiteDemo.Windows\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/SQLiteDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.props\" Condition=\"Exists('..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.props')\" />\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SQLiteDemo</RootNamespace>\n    <AssemblyName>SQLiteDemo.Windows</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SQLiteDemo.Windows_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>f6b82a5e</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <ApplicationDefinition Include=\"App.xaml\">\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"ProjectsPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\NavigationHelper.cs\" />\n    <Compile Include=\"Common\\ObservableDictionary.cs\" />\n    <Compile Include=\"Common\\RelayCommand.cs\" />\n    <Compile Include=\"Common\\SuspensionManager.cs\" />\n    <Compile Include=\"Converters\\DateTimeToStringConverter.cs\" />\n    <Compile Include=\"CreateDatabase.cs\" />\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"ProjectsPage.xaml.cs\">\n      <DependentUpon>ProjectsPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ViewModels\\Customer.cs\" />\n    <Compile Include=\"ViewModels\\CustomersViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Project.cs\" />\n    <Compile Include=\"ViewModels\\ProjectsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TableViewModelBase.cs\" />\n    <Compile Include=\"ViewModels\\ViewModelBase.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"SQLiteDemo.Windows_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Common\\ReadMe.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"SQLitePCL\">\n      <HintPath>..\\packages\\SQLitePCL.3.8.5.1\\lib\\netcore45\\SQLitePCL.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SQLitePCL.Ext, Version=3.8.5.1, Culture=neutral, PublicKeyToken=bddade01e9c850c5, processorArchitecture=x86\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>.\\SQLitePCL.Ext.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"Microsoft.VCLibs.AppLocal, version=14.0\">\n      <Name>Microsoft Visual C++  AppLocal Runtime Package for Windows UAP</Name>\n    </SDKReference>\n    <SDKReference Include=\"SQLite.UAP.2015, Version=3.8.10\">\n      <Name>SQLite for Universal App Platform</Name>\n    </SDKReference>\n    <SDKReference Include=\"WindowsMobile, Version=10.0.0.1\">\n      <Name>Microsoft Mobile Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.props'))\" />\n    <Error Condition=\"!Exists('..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.targets\" Condition=\"Exists('..\\..\\packages\\SQLitePCL.3.8.5.1\\build\\netcore45\\SQLitePCL.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/Customer.cs",
    "content": "﻿\nnamespace SQLiteDemo.ViewModels\n{\n  public class Customer : ViewModelBase\n  {\n    #region Properties\n\n    private long id = -1;\n    public long Id\n    {\n      get { return id; }\n      set { SetProperty(ref id, value); }\n    }\n\n    private string name = string.Empty;\n    public string Name\n    {\n      get { return name; }\n      set { if (SetProperty(ref name, value)) IsDirty = true; }\n    }\n\n    private string city = string.Empty;\n    public string City\n    {\n      get { return city; }\n      set { if (SetProperty(ref city, value)) IsDirty = true; }\n    }\n\n    private string contact = string.Empty;\n    public string Contact\n    {\n      get { return contact; }\n      set { if (SetProperty(ref contact, value)) IsDirty = true; }\n    }\n\n    private bool isDirty = false;\n    public bool IsDirty\n    {\n      get { return isDirty; }\n      set { SetProperty(ref isDirty, value); }\n    }\n\n    #endregion \"Properties\"\n\n    internal Customer()\n    { \n    }\n\n    internal Customer(long id, string name, string city, string contact)\n    {\n      this.id = id;\n      this.name = name;\n      this.city = city;\n      this.contact = contact;\n      this.isDirty = false;\n    }\n\n    public bool IsNew { get { return Id < 0; } }\n  }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/CustomersViewModel.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\n\nnamespace SQLiteDemo.ViewModels\n{\n    public class CustomersViewModel : TableViewModelBase<Customer, long>\n    {\n        private CustomersViewModel() { }\n\n        static CustomersViewModel instance;\n        public static CustomersViewModel GetDefault()\n        {\n            lock (typeof(CustomersViewModel))\n            {\n                if (instance == null)\n                    instance = new CustomersViewModel();\n            }\n\n            return instance;\n        }\n\n        protected override string GetSelectAllSql()\n        {\n            return \"SELECT Id, Name, City, Contact FROM Customer\";\n        }\n\n        protected override void FillSelectAllStatement(ISQLiteStatement statement)\n        {\n            // nothing to do\n        }\n\n        protected override Customer CreateItem(ISQLiteStatement statement)\n        {\n            var c = new Customer(\n              (long)statement[0],\n              (string)statement[1],\n              (string)statement[2],\n              (string)statement[3]);\n            Debug.WriteLine(\"Selected Customer name:\" + c.Name);\n\n            return c;\n        }\n\n        protected override string GetSelectItemSql()\n        {\n            return \"SELECT Id, Name, City, Contact FROM Customer WHERE Id = ?\";\n        }\n\n        protected override void FillSelectItemStatement(ISQLiteStatement statement, long key)\n        {\n            statement.Bind(1, key);\n        }\n\n        protected override string GetInsertItemSql()\n        {\n            return \"INSERT INTO Customer (Name, City, Contact) VALUES (@name, @city, @contact)\";\n        }\n\n        protected override void FillInsertStatement(ISQLiteStatement statement, Customer item)\n        {\n            // NOTE that named parameters have a leading \"@\",\":\" or \"$\".\n            statement.Bind(\"@name\", item.Name);\n            statement.Bind(\"@city\", item.City);\n            statement.Bind(\"@contact\", item.Contact);\n        }\n\n        protected override string GetUpdateItemSql()\n        {\n            return \"UPDATE Customer SET Name = ?, City = ?, Contact = ? WHERE Id = ?\";\n        }\n\n        protected override void FillUpdateStatement(ISQLiteStatement statement, long key, Customer item)\n        {\n            // NOTE that the first host parameter has an index of 1, not 0.\n            statement.Bind(1, item.Name);\n            statement.Bind(2, item.City);\n            statement.Bind(3, item.Contact);\n            statement.Bind(4, key);\n        }\n\n        protected override string GetDeleteItemSql()\n        {\n            return \"DELETE FROM Customer WHERE Id = ?\";\n        }\n\n        protected override void FillDeleteItemStatement(ISQLiteStatement statement, long key)\n        {\n            statement.Bind(1, key);\n        }\n    }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/Project.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace SQLiteDemo.ViewModels\n{\n  public class Project : ViewModelBase\n  {\n    #region Properties\n\n    private long id = -1;\n    public long Id\n    {\n      get { return id; }\n      //private set { SetProperty(ref id, value); }\n    }\n\n    private long customerId = -1;\n    public long CustomerId\n    {\n      get { return customerId; }\n      //private set { SetProperty(ref customerId, value); }\n    }\n\n    private string name = string.Empty;\n    public string Name\n    {\n      get { return name; }\n      set { if (SetProperty(ref name, value)) IsDirty = true; }\n    }\n\n    private string description = string.Empty;\n    public string Description\n    {\n      get { return description; }\n      set { if (SetProperty(ref description, value)) IsDirty = true; }\n    }\n\n    private DateTime dueDate = System.DateTime.Today.AddDays(7);\n    public DateTime DueDate\n    {\n      get { return dueDate; }\n      set { if (SetProperty(ref dueDate, value)) IsDirty = true; }\n    }\n\n    private bool isDirty = false;\n    public bool IsDirty\n    {\n      get { return isDirty; }\n      set { SetProperty(ref isDirty, value); }\n    }\n\n    #endregion \"Properties\"\n\n    internal Project(long customerId)\n    {\n      this.customerId = customerId;\n    }\n\n    public bool IsNew { get { return Id < 0; } }\n\n    internal Project(long id, long customerId, string name, string description, DateTime dueDate)\n    {\n      this.id = id;\n      this.customerId = customerId;\n      this.name = name;\n      this.description = description;\n      this.dueDate = dueDate;\n    }\n  }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/ProjectsViewModel.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\n\nnamespace SQLiteDemo.ViewModels\n{\n  public class ProjectsViewModel : TableViewModelBase<Project, long>\n  {\n    private ProjectsViewModel(long customerId)\n    {\n      CustomerId = customerId;\n    }\n\n    private ProjectsViewModel()\n    {\n      CustomerId = -1;\n    }\n\n    static Dictionary<long, ProjectsViewModel> instances = new Dictionary<long, ProjectsViewModel>();\n    static ProjectsViewModel defaultInstance;\n\n    public override DateTime Timestamp\n    {\n      get\n      {\n        if (this == defaultInstance || defaultInstance == null)\n          return base.Timestamp;\n\n        return defaultInstance.Timestamp;\n      }\n      protected set\n      {\n        if (this == defaultInstance || defaultInstance == null)\n          base.Timestamp = value;\n        else\n          defaultInstance.Timestamp = value;\n      }\n    }\n\n    public static ProjectsViewModel GetForCustomerId(long customerId)\n    {\n      lock (typeof(ProjectsViewModel))\n      {\n        if (instances.ContainsKey(customerId) != true)\n          instances[customerId] = new ProjectsViewModel(customerId);\n      }\n\n      return instances[customerId];\n    }\n\n    public static ProjectsViewModel GetDefault()\n    {\n      lock (typeof(ProjectsViewModel))\n      {\n        if (defaultInstance == null)\n          defaultInstance = new ProjectsViewModel();\n      }\n\n      return defaultInstance;\n    }\n\n    public long CustomerId { get; private set; }\n\n    protected override string GetSelectAllSql()\n    {\n      if (CustomerId < 0)\n        return @\"SELECT Id, CustomerId, Name, Description, DueDate \n                           FROM Project\n                           ORDER BY DueDate\";\n      else\n        return @\"SELECT Id, CustomerId, Name, Description, DueDate \n                           FROM Project\n                           WHERE CustomerId = ?\n                           ORDER BY DueDate\";\n    }\n\n    protected override void FillSelectAllStatement(ISQLiteStatement statement)\n    {\n      if (CustomerId < 0)\n        return;\n\n      statement.Bind(1, CustomerId);\n    }\n\n    protected override Project CreateItem(ISQLiteStatement statement)\n    {\n      Project project = new Project(\n          (long)statement[0],\n          (long)statement[1],\n          (string)statement[2],\n          (string)statement[3],\n          DateTime.Parse((string)statement[4])\n        );\n\n      Debug.WriteLine(\"Selected Project name:\" + project.Name);\n      return project;\n    }\n\n    protected override string GetSelectItemSql()\n    {\n      return @\"SELECT Id, CustomerId, Name, Description, DueDate \n                           FROM Project\n                           WHERE Id = ?\";\n    }\n\n    protected override void FillSelectItemStatement(ISQLiteStatement statement, long key)\n    {\n      statement.Bind(1, key);\n    }\n\n    protected override string GetInsertItemSql()\n    {\n      return \"INSERT INTO Project (CustomerId, Name, Description, DueDate) VALUES (?, ?, ?, ?)\";\n    }\n\n    protected override void FillInsertStatement(ISQLiteStatement statement, Project item)\n    {\n      statement.Bind(1, item.CustomerId);\n      statement.Bind(2, item.Name);\n      statement.Bind(3, item.Description);\n      statement.Bind(4, item.DueDate.ToString(\"yyyy-MM-dd HH:mm:ss\"));\n    }\n\n    protected override string GetUpdateItemSql()\n    {\n      return \"UPDATE Project SET CustomerId = ?, Name = ?, Description = ?, DueDate = ? WHERE Id = ?\";\n    }\n\n    protected override void FillUpdateStatement(ISQLiteStatement statement, long key, Project item)\n    {\n      FillInsertStatement(statement, item);\n      statement.Bind(5, key);\n    }\n\n    protected override string GetDeleteItemSql()\n    {\n      return \"DELETE FROM Project WHERE Id = ?\";\n    }\n\n    protected override void FillDeleteItemStatement(ISQLiteStatement statement, long key)\n    {\n      statement.Bind(1, key);\n    }\n  }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/TableViewModelBase.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace SQLiteDemo.ViewModels\n{\n  public abstract class TableViewModelBase<TItemType, TKeyType>\n  {\n    protected abstract string GetSelectAllSql();\n    protected abstract void FillSelectAllStatement(ISQLiteStatement statement);\n\n    protected abstract TItemType CreateItem(ISQLiteStatement statement);\n    \n    protected abstract string GetSelectItemSql();\n    protected abstract void FillSelectItemStatement(ISQLiteStatement statement, TKeyType key);\n\n    protected abstract string GetDeleteItemSql();\n    protected abstract void FillDeleteItemStatement(ISQLiteStatement statement, TKeyType key);\n    \n    protected abstract string GetInsertItemSql();\n    protected abstract void FillInsertStatement(ISQLiteStatement statement, TItemType item);\n    \n    protected abstract string GetUpdateItemSql();\n    protected abstract void FillUpdateStatement(ISQLiteStatement statement, TKeyType key, TItemType item);\n\n    protected DateTime lastModifiedTime = DateTime.MaxValue;\n    public virtual DateTime Timestamp\n    {\n      get { return lastModifiedTime; }\n      protected set { lastModifiedTime = value; }\n    }\n\n    private ISQLiteConnection sqlConnection\n    {\n        get\n        {\n#if SILVERLIGHT\n            return MSOpenTechSQLiteDemo.App.conn;\n#else\n            return SQLiteDemo.App.conn;\n#endif\n        }\n    }\n\n    public ObservableCollection<TItemType> GetAllItems()\n    {\n      var items = new ObservableCollection<TItemType>();\n      using (var statement = sqlConnection.Prepare(GetSelectAllSql()))\n      {\n        FillSelectAllStatement(statement);\n        while (statement.Step() == SQLiteResult.ROW)\n        {\n          var item = CreateItem(statement);\n          items.Add(item);\n        }\n      }\n      Timestamp = DateTime.Now;\n\n      return items;\n    }\n\n    public TItemType GetItem(TKeyType key)\n    {\n        using (var statement = sqlConnection.Prepare(GetSelectItemSql()))\n      {\n        FillSelectItemStatement(statement, key);\n\n        if (statement.Step() == SQLiteResult.ROW)\n        {\n          var item = CreateItem(statement);\n          Timestamp = DateTime.Now;\n          return item;\n        }\n      }\n\n      throw new ArgumentOutOfRangeException(\"key not found\");\n    }\n\n    public void InsertItem(TItemType item)\n    {\n        using (var statement = sqlConnection.Prepare(GetInsertItemSql()))\n      {\n        FillInsertStatement(statement, item);\n        statement.Step();\n      }\n      Timestamp = DateTime.Now;\n    }\n\n    public void UpdateItem(TKeyType key, TItemType item)\n    {\n        using (var statement = sqlConnection.Prepare(GetUpdateItemSql()))\n      {\n        FillUpdateStatement(statement, key, item);\n        statement.Step();\n      }\n      Timestamp = DateTime.Now;\n    }\n\n    public void DeleteItem(TKeyType key)\n    {\n        using (var statement = sqlConnection.Prepare(GetDeleteItemSql()))\n      {\n        FillDeleteItemStatement(statement, key);\n        statement.Step();\n      }\n      Timestamp = DateTime.Now;\n    }\n  }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/ViewModels/ViewModelBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace SQLiteDemo.ViewModels\n{\n  public class ViewModelBase : INotifyPropertyChanged\n  {\n    public event PropertyChangedEventHandler PropertyChanged;\n\n    protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = \"\")\n    {\n      var handler = this.PropertyChanged;\n      if (handler != null)\n      {\n        handler(this, new PropertyChangedEventArgs(propertyName));\n      }\n    }\n\n    protected bool SetProperty<T>(ref T current, T value, [CallerMemberName] string propertyName = \"\")\n    {\n      if (object.Equals(current, value))\n        return false;\n\n      current = value;\n      RaisePropertyChanged(propertyName);\n      return true;\n    }\n  }\n}\n"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"SQLitePCL\" version=\"3.8.5.1\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "SQLiteDemo/SQLiteDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SQLiteDemo\", \"SQLiteDemo\\SQLiteDemo.csproj\", \"{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x64.Build.0 = Debug|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x86.Build.0 = Debug|x86\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|ARM.Build.0 = Release|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x64.ActiveCfg = Release|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x64.Build.0 = Release|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x64.Deploy.0 = Release|x64\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x86.ActiveCfg = Release|x86\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x86.Build.0 = Release|x86\n\t\t{9D1D1BF6-1644-4635-B00A-BFB52FD53EB9}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/AboutPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    mc:Ignorable=\"d\">\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"AboutPageHeader\" Text=\"about\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <StackPanel Orientation=\"Vertical\" d:LayoutOverrides=\"Height\" VerticalAlignment=\"Top\" Margin=\"20,200,0,0\">\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"VersionText\" Text=\"Version:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Version}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\"/>\n                </StackPanel>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock x:Uid=\"PublishedByText\" Text=\"Published by:\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" Margin=\"0,0,10,0\"/>\n                    <TextBlock Text=\"{Binding Publisher}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                </StackPanel>\n                <TextBlock x:Uid=\"AppRights\" Text=\"AppRights\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,10,0,0\" />\n                <TextBlock x:Uid=\"AppLimitation\" Text=\"AppLimitation\" HorizontalAlignment=\"Left\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" VerticalAlignment=\"Center\" Margin=\"0,15,0,0\" />\n            </StackPanel>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/AboutPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class AboutPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public AboutPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var packageId = Windows.ApplicationModel.Package.Current.Id;\n            var version = packageId.Version;\n            this.DefaultViewModel[\"Version\"] = String.Format(\"{0}.{1}.{2}.{3}\", version.Major, version.Minor, version.Build, version.Revision);\n            this.DefaultViewModel[\"Publisher\"] = packageId.Publisher.Replace(\"CN=\", string.Empty);\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/App.xaml",
    "content": "﻿<Application\n    x:Class=\"ContosoCookbook.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:converters=\"using:ContosoCookbook.Converters\">\n    \n    <Application.Resources>\n        <converters:UserImagesDisplayConverter x:Key=\"ImagesDisplayConverter\"/>\n        <converters:ImageSourceToStringConverter x:Key=\"ToStringConverter\"/>\n\n        <SolidColorBrush x:Key=\"AccentBrush\" Color=\"{ThemeResource SystemAccentColor}\" />\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Phone.UI.Input;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used when the application is launched to open a specific file, to display\n        /// search results, and so forth.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                if (!rootFrame.Navigate(typeof(MainPage), \"AllGroups\"))\n                {\n                    throw new Exception(\"Failed to create initial page\");\n                }\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n\n        private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            Frame frame = Window.Current.Content as Frame;\n            if (frame == null)\n            {\n                return;\n            }\n\n            if (frame.CanGoBack)\n            {\n                frame.GoBack();\n                e.Handled = true;\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Common/NavigationHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// NavigationManager aids in navigation between pages.  It provides commands used to \n    /// navigate back and forward as well as registers for standard mouse and keyboard \n    /// shortcuts used to go back and forward.  In addition it integrates SuspensionManger\n    /// to handle process lifetime management and state management when navigating between\n    /// pages.\n    /// </summary>\n    /// <example>\n    /// To make use of NavigationManager, follow these two steps or\n    /// start with a BasicPage or any other Page item template other than BlankPage.\n    /// \n    /// 1) Create an instance of the NaivgationHelper somewhere such as in the \n    ///     constructor for the page and register a callback for the LoadState and \n    ///     SaveState events.\n    /// <code>\n    ///     public MyPage()\n    ///     {\n    ///         this.InitializeComponent();\n    ///         var navigationHelper = new NavigationHelper(this);\n    ///         this.navigationHelper.LoadState += navigationHelper_LoadState;\n    ///         this.navigationHelper.SaveState += navigationHelper_SaveState;\n    ///     }\n    ///     \n    ///     private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n    ///     { }\n    ///     private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)\n    ///     { }\n    /// </code>\n    /// \n    /// 2) Register the page to call into the NavigationManager whenever the page participates \n    ///     in navigation by overriding the <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedTo\"/> \n    ///     and <see cref=\"Windows.UI.Xaml.Controls.Page.OnNavigatedFrom\"/> events.\n    /// <code>\n    ///     protected override void OnNavigatedTo(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedTo(e);\n    ///     }\n    ///     \n    ///     protected override void OnNavigatedFrom(NavigationEventArgs e)\n    ///     {\n    ///         navigationHelper.OnNavigatedFrom(e);\n    ///     }\n    /// </code>\n    /// </example>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public class NavigationHelper : DependencyObject\n    {\n        private Page Page { get; set; }\n        private Frame Frame { get { return this.Page.Frame; } }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"NavigationHelper\"/> class.\n        /// </summary>\n        /// <param name=\"page\">A reference to the current page used for navigation.  \n        /// This reference allows for frame manipulation and to ensure that keyboard \n        /// navigation requests only occur when the page is occupying the entire window.</param>\n        public NavigationHelper(Page page)\n        {\n            this.Page = page;\n\n            // When this page is part of the visual tree make two changes:\n            // 1) Map application view state to visual state for the page\n            // 2) Handle keyboard and mouse navigation requests\n            this.Page.Loaded += (sender, e) =>\n            {\n                // Keyboard and mouse navigation only apply when occupying the entire window\n                if (this.Page.ActualHeight == Window.Current.Bounds.Height &&\n                    this.Page.ActualWidth == Window.Current.Bounds.Width)\n                {\n                    // Listen to the window directly so focus isn't required\n                    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=\n                        CoreDispatcher_AcceleratorKeyActivated;\n                    Window.Current.CoreWindow.PointerPressed +=\n                        this.CoreWindow_PointerPressed;\n                }\n            };\n\n            // Undo the same changes when the page is no longer visible\n            this.Page.Unloaded += (sender, e) =>\n            {\n                Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=\n                    CoreDispatcher_AcceleratorKeyActivated;\n                Window.Current.CoreWindow.PointerPressed -=\n                    this.CoreWindow_PointerPressed;\n            };\n        }\n\n        #region Navigation support\n\n        RelayCommand _goBackCommand;\n        RelayCommand _goForwardCommand;\n\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used to bind to the back Button's Command property\n        /// for navigating to the most recent item in back navigation history, if a Frame\n        /// manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoBack\"/>\n        /// as the Execute Action and <see cref=\"CanGoBack\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoBackCommand\n        {\n            get\n            {\n                if (_goBackCommand == null)\n                {\n                    _goBackCommand = new RelayCommand(\n                        () => this.GoBack(),\n                        () => this.CanGoBack());\n                }\n                return _goBackCommand;\n            }\n            set\n            {\n                _goBackCommand = value;\n            }\n        }\n        /// <summary>\n        /// <see cref=\"RelayCommand\"/> used for navigating to the most recent item in \n        /// the forward navigation history, if a Frame manages its own navigation history.\n        /// \n        /// The <see cref=\"RelayCommand\"/> is set up to use the virtual method <see cref=\"GoForward\"/>\n        /// as the Execute Action and <see cref=\"CanGoForward\"/> for CanExecute.\n        /// </summary>\n        public RelayCommand GoForwardCommand\n        {\n            get\n            {\n                if (_goForwardCommand == null)\n                {\n                    _goForwardCommand = new RelayCommand(\n                        () => this.GoForward(),\n                        () => this.CanGoForward());\n                }\n                return _goForwardCommand;\n            }\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go back.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the back navigation history.\n        /// </returns>\n        public virtual bool CanGoBack()\n        {\n            return this.Frame != null && this.Frame.CanGoBack;\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to determine if the <see cref=\"Frame\"/> can go forward.\n        /// </summary>\n        /// <returns>\n        /// true if the <see cref=\"Frame\"/> has at least one entry \n        /// in the forward navigation history.\n        /// </returns>\n        public virtual bool CanGoForward()\n        {\n            return this.Frame != null && this.Frame.CanGoForward;\n        }\n\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoBackCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoBack\"/> method.\n        /// </summary>\n        public virtual void GoBack()\n        {\n            if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();\n        }\n        /// <summary>\n        /// Virtual method used by the <see cref=\"GoForwardCommand\"/> property\n        /// to invoke the <see cref=\"Windows.UI.Xaml.Controls.Frame.GoForward\"/> method.\n        /// </summary>\n        public virtual void GoForward()\n        {\n            if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();\n        }\n\n        /// <summary>\n        /// Invoked on every keystroke, including system keys such as Alt key combinations, when\n        /// this page is active and occupies the entire window.  Used to detect keyboard navigation\n        /// between pages even when the page itself doesn't have focus.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,\n            AcceleratorKeyEventArgs e)\n        {\n            var virtualKey = e.VirtualKey;\n\n            // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n            // are pressed\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&\n                (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||\n                (int)virtualKey == 166 || (int)virtualKey == 167))\n            {\n                var coreWindow = Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n                bool noModifiers = !menuKey && !controlKey && !shiftKey;\n                bool onlyAlt = menuKey && !controlKey && !shiftKey;\n\n                if (((int)virtualKey == 166 && noModifiers) ||\n                    (virtualKey == VirtualKey.Left && onlyAlt))\n                {\n                    // When the previous key or Alt+Left are pressed navigate back\n                    e.Handled = true;\n                    this.GoBackCommand.Execute(null);\n                }\n                else if (((int)virtualKey == 167 && noModifiers) ||\n                    (virtualKey == VirtualKey.Right && onlyAlt))\n                {\n                    // When the next key or Alt+Right are pressed navigate forward\n                    e.Handled = true;\n                    this.GoForwardCommand.Execute(null);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender,\n            PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed) return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) this.GoBackCommand.Execute(null);\n                if (forwardPressed) this.GoForwardCommand.Execute(null);\n            }\n        }\n\n        #endregion\n\n        #region Process lifetime management\n\n        private String _pageKey;\n\n        /// <summary>\n        /// Register this event on the current page to populate the page\n        /// with content passed during navigation as well as any saved\n        /// state provided when recreating a page from a prior session.\n        /// </summary>\n        public event LoadStateEventHandler LoadState;\n        /// <summary>\n        /// Register this event on the current page to preserve\n        /// state associated with the current page in case the\n        /// application is suspended or the page is discarded from\n        /// the navigaqtion cache.\n        /// </summary>\n        public event SaveStateEventHandler SaveState;\n\n        /// <summary>\n        /// Invoked when this page is about to be displayed in a Frame.  \n        /// This method calls <see cref=\"LoadState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedTo(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            this._pageKey = \"Page-\" + this.Frame.BackStackDepth;\n\n            if (e.NavigationMode == NavigationMode.New)\n            {\n                // Clear existing state for forward navigation when adding a new page to the\n                // navigation stack\n                var nextPageKey = this._pageKey;\n                int nextPageIndex = this.Frame.BackStackDepth;\n                while (frameState.Remove(nextPageKey))\n                {\n                    nextPageIndex++;\n                    nextPageKey = \"Page-\" + nextPageIndex;\n                }\n\n                // Pass the navigation parameter to the new page\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));\n                }\n            }\n            else\n            {\n                // Pass the navigation parameter and preserved page state to the page, using\n                // the same strategy for loading suspended state and recreating pages discarded\n                // from cache\n                if (this.LoadState != null)\n                {\n                    this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Invoked when this page will no longer be displayed in a Frame.\n        /// This method calls <see cref=\"SaveState\"/>, where all page specific\n        /// navigation and process lifetime management logic should be placed.\n        /// </summary>\n        /// <param name=\"e\">Event data that describes how this page was reached.  The Parameter\n        /// property provides the group to be displayed.</param>\n        public void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            var frameState = SuspensionManager.SessionStateForFrame(this.Frame);\n            var pageState = new Dictionary<String, Object>();\n            if (this.SaveState != null)\n            {\n                this.SaveState(this, new SaveStateEventArgs(pageState));\n            }\n            frameState[_pageKey] = pageState;\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.LoadState\"/>event\n    /// </summary>\n    public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);\n    /// <summary>\n    /// Represents the method that will handle the <see cref=\"NavigationHelper.SaveState\"/>event\n    /// </summary>\n    public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);\n\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to load state.\n    /// </summary>\n    public class LoadStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </summary>\n        public Object NavigationParameter { get; private set; }\n        /// <summary>\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"LoadStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"navigationParameter\">\n        /// The parameter value passed to <see cref=\"Frame.Navigate(Type, Object)\"/> \n        /// when this page was initially requested.\n        /// </param>\n        /// <param name=\"pageState\">\n        /// A dictionary of state preserved by this page during an earlier\n        /// session.  This will be null the first time a page is visited.\n        /// </param>\n        public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.NavigationParameter = navigationParameter;\n            this.PageState = pageState;\n        }\n    }\n    /// <summary>\n    /// Class used to hold the event data required when a page attempts to save state.\n    /// </summary>\n    public class SaveStateEventArgs : EventArgs\n    {\n        /// <summary>\n        /// An empty dictionary to be populated with serializable state.\n        /// </summary>\n        public Dictionary<string, Object> PageState { get; private set; }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"SaveStateEventArgs\"/> class.\n        /// </summary>\n        /// <param name=\"pageState\">An empty dictionary to be populated with serializable state.</param>\n        public SaveStateEventArgs(Dictionary<string, Object> pageState)\n            : base()\n        {\n            this.PageState = pageState;\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Common/ObservableDictionary.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Foundation.Collections;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// Implementation of IObservableMap that supports reentrancy for use as a default view\n    /// model.\n    /// </summary>\n    public class ObservableDictionary : IObservableMap<string, object>\n    {\n        private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>\n        {\n            public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)\n            {\n                this.CollectionChange = change;\n                this.Key = key;\n            }\n\n            public CollectionChange CollectionChange { get; private set; }\n            public string Key { get; private set; }\n        }\n\n        private Dictionary<string, object> _dictionary = new Dictionary<string, object>();\n        public event MapChangedEventHandler<string, object> MapChanged;\n\n        private void InvokeMapChanged(CollectionChange change, string key)\n        {\n            var eventHandler = MapChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));\n            }\n        }\n\n        public void Add(string key, object value)\n        {\n            this._dictionary.Add(key, value);\n            this.InvokeMapChanged(CollectionChange.ItemInserted, key);\n        }\n\n        public void Add(KeyValuePair<string, object> item)\n        {\n            this.Add(item.Key, item.Value);\n        }\n\n        public bool Remove(string key)\n        {\n            if (this._dictionary.Remove(key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n                return true;\n            }\n            return false;\n        }\n\n        public bool Remove(KeyValuePair<string, object> item)\n        {\n            object currentValue;\n            if (this._dictionary.TryGetValue(item.Key, out currentValue) &&\n                Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);\n                return true;\n            }\n            return false;\n        }\n\n        public object this[string key]\n        {\n            get\n            {\n                return this._dictionary[key];\n            }\n            set\n            {\n                this._dictionary[key] = value;\n                this.InvokeMapChanged(CollectionChange.ItemChanged, key);\n            }\n        }\n\n        public void Clear()\n        {\n            var priorKeys = this._dictionary.Keys.ToArray();\n            this._dictionary.Clear();\n            foreach (var key in priorKeys)\n            {\n                this.InvokeMapChanged(CollectionChange.ItemRemoved, key);\n            }\n        }\n\n        public ICollection<string> Keys\n        {\n            get { return this._dictionary.Keys; }\n        }\n\n        public bool ContainsKey(string key)\n        {\n            return this._dictionary.ContainsKey(key);\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return this._dictionary.TryGetValue(key, out value);\n        }\n\n        public ICollection<object> Values\n        {\n            get { return this._dictionary.Values; }\n        }\n\n        public bool Contains(KeyValuePair<string, object> item)\n        {\n            return this._dictionary.Contains(item);\n        }\n\n        public int Count\n        {\n            get { return this._dictionary.Count; }\n        }\n\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return this._dictionary.GetEnumerator();\n        }\n\n        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)\n        {\n            int arraySize = array.Length;\n            foreach (var pair in this._dictionary)\n            {\n                if (arrayIndex >= arraySize) break;\n                array[arrayIndex++] = pair;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Common/ReadMe.txt",
    "content": "﻿The Common directory contains classes that simplify application development.\n\nClasses in the Common directory form part of your project and may be further enhanced to meet your\nneeds.  Care should be taken when altering existing methods and properties as incompatible changes\nwill require corresponding changes to code included in a variety of Visual Studio templates.  For\nexample, additional pages added to your project are written assuming that the original methods and\nproperties in Common classes are still present and that the names of the types have not changed."
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Common/RelayCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// A command whose sole purpose is to relay its functionality \n    /// to other objects by invoking delegates. \n    /// The default return value for the CanExecute method is 'true'.\n    /// <see cref=\"RaiseCanExecuteChanged\"/> needs to be called whenever\n    /// <see cref=\"CanExecute\"/> is expected to return a different value.\n    /// </summary>\n    public class RelayCommand : ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n\n        /// <summary>\n        /// Raised when RaiseCanExecuteChanged is called.\n        /// </summary>\n        public event EventHandler CanExecuteChanged;\n\n        /// <summary>\n        /// Creates a new command that can always execute.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        public RelayCommand(Action execute)\n            : this(execute, null)\n        {\n        }\n\n        /// <summary>\n        /// Creates a new command.\n        /// </summary>\n        /// <param name=\"execute\">The execution logic.</param>\n        /// <param name=\"canExecute\">The execution status logic.</param>\n        public RelayCommand(Action execute, Func<bool> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canExecute;\n        }\n\n        /// <summary>\n        /// Determines whether this <see cref=\"RelayCommand\"/> can execute in its current state.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        /// <returns>true if this command can be executed; otherwise, false.</returns>\n        public bool CanExecute(object parameter)\n        {\n            return _canExecute == null ? true : _canExecute();\n        }\n\n        /// <summary>\n        /// Executes the <see cref=\"RelayCommand\"/> on the current command target.\n        /// </summary>\n        /// <param name=\"parameter\">\n        /// Data used by the command. If the command does not require data to be passed, this object can be set to null.\n        /// </param>\n        public void Execute(object parameter)\n        {\n            _execute();\n        }\n\n        /// <summary>\n        /// Method used to raise the <see cref=\"CanExecuteChanged\"/> event\n        /// to indicate that the return value of the <see cref=\"CanExecute\"/>\n        /// method has changed.\n        /// </summary>\n        public void RaiseCanExecuteChanged()\n        {\n            var handler = CanExecuteChanged;\n            if (handler != null)\n            {\n                handler(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Common/SuspensionManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.Storage;\nusing Windows.Storage.Streams;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace ContosoCookbook.Common\n{\n    /// <summary>\n    /// SuspensionManager captures global session state to simplify process lifetime management\n    /// for an application.  Note that session state will be automatically cleared under a variety\n    /// of conditions and should only be used to store information that would be convenient to\n    /// carry across sessions, but that should be discarded when an application crashes or is\n    /// upgraded.\n    /// </summary>\n    internal sealed class SuspensionManager\n    {\n        private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();\n        private static List<Type> _knownTypes = new List<Type>();\n        private const string sessionStateFilename = \"_sessionState.xml\";\n\n        /// <summary>\n        /// Provides access to global session state for the current session.  This state is\n        /// serialized by <see cref=\"SaveAsync\"/> and restored by\n        /// <see cref=\"RestoreAsync\"/>, so values must be serializable by\n        /// <see cref=\"DataContractSerializer\"/> and should be as compact as possible.  Strings\n        /// and other self-contained data types are strongly recommended.\n        /// </summary>\n        public static Dictionary<string, object> SessionState\n        {\n            get { return _sessionState; }\n        }\n\n        /// <summary>\n        /// List of custom types provided to the <see cref=\"DataContractSerializer\"/> when\n        /// reading and writing session state.  Initially empty, additional types may be\n        /// added to customize the serialization process.\n        /// </summary>\n        public static List<Type> KnownTypes\n        {\n            get { return _knownTypes; }\n        }\n\n        /// <summary>\n        /// Save the current <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also preserve their current\n        /// navigation stack, which in turn gives their active <see cref=\"Page\"/> an opportunity\n        /// to save its state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been saved.</returns>\n        public static async Task SaveAsync()\n        {\n            try\n            {\n                // Save the navigation state for all registered frames\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        SaveFrameNavigationState(frame);\n                    }\n                }\n\n                // Serialize the session state synchronously to avoid asynchronous access to shared\n                // state\n                MemoryStream sessionData = new MemoryStream();\n                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                serializer.WriteObject(sessionData, _sessionState);\n\n                // Get an output stream for the SessionState file and write the state asynchronously\n                StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);\n                using (Stream fileStream = await file.OpenStreamForWriteAsync())\n                {\n                    sessionData.Seek(0, SeekOrigin.Begin);\n                    await sessionData.CopyToAsync(fileStream);\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        /// <summary>\n        /// Restores previously saved <see cref=\"SessionState\"/>.  Any <see cref=\"Frame\"/> instances\n        /// registered with <see cref=\"RegisterFrame\"/> will also restore their prior navigation\n        /// state, which in turn gives their active <see cref=\"Page\"/> an opportunity restore its\n        /// state.\n        /// </summary>\n        /// <returns>An asynchronous task that reflects when session state has been read.  The\n        /// content of <see cref=\"SessionState\"/> should not be relied upon until this task\n        /// completes.</returns>\n        public static async Task RestoreAsync()\n        {\n            _sessionState = new Dictionary<String, Object>();\n\n            try\n            {\n                // Get the input stream for the SessionState file\n                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);\n                using (IInputStream inStream = await file.OpenSequentialReadAsync())\n                {\n                    // Deserialize the Session State\n                    DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);\n                    _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());\n                }\n\n                // Restore any registered frames to their saved state\n                foreach (var weakFrameReference in _registeredFrames)\n                {\n                    Frame frame;\n                    if (weakFrameReference.TryGetTarget(out frame))\n                    {\n                        frame.ClearValue(FrameSessionStateProperty);\n                        RestoreFrameNavigationState(frame);\n                    }\n                }\n            }\n            catch (Exception e)\n            {\n                throw new SuspensionManagerException(e);\n            }\n        }\n\n        private static DependencyProperty FrameSessionStateKeyProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionStateKey\", typeof(String), typeof(SuspensionManager), null);\n        private static DependencyProperty FrameSessionStateProperty =\n            DependencyProperty.RegisterAttached(\"_FrameSessionState\", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);\n        private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();\n\n        /// <summary>\n        /// Registers a <see cref=\"Frame\"/> instance to allow its navigation history to be saved to\n        /// and restored from <see cref=\"SessionState\"/>.  Frames should be registered once\n        /// immediately after creation if they will participate in session state management.  Upon\n        /// registration if state has already been restored for the specified key\n        /// the navigation history will immediately be restored.  Subsequent invocations of\n        /// <see cref=\"RestoreAsync\"/> will also restore navigation history.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should be managed by\n        /// <see cref=\"SuspensionManager\"/></param>\n        /// <param name=\"sessionStateKey\">A unique key into <see cref=\"SessionState\"/> used to\n        /// store navigation-related information.</param>\n        public static void RegisterFrame(Frame frame, String sessionStateKey)\n        {\n            if (frame.GetValue(FrameSessionStateKeyProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames can only be registered to one session state key\");\n            }\n\n            if (frame.GetValue(FrameSessionStateProperty) != null)\n            {\n                throw new InvalidOperationException(\"Frames must be either be registered before accessing frame session state, or not registered at all\");\n            }\n\n            // Use a dependency property to associate the session key with a frame, and keep a list of frames whose\n            // navigation state should be managed\n            frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);\n            _registeredFrames.Add(new WeakReference<Frame>(frame));\n\n            // Check to see if navigation state can be restored\n            RestoreFrameNavigationState(frame);\n        }\n\n        /// <summary>\n        /// Disassociates a <see cref=\"Frame\"/> previously registered by <see cref=\"RegisterFrame\"/>\n        /// from <see cref=\"SessionState\"/>.  Any navigation state previously captured will be\n        /// removed.\n        /// </summary>\n        /// <param name=\"frame\">An instance whose navigation history should no longer be\n        /// managed.</param>\n        public static void UnregisterFrame(Frame frame)\n        {\n            // Remove session state and remove the frame from the list of frames whose navigation\n            // state will be saved (along with any weak references that are no longer reachable)\n            SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));\n            _registeredFrames.RemoveAll((weakFrameReference) =>\n            {\n                Frame testFrame;\n                return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;\n            });\n        }\n\n        /// <summary>\n        /// Provides storage for session state associated with the specified <see cref=\"Frame\"/>.\n        /// Frames that have been previously registered with <see cref=\"RegisterFrame\"/> have\n        /// their session state saved and restored automatically as a part of the global\n        /// <see cref=\"SessionState\"/>.  Frames that are not registered have transient state\n        /// that can still be useful when restoring pages that have been discarded from the\n        /// navigation cache.\n        /// </summary>\n        /// <remarks>Apps may choose to rely on <see cref=\"NavigationHelper\"/> to manage\n        /// page-specific state instead of working with frame session state directly.</remarks>\n        /// <param name=\"frame\">The instance for which session state is desired.</param>\n        /// <returns>A collection of state subject to the same serialization mechanism as\n        /// <see cref=\"SessionState\"/>.</returns>\n        public static Dictionary<String, Object> SessionStateForFrame(Frame frame)\n        {\n            var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);\n\n            if (frameState == null)\n            {\n                var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);\n                if (frameSessionKey != null)\n                {\n                    // Registered frames reflect the corresponding session state\n                    if (!_sessionState.ContainsKey(frameSessionKey))\n                    {\n                        _sessionState[frameSessionKey] = new Dictionary<String, Object>();\n                    }\n                    frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];\n                }\n                else\n                {\n                    // Frames that aren't registered have transient state\n                    frameState = new Dictionary<String, Object>();\n                }\n                frame.SetValue(FrameSessionStateProperty, frameState);\n            }\n            return frameState;\n        }\n\n        private static void RestoreFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            if (frameState.ContainsKey(\"Navigation\"))\n            {\n                frame.SetNavigationState((String)frameState[\"Navigation\"]);\n            }\n        }\n\n        private static void SaveFrameNavigationState(Frame frame)\n        {\n            var frameState = SessionStateForFrame(frame);\n            frameState[\"Navigation\"] = frame.GetNavigationState();\n        }\n    }\n    public class SuspensionManagerException : Exception\n    {\n        public SuspensionManagerException()\n        {\n        }\n\n        public SuspensionManagerException(Exception e)\n            : base(\"SuspensionManager failed\", e)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/ContosoCookbook.csproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E977916E-3C97-485A-96FC-0D214F6FC9E3}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ContosoCookbook</RootNamespace>\n    <AssemblyName>ContosoCookbook</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <Page Include=\"AboutPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"RecipeDetailPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"GroupDetailPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"AboutPage.xaml.cs\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\NavigationHelper.cs\" />\n    <Compile Include=\"Common\\ObservableDictionary.cs\" />\n    <Compile Include=\"Common\\RelayCommand.cs\" />\n    <Compile Include=\"Common\\SuspensionManager.cs\" />\n    <Compile Include=\"Converters\\ImageSourceToStringConverter.cs\" />\n    <Compile Include=\"Converters\\UserImagesDisplayConverter.cs\" />\n    <Compile Include=\"DataModel\\BindableBase.cs\" />\n    <Compile Include=\"DataModel\\RecipeDataSource.cs\" />\n    <Compile Include=\"DataModel\\SampleDataSource.cs\" />\n    <Compile Include=\"RecipeDetailPage.xaml.cs\">\n      <DependentUpon>RecipeDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"GroupDetailPage.xaml.cs\">\n      <DependentUpon>GroupDetailPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\DarkGray.png\" />\n    <Content Include=\"Assets\\LightGray.png\" />\n    <Content Include=\"Assets\\Logo.scale-240.png\" />\n    <Content Include=\"Assets\\MediumGray.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-240.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-240.png\" />\n    <Content Include=\"Assets\\Square71x71Logo.scale-240.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-240.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-240.png\" />\n    <Content Include=\"Common\\ReadMe.txt\" />\n    <Content Include=\"Data\\Recipes.txt\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_1_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_2_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_3_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_4_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_5_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_150_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_310_C.jpg\" />\n    <Content Include=\"Images\\chinese\\Chinese_6_600_C.jpg\" />\n    <Content Include=\"Images\\chinese\\chinese_group.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_detail.png\" />\n    <Content Include=\"Images\\chinese\\chinese_group_header.png\" />\n    <Content Include=\"Images\\french\\French_1_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_1_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_310_C.jpg\" />\n    <Content Include=\"Images\\french\\French_2_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_3_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_4_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_5_600_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_150_C.jpg\" />\n    <Content Include=\"Images\\french\\French_6_600_C.jpg\" />\n    <Content Include=\"Images\\french\\french_group.png\" />\n    <Content Include=\"Images\\french\\french_group_detail.png\" />\n    <Content Include=\"Images\\french\\french_group_header.png\" />\n    <Content Include=\"Images\\german\\German_1_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_1_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_2_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_3_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_310_C.jpg\" />\n    <Content Include=\"Images\\german\\German_4_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_5_600_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_150_C.jpg\" />\n    <Content Include=\"Images\\german\\German_6_600_C.jpg\" />\n    <Content Include=\"Images\\german\\german_group.png\" />\n    <Content Include=\"Images\\german\\german_group_detail.png\" />\n    <Content Include=\"Images\\german\\german_group_header.png\" />\n    <Content Include=\"Images\\indian\\Indian_1_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_1_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_2_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_3_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_4_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_5_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_150_C.jpg\" />\n    <Content Include=\"Images\\indian\\Indian_6_600_C.jpg\" />\n    <Content Include=\"Images\\indian\\indian_group.png\" />\n    <Content Include=\"Images\\indian\\indian_group_detail.png\" />\n    <Content Include=\"Images\\indian\\indian_group_header.png\" />\n    <Content Include=\"Images\\italian\\Italian_1_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_1_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_2_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_3_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_4_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_310_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_5_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_150_C.jpg\" />\n    <Content Include=\"Images\\italian\\Italian_6_600_C.jpg\" />\n    <Content Include=\"Images\\italian\\italian_group.png\" />\n    <Content Include=\"Images\\italian\\italian_group_detail.png\" />\n    <Content Include=\"Images\\italian\\italian_group_header.png\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_1_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_2_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_3_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_4_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_5_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_150_C.jpg\" />\n    <Content Include=\"Images\\mexican\\Mexican_6_600_C.jpg\" />\n    <Content Include=\"Images\\mexican\\mexican_group.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_detail.png\" />\n    <Content Include=\"Images\\mexican\\mexican_group_header.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\en-US\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup />\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  \n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>\n\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Converters/ImageSourceToStringConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class ImageSourceToStringConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var file = value.ToString();\n            if (!file.Contains(\"/\")) return string.Empty;\n            var start = file.IndexOf(\"/\") + 1;\n            var end = file.IndexOf(\".\");\n            return string.Format(\"Created Date: {0}\", file.Substring(start, (end - start)));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Converters/UserImagesDisplayConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.Converters\n{\n    public class UserImagesDisplayConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            var list = value as ObservableCollection<string>;\n\n            if (null != list)\n            {\n                if (list.Count == 0)\n                    return Visibility.Visible;\n                else\n                    return Visibility.Collapsed;\n            }\n            else\n                return Visibility.Visible;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Data/Recipes.txt",
    "content": "﻿[ { \"backgroundImage\" : \"images/Chinese/Chinese_1_600_C.jpg\",\n    \"directions\" : \"Mix the ground pork with the salt, sugar, pepper, cornstarch and sesame oil. Add the dried mushrooms and Chinese sausage.Divide into 18 approximately equal portions. Take one portion of the meat and slightly flatten in your hand. Place a cooked quail egg on top of the meat and cover the meat around the egg to make a small round ball. Set aside. Dough:Mix the flour and sugar in a big bowl. Pour the milk in and mix until it becomes a dough Let it sit for 5 minutes. Divide into about 18 equal portions. If you feel any lumps, work through the dough with your hands to remove them. Forming and Cooking the Buns: flour, 18 pieces of dough, 18 balls of meat filling,  parchment paper, cut into 18 square. On a floured surface, roll out a piece of dough into a circle, ideally tapered at the edges Dip one of the prepared meat fillings in flour, With the piece of dough in one hand, place the meat filling on top. \",\n    \"extraImages\" : [ { \"image\" : \"images/Chinese/Chinese_1_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_2_600_C.jpg\" },\n        { \"image\" : \"images/Chinese/Chinese_3_600_C.jpg\" }\n      ],\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"600 g Ground pork\",\n        \"1 tsp Salt\",\n        \"1 tsp sugar\",\n        \"1/2 tsp Ground black pepper\",\n        \"2 tsp Cornstarch\",\n        \"1 tbsp Sesame oil\",\n        \"1 handful Sliced dried mushrooms \",\n        \"soaked and well drained\",\n        \"18 Quail eggs\",\n        \"cooked and peeled - alternately use 5 chicken eggs and cut them into quarters \",\n        \"3/4 cup Sugar\",\n        \"4 1/2 cups Self-raising flour\",\n        \"1 1/2 cups Milk\"\n      ],\n    \"key\" : 1000,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Steam bun baos\",\n    \"tileImage\" : \"images/Chinese/Chinese_1_150_C.jpg\",\n    \"title\" : \"Steam bun baos\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_2_600_C.jpg\",\n    \"directions\" : \"Crumble the bread mix it with the egg add salt to it. Cover each 2 shrimps with the mix hit a pan pour the souce to the pen fry the balls in the pan. Simply mix all ingredients by hand. At first it does not appear like it will mix, but keep at it just a bit longer and you have Hoisin Sauce. Letting it rest does not appear to improve the flavour any.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"8 Shrimp\",\n        \"2 peices of Bread\",\n        \"1 Egg\",\n        \"Salt\",\n        \"4 Tablespoons Soy sauce - dark/light/usual\",\n        \"2 tablespoons Peanut butter - or black bean paste\",\n        \"1 tablespoon Honey - or molasses\",\n        \"2 teaspoons White vinegar\",\n        \"1/8 teaspoon Garlic powder\",\n        \"2 teaspoons Sesame seed oil\",\n        \"20 drops Chinese-style hot sauce\",\n        \"1/8 teaspoon Black pepper\"\n      ],\n    \"key\" : 1001,\n    \"preptime\" : 45,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Breaded shrimp balls\",\n    \"tileImage\" : \"images/Chinese/Chinese_2_150_C.jpg\",\n    \"title\" : \"Breaded shrimp balls with hoisin sauce\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_3_600_C.jpg\",\n    \"directions\" : \"Cut the carrots and pears and pour on them soya souce and salt\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"2 Pears\",\n        \"Soy souce\",\n        \"Salt\"\n      ],\n    \"key\" : 1002,\n    \"preptime\" : 10,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Carrot Salad\",\n    \"tileImage\" : \"images/Chinese/Chinese_3_150_C.jpg\",\n    \"title\" : \"Asian Pear and Shredded Carrot Salad on a Plate; Chopsticks\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_4_600_C.jpg\",\n    \"directions\" : \"Mix the meat with one age and salt and flower. Heat water add sald and bay leaves, and  nuddels  and throw in the meatballs. wait for 35 minuts and its done\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 kg of Ground meat\",\n        \"Salt\",\n        \"Paper\",\n        \"1/2 cup of Flower\",\n        \"Water\",\n        \"2 Bay leaves\",\n        \"1 Egg\",\n        \"1 package of Nuddels\"\n      ],\n    \"key\" : 1003,\n    \"preptime\" : 50,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Shanghai Noodle Soup\",\n    \"tileImage\" : \"images/Chinese/Chinese_4_150_C.jpg\",\n    \"title\" : \"Shanghai Noodle and Meatball Soup\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_5_600_C.jpg\",\n    \"directions\" : \"Wash and finely chop the green onion. Lightly beat the eggs with the salt and pepper. Heat a wok or frying pan and add 2 tablespoons oil. When the oil is hot, add the eggs. Cook, stirring, until they are lightly scrambled but not too dry. Remove the eggs and clean out the pan.Add 2 tablespoons oil. Add the rice. Stir-fry for a few minutes, using chopsticks or a wooden spoon to break it apart. Stir in the soy sauce or oyster sauce as desired. When the rice is heated through, add the scrambled egg back into the pan. Mix thoroughly. Stir in the green onion. Serve hot.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1 or 2 Green onions\",\n        \"2 Large eggs\",\n        \"1 teaspoon Salt\",\n        \"Pepper to taste\",\n        \"4 tablespoons Oil for stir-frying or as needed\",\n        \"4 cups Cold cooked rice\",\n        \"1 - 2 tablespoons Light soy sauce or Oyster sauce\"\n      ],\n    \"key\" : 1004,\n    \"preptime\" : 30,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Fried Rice\",\n    \"tileImage\" : \"images/Chinese/Chinese_5_150_C.jpg\",\n    \"title\" : \"Fried Rice\"\n  },\n  { \"backgroundImage\" : \"images/Chinese/Chinese_6_600_C.jpg\",\n    \"directions\" : \"Combine the first 10 ingredients in a large bowl, using your fingers to mix everything together. Fill each wrapper with a heaping teaspoon of the pork filling. Add the filling in the middle of the potsticker wrapper, using your finger to spread it out toward the sides. Be sure not to overfill or to spread the filling too close to the edge of the wrapper. To fold the dumpling, moisten the edges of the wrapper with the egg white or mixture of water and cornstarch. Gently lift the edges of the moistened wrapper over the filling. Crimp the edges of the wrapper and pinch together to seal.Heat a wok or nonstick skillet on medium-high heat and add 1 tablespoon oil. Add 10 – 12 potstickers, and cook for 2 to 3 minutes, until the bottom is browned. Add 1/3 cup water, cover, and steam the dumplings until the liquid is absorbed. Remove and cook the remainder of the dumplings.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Chinese/chinese_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Chinese/chinese_group.png\",\n        \"key\" : \"Chinese\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Chinese\",\n        \"title\" : \"Chinese\"\n      },\n    \"ingredients\" : [ \"1/2 cup finely chopped Bok choy leaves\",\n        \"1/2 cup finely chopped Sui Choy\",\n        \"1/4 cup finely chopped Green onion\",\n        \"1/4 cup chopped water Chestnuts\",\n        \"1 pound Ground pork\",\n        \"1 teaspoon Light soy sauce\",\n        \"1 teaspoon Dark soy sauce\",\n        \"2 teaspoons Chinese rice wine or dry sherry\",\n        \"1 teaspoon Asian sesame oil\",\n        \"Dash white pepper\",\n        \"1 package Wonton or Gyoza wrappers\",\n        \"1 tablespoon Cornstarch mixed with 2 tablespoons Water or 1 lightly beaten Egg white\",\n        \"1 cup Water or as needed\"\n      ],\n    \"key\" : 1005,\n    \"preptime\" : 60,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fried Dumpling\",\n    \"tileImage\" : \"images/Chinese/Chinese_6_150_C.jpg\",\n    \"title\" : \"Fried Dumpling\"\n  },\n  { \"backgroundImage\" : \"images/French/French_1_600_C.jpg\",\n    \"directions\" : \"Place flour and butter in a food processor and process on medium speed until only tiny lumps of butter remain. In a cup or small bowl, stir together water and egg yolk. Add yolk mixture to the butter and flour mixture. Process on medium speed until the mixture starts to clump together. Remove the processor blade and use your hand to press the dough clumps together into a mass. Tip the dough onto a large sheet of baking paper. Use your hands to bring the pastry together into a smooth ball. Form the pastry into a disc shape. Wrap pastry disc with plastic wrap or place in a freezer bag, and refrigerate for 30 minutes. Place unwrapped pastry disc between two large sheets of baking paper. Using a rolling pin, roll pastry out to fit a 23cm diameter quiche dish. The bottom sheet of baking paper may develop creases during rolling. These creases can make deep cuts in the pastry. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"220g plain Flour\",\n        \"120g cold Butter\",\n        \"1 tablespoon very cold Water\",\n        \"1 large Egg\",\n        \"separated into yolk and white\",\n        \"1 teaspoon Oil\",\n        \"1 small Onion\",\n        \"220g Bacon\",\n        \"finely chopped 5 large Eggs\",\n        \"125ml Cream\",\n        \"1/4 teaspoon Ground nutmeg Salt and pepper\",\n        \"110g grated tasty Cheddar cheese\"\n      ],\n    \"key\" : 2000,\n    \"preptime\" : 120,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Quiche Lorraine\",\n    \"tileImage\" : \"images/French/French_1_150_C.jpg\",\n    \"title\" : \"Quiche Lorraine, a slice cut\"\n  },\n  { \"backgroundImage\" : \"images/French/French_2_600_C.jpg\",\n    \"directions\" : \"Pulse confectioners' sugar and almond flour in a food processor until combined. Sift mixture 2 times. Preheat oven to 375 degrees. Whisk whites with a mixer on medium speed until foamy. Add cream of tartar, and whisk until soft peaks form. Reduce speed to low, then add superfine sugar. Increase speed to high, and whisk until stiff peaks form, about 8 minutes. Sift flour mixture over whites, and fold until mixture is smooth and shiny. Transfer batter to a pastry bag fitted with a 1/2-inch plain round tip, and pipe 3/4-inch rounds 1 inch apart on parchment-lined baking sheets, dragging pastry tip to the side of rounds rather than forming peaks. Tap bottom of each sheet on work surface to release trapped air. Let stand at room temperature for 15 minutes. Reduce oven temperature to 325 degrees. Bake 1 sheet at a time, rotating halfway through, until macarons are crisp and firm, about 10 minutes. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 cup Confectioners' sugar\",\n        \"3/4 cup Almond flour\",\n        \"2 large Egg whites, room temperature\",\n        \"Pinch of Cream of tartar\",\n        \"1/4 cup Superfine sugar\",\n        \"Chocolate: Chocolate Ganache\",\n        \"Coconut: 1 cup Swiss Meringue Buttercream mixed with 1/3 cup angel-flake coconut\",\n        \"Peanut: Chocolate Ganache or store-bought dulce de leche jam or peanut butter\",\n        \"1 cup Swiss Meringue Buttercream mixed with 1/3 cup finely chopped pistachios.\",\n        \"Raspberry: 3/4 cup seedless Raspberry jam\",\n        \"Swiss Meringue Buttercream\"\n      ],\n    \"key\" : 2001,\n    \"preptime\" : 80,\n    \"rating\" : 5,\n    \"shortTitle\" : \"French macaroons\",\n    \"tileImage\" : \"images/French/French_2_150_C.jpg\",\n    \"title\" : \"French macaroons\"\n  },\n  { \"backgroundImage\" : \"images/French/French_3_600_C.jpg\",\n    \"directions\" : \"1. Heat 1/4 cup of the olive oil in a large saucepan. When it is hot, add onions and shallots. Saute for a minute, then add crushed garlic, and sweet red pepper. Add tomato, celery, and fennel. Stir the vegetables into the oil with a wooden sppon until well coated. Then add another 1/4 cup of olive oil, thyme, bay leaf, cloves and the orange zest. Cook until the onion is soft and golden but not brown. 2. Cut fish fillets into 2-inch pieces. Add the pieces of fish and 2 cups of water to the vegetable mixture. Bring to a boil, then reduce heat and simmer, uncovered, for about 10 minutes. Add oysters, clams or mussels and shrimp, crabmeat or lobster tails, cut into pieces or left whole. 3. Add saffron, salt, pepper. Add clam juice, lemon juice, and white wine. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"3 pounds of at least 3 different kinds of Fish fillets\",\n        \"1/2 cup Olive oil\",\n        \"1-2 pounds of Oysters clams or mussels\",\n        \"1 cup cooked Shrimp crab or Lobster meat or Rock lobster tails\",\n        \"1 cup thinly sliced Onions\",\n        \"4 Shallots thinly sliced OR the white parts of 2 or 3 leeks\",\n        \"2 cloves Garlic, crushed\",\n        \"1 large Tomato chopped or 1/2 cup canned tomatoes\",\n        \"1 Sweet red pepper chopped\",\n        \"4 Stalks celery thinly sliced\"\n      ],\n    \"key\" : 2002,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Bouillabaisse\",\n    \"tileImage\" : \"images/French/French_3_150_C.jpg\",\n    \"title\" : \"Bouillabaisse\"\n  },\n  { \"backgroundImage\" : \"images/French/French_4_600_C.jpg\",\n    \"directions\" : \"Bake the fillet in the oven for 8 minnuts fry the bacon on oil. Cover the fillet with bacon put on a plate musshrooms and Brussels sprouts put on top the fillet.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"Venison fillet\",\n        \"Bacon\",\n        \"Forest mushrooms\",\n        \"Brussels sprouts\"\n      ],\n    \"key\" : 2003,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Venison fillet in bacon\",\n    \"tileImage\" : \"images/French/French_4_150_C.jpg\",\n    \"title\" : \"Venison fillet in bacon, forest mushrooms & Brussels sprouts\"\n  },\n  { \"backgroundImage\" : \"images/French/French_5_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 375 degrees. Heat a large skillet. Swirl in the olive oil, add the bacon, and cook until the bacon is golden, 2-3 minutes. Remove the bacon from the skillet. Salt and pepper the chicken and add to the skillet to brown on both sides, about 4 minutes, and remove. Add the onions and mushrooms to the skillet, sauteing until golden brown, 5-8 minutes. Stir in the tomato paste. Deglaze the pan with white wine, scraping to pick up the brown bits, and reduce. Stir in the flour. Add the chicken stock and stir to combine. Return the chicken and bacon to the skillet. Stir in the noodles and cheese. Transfer the mixture to a 9- x 13-inch baking dish. Top with panko, sprinkle on the paprika, and drizzle with olive oil. Bake for 25 minutes.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Extra-virgin olive oil plus more for drizzling\",\n        \"2 strips Bacon sliced crosswise into strips\",\n        \"2 1/2 pounds Boneless chicken thighs skin-on\",\n        \"Coarse salt and freshly Ground black pepper\",\n        \"1 small Onion halved and thinly sliced\",\n        \"10 ounces White button\",\n        \"Mushrooms quartered\",\n        \"3 tablespoons Tomato paste\",\n        \"1/2 cup White wine\",\n        \"1/3 cup Flour\",\n        \"1 1/2 cups Chicken stock\",\n        \"1 extra-wide Egg noodles\",\n        \"cooked to package instruction\",\n        \"2 cups shredded Muenster cheese\",\n        \"Pinch of paprika\",\n        \"1 cup panko Breadcrumbs\"\n      ],\n    \"key\" : 2004,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Coq au vin\",\n    \"tileImage\" : \"images/French/French_5_150_C.jpg\",\n    \"title\" : \"Coq au vin in a casserole dish\"\n  },\n  { \"backgroundImage\" : \"images/French/French_6_600_C.jpg\",\n    \"directions\" : \"Allow the fish filet to defrost if they were frozen. Peel and finely chop the onion and shallots. Peel and crush the clove of garlic. Get the leaves out the bunch of parsley and snip them in a glass with scissors. Juice up the lemon and place in a bowl. Prepare the breadcrumbs. You have several options to get breadcrumbs, the easy way is to buy ready to go breadcrumbs, the other option is to grate a really hard stale piece of bread using a box or zest grater, this is also achievable using a mortar grinder. If you do not have hard bread available, it is possible to make it hard using a toaster. You can use every kind of bread but I would recommend the use of farmhouse, wholemeal or rye bread. In a saucepan add the butter and the very finely chopped onion and shallots, add the crushed garlic. Stir fry over medium heat for 5 minutes then add the white wine, salt & pepper and reduce over low heat until almost all liquid has evaporated. Preheat you oven at 180 °C ( 360 °F ). \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/french/french_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/French/french_group.png\",\n        \"key\" : \"French\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"French\",\n        \"title\" : \"French\"\n      },\n    \"ingredients\" : [ \"4 Fish filets frozen or not\",\n        \"1 big Onion\",\n        \"2 Shallots\",\n        \"1 clove of Garlic\",\n        \"30g Butter\",\n        \"10cl dry White wine\",\n        \"Juice of a lLemon\",\n        \"50g Bbreadcrumbs\",\n        \"1 bunch of Parsley\",\n        \"3 tbs. Olive oil\",\n        \"Salt and Pepper\"\n      ],\n    \"key\" : 2005,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Fish a la bordelaise\",\n    \"tileImage\" : \"images/French/French_6_150_C.jpg\",\n    \"title\" : \"Fish a la bordelaise\"\n  },\n  { \"backgroundImage\" : \"images/German/German_1_600_C.jpg\",\n    \"directions\" : \"Combine the first 8 ingredients in a bowl; stir well. Shape mixture into 24 (1-inch) meatballs. Coat a large nonstick skillet with cooking spray; place over medium heat until hot. Add meatballs; cook 10 minutes or until browned, stirring frequently. Remove from skillet; set aside. Add garlic to skillet; saut? 30 seconds. Add wine; bring to a boil over medium heat, and cook 1 minute. Return the meatballs to skillet; cover and cook 5 minutes or until done. Remove from heat. Remove meatballs from the skillet with a slotted spoon; set aside, and keep warm. Add sour cream and pepper to wine mixture in skillet; stir well. Spoon sauce over meatballs. make salad with cucumber with slised potato and add sald put on top hot meatbals.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1/2 pound Ground round\",\n        \"1/2 pound lean Ground pork\",\n        \"1/4 cup dry Breadcrumbs\",\n        \"1 1/2 tablespoons chopped fresh Parsley\",\n        \"1/4 teaspoon Salt\",\n        \"1 teaspoon prepared Mustard\",\n        \"1/2 teaspoon Worcestershire sauce\",\n        \"1 Egg white lightly beaten\",\n        \"Vegetable cooking spray\",\n        \"2 Garlic cloves minced\",\n        \"1 cup Riesling or other slightly sweet White wine\",\n        \"1/2 cup nonfat Sour cream\",\n        \"1/4 teaspoon Pepper\",\n        \"2 cooked Potato\",\n        \"1 Cucumber\"\n      ],\n    \"key\" : 3000,\n    \"preptime\" : 55,\n    \"rating\" : 5,\n    \"shortTitle\" : \"German meatballs\",\n    \"tileImage\" : \"images/German/German_1_150_C.jpg\",\n    \"title\" : \"German meatballs on potato and cucumber salad with pretzel\"\n  },\n  { \"backgroundImage\" : \"images/German/German_2_600_C.jpg\",\n    \"directions\" : \"Water, vinegar and wine to the boil with the spices. Peel the onions, cut into rings and add the peeled and thinly sliced carrots and simmer for 10 minutes. Then leave the sausages in a very low heat (so they do not burst) 15 minutes, more like, pull until they are fairly firm. The sausages with vegetables and a little brew served hot. Serve with dark bread baked twice\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 liter of Water\",\n        \"2 pcs Cloves\",\n        \"5 pcs Peppercorns\",\n        \"10 pcs Mustard seeds\",\n        \"3 pcs Bay leaves\",\n        \"1 teaspoon Salt\",\n        \"2 tsp Sugar\",\n        \"1 small Carrot\",\n        \"3 large Onions\",\n        \"100 ml White wine\",\n        \"100 ml Wine vinegar\",\n        \"5 pcs Juniper berries\",\n        \"16 pcs Nuremberg grilled sausages\"\n      ],\n    \"key\" : 3001,\n    \"preptime\" : 55,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Saure Zipfel\",\n    \"tileImage\" : \"images/German/German_2_150_C.jpg\",\n    \"title\" : \"Saure Zipfel, Nuremberg sausages cooked in vinegar\"\n  },\n  { \"backgroundImage\" : \"images/German/German_3_600_C.jpg\",\n    \"directions\" : \"Preheat the oven to 350°F. Cut off the tips of the heads of garlic and brush the cut sides with 1 tablespoon of the olive oil. Set garlic cut-side down on a sheet pan and roast until it is soft to the touch, about 30 minutes. Let garlic cool for 5 minutes, then squeeze the roasted cloves out of the garlic and into a bowl. Mash with a fork and spread over the top of the lamb .Meanwhile, place the lamb in a large roasting pan and season with salt, pepper and half of the rosemary. Allow to stand at room temperature for 30 minutes to an hour. Place the potatoes in an oven-proof dish and toss with the remaining oil and rosemary. Set aside. Roast lamb for about 1 hour 40 minutes, until it registers 130-135°F on a meat thermometer for a medium-rare roast, or until the juices run clear when a sharp knife or skewer is inserted in the thickest part of the meat. When the lamb has been roasting for 40 or 50 minutes, place the potatoes in the oven and bake until well browned and tender. Transfer the lamb to a warm platter and let rest for 15 minutes. (It will continue to cook as it rests.) \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"1 leg of Lamb bone in\",\n        \"2 heads Garlic halved\",\n        \"3 tablespoons Olive oil\",\n        \"Salt and freshly Ground pepper to taste\",\n\t\t\"2 tablespoons Rosemary chopped\",\n        \"3 pounds small Red potatoes halved\",\n        \"grilled Asparagus or preferred vegetable to serve\"\n      ],\n    \"key\" : 3002,\n    \"preptime\" : 90,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Leg of lamb\",\n    \"tileImage\" : \"images/German/German_3_150_C.jpg\",\n    \"title\" : \"Leg of lamb (Heidschnucke) with root vegetables\"\n  },\n  { \"backgroundImage\" : \"images/German/German_4_600_C.jpg\",\n    \"directions\" : \"Backe the sausage in the oven for 30 minuts, cook the carrot ground it after coocking, mix it with butter and salt, put on top a backed sausage.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"2 Carrots\",\n        \"German sausage\",\n        \"Salt\",\n        \"Butter\"\n      ],\n    \"key\" : 3003,\n    \"preptime\" : 40,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Roasted sausages\",\n    \"tileImage\" : \"images/German/German_4_150_C.jpg\",\n    \"title\" : \"Roasted sausages on top of carrot stew\"\n  },\n  { \"backgroundImage\" : \"images/German/German_5_600_C.jpg\",\n    \"directions\" : \"In a small bowl, whisk the milk with the egg yolks and egg. In a large bowl, whisk the flour with the nutmeg, 1 teaspoon of salt and 1/4 teaspoon of pepper. Using a wooden spoon, stir the egg mixture into the flour, leaving a few lumps. Cover and refrigerate the batter for at least 1 hour or overnight. Bring a large pot of salted water to a boil. Prepare a large bowl of ice water. Carefully hold a colander with large holes over the boiling water. Add about 1/2 cup of the batter to the colander and press it into the simmering water with a spatula or the back of a spoon. Repeat until all of the batter has been used. Cook the spaetzle for 2 minutes longer, then drain. Immediately transfer the spaetzle to the ice water, swirling the dumplings until all of the ice melts. Drain and transfer to a large bowl. Stir in 1 tablespoon of the oil, season with salt and pepper and toss to coat. Preheat the oven to 400°. Oil a 9-by-13-inch baking dish. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"3 cups all-purpose Flour\",\n        \"1/4 teaspoon freshly Grated nutmeg\",\n        \"1 medium White onion thinly sliced\",\n        \"1 large Egg\",\n        \"1 1/2 cups shredded Gruyere cheese\",\n        \"1 3/4 cups Milk\",\n        \"1 tablespoon unsalted Butter cut into small pieces\",\n        \"Salt and freshly ground Pepper\",\n        \"4 large Egg yolks\",\n        \"2 tablespoons Peanut oil\"\n      ],\n    \"key\" : 3004,\n    \"preptime\" : 50,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Spaetzle and onion\",\n    \"tileImage\" : \"images/German/German_5_150_C.jpg\",\n    \"title\" : \"Spaetzle and onion\"\n  },\n  { \"backgroundImage\" : \"images/German/German_6_600_C.jpg\",\n    \"directions\" : \"Mash the Camembert with a fork and add the butter, cream cheese and onions. Season with salt, pepper, paprika and caraway to taste. Add beer gradually and stir. Spoon a portion of Obatzda onto each plate and garnish with onion rings, chives and caraway. Serve preferably with rye bread, wholemeal bread and radishes. Obatzda is available to purchase ready-made for tho\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/german/german_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/German/german_group.png\",\n        \"key\" : \"German\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"German\",\n        \"title\" : \"German\"\n      },\n    \"ingredients\" : [ \"500g ripe Camembert \",\n        \"40g soft Butter \",\n        \"200g cream cheese \",\n        \"80g finely chopped Onions\",\n        \"Salt, pepper and Paprika caraway\",\n        \"2 desert spoons of chopped Chives\",\n        \"60g finely sliced Onion rings \",\n        \"6 or 8 desert spoons of Beer to taste\"\n      ],\n    \"key\" : 3005,\n    \"preptime\" : 65,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Obatzda\",\n    \"tileImage\" : \"images/German/German_6_150_C.jpg\",\n    \"title\" : \"Obatzda\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_1_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour.While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups all purpose Flour\",\n        \"1 1/2 teaspoons Salt\",\n        \"1/2 cup Ghee or clarified Butter or Oil\",\n        \"Cold water as needed usually about 10 tablespoons\",\n        \"3 medium baking Potatoes boiled until tender drained and cooled\",\n        \"1 cup minced Onion\",\n        \"1 tablespoon minced fresh Ginger\",\n        \"1 hot green Chile such as Serrano finely minced\",\n        \"1 teaspoon ground Coriander\",\n        \"1 teaspoon garam Masala\",\n        \"1 tablespoon Lemon juice Chutney for serving\"\n      ],\n    \"key\" : 4000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable samosas\",\n    \"tileImage\" : \"images/Indian/Indian_1_150_C.jpg\",\n    \"title\" : \"Vegetable samosas\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_2_600_C.jpg\",\n    \"directions\" : \"Make the pastry by combining the flour and 1/4 teaspoon of the salt and then rubbing 1/4 cup of the ghee into the flour until well combined and mixture resembles coarse crumbs. Add the water, a tablespoon at a time, until the pastry comes together to form a ball, about 10 tablespoons. Knead the dough lightly and then form into a disk, wrap in plastic wrap and transfer to the refrigerator to rest for at least 1 hour. While the dough is resting, make the filling. Peel the potatoes and cut into small dice. Heat 1/4 cup of ghee in a medium skillet and add the onion. Cook until the onion is lightly caramelized, about 6 minutes. Add the ginger, chile, coriander, garam masala, and cumin seeds and cook until the spices are fragrant, about 2 minutes. Add the potatoes, 1 teaspoon of the remaining salt, and 1/8 teaspoon of the pepper and cook, stirring, until well combined, about 6 minutes. Add the peas and 3 tablespoons of the cilantro and set aside to cool completely.While the filling is cooking, make teyogurt dipping sauce by combining the yogurt, remaining tablespoon of cilantro, mint, green onion, lemon juice, remaining 1/4 teaspoon of salt and remaining 1/8 teaspoon of pepper and stir to combine. Set aside, refrigerated, until ready to serve the samosas. Divide the samosa dough into 10 portions and roll each piece of dough into a circle about 5 inches in diameter. Cut each circle in half. Lightly moisten the straight edge  each half circle and press together to seal; you should now have a cone-shaped portion of dough. Carefully spoon about 2 heaping tablespoons of the filling into the dough cone and then moisten the remaining edges with a bit of water and press together to seal. Repeat with the remaining portions of dough and filling. When you are ready to fry the samosas, heat a large saucepan filled at least 2 inches with oil to about 340 degrees F. Fry the samosas, a few at a time and stirring to promote even cooking, until golden brown, about 4 minutes.Remove using a slotted spoon and transfer to a per-lined plate to drain. Repeat until all samosas have been fried. Serve immediately, with the yogurt dipping sauce and your favorite chutney\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 lbs. boneless Chicken breast \",\n        \"1/4 cup Yogurt\",\n        \"3 tsp minced Ginger \",\n        \"3 tsp crushed Garlic\",\n        \"1/4 tsp White pepper\",\n        \"1/4 tsp Cumin powder\",\n        \"1/4 tsp Mace\",\n        \"1/4 tsp Nutmeg \",\n        \"1/4 tsp green Cardamom powder\",\n        \"1/4 tsp Chili powder \",\n        \"1/4 tsp Turmeric \",\n        \"3 tbsp Lemon juice \",\n        \"2 tsp Ginger julienned\",\n        \"Honey to taste\"\n      ],\n    \"key\" : 4001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Chicken Chili Tikka Masala\",\n    \"tileImage\" : \"images/Indian/Indian_2_150_C.jpg\",\n    \"title\" : \"Chicken Chili Tikka Masala\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_3_600_C.jpg\",\n    \"directions\" : \"Keep lobia soaked overnight. Strain water in morning,Cook lobia in a large pan in 1 1/2 cup water, baking soda, asafoetida, onion, ginger, mint and garam masaala. Cook to soften lobias,Strain water. Keep aside lobia. Retain stock,Heat oil in frying pan. Add salt, cumin powder, coriander powder, green coriander, tomato, red chilli powder and green chillies. Stir fry for a while,Add boiled potatoes followed by lobia. Roast for 2 minutes. Add lobia water (stock). Look for 2 minutes,Serve hot with rice, rotis or chapatis\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"250 gr Lobia \",\n        \"Salt to taste\",\n        \"1/2 tsp Cumin seed \",\n        \"1 Green chilli \",\n        \"3 tbsps Oil \",\n        \"1 tsp Coriander \",\n        \"a pinch of Asafoetida\",\n        \"8-10 Mint leaves \",\n        \"a pinch of Baking soda \",\n        \"1 tsp Red chilli \",\n        \"1 tsp Garam masaala \",\n        \"1 piece Ginger \",\n        \"1 tsp Coriander \",\n        \"2 Potato \",\n        \"1/2 tsp Turmeric \",\n        \"2 Onion \",\n        \"2 Tomatoes \"\n      ],\n    \"key\" : 4002,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lobia Aloo\",\n    \"tileImage\" : \"images/Indian/Indian_3_150_C.jpg\",\n    \"title\" : \"Lobia Aloo ,Black Eyed Bean and Potato Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_4_600_C.jpg\",\n    \"directions\" : \"Place chicken in bowl and marinate in yogurt, 1 clove garlic, half an onion, paprika, ginger, salt and pepper for a few hours. Heat oil in large heavy casserole; gently saut? remaining onion and garlic for 1 minute. Remove and set aside. Add to casserole the coriander, chili, cumin, cardamom seeds, poppy seed and turmeric. Fry for a few minutes. Add the chicken. Pour enough water to cover and add remaining marinade. Add onion and garlic with bay leaf. Simmer 45 minutes or until chicken is tender. Sprinkle the chicken korma with fresh coriander and serve.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 1/2 pound cut up Chicken \",\n        \"2 cups Yogurt \",\n        \"3 cloves Garlic \",\n        \"2 medium Onions chopped \",\n        \"1 tsp Paprika \",\n        \"2 tsp fresh Ginger chopped \",\n        \"2 tsp Peanut or Sunflower oil\",\n        \"2 tsp ground Coriander \",\n        \"1/2 tsp ground Chili \",\n        \"1 tsp Cumin seeds of 2 peeled Cardamom pod \",\n        \"1 tsp Poppy seed \",\n        \"1 tsp Turmeric \",\n        \"1 Bay leaf \",\n        \"2 tbsp fresh Coriander chopped\"\n      ],\n    \"key\" : 4003,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Chicken Korma Curry\",\n    \"tileImage\" : \"images/Indian/Indian_4_150_C.jpg\",\n    \"title\" : \"Chicken Korma Curry\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_5_600_C.jpg\",\n    \"directions\" : \"Rice: Wash rice gently changing water several times until the water appears clear. For fluffier rice, the rice should be soaked for at least 15 minutes prior to cooking. Drain the rice and put it into the saucepan. Add water, oil, and salt, and bring to a boil. Once the water is boiling reduce the heat to low and cover the pan. Cook about 15 minutes, or until the rice is tender and the water has evaporated. Turn off the heat and fluff the rice with a fork. For a few minutes soak saffron in warm milk then gently fold the milk into the cooked rice. Vegetable And Gravy: Blend tomatoes to make a puree.In a bowl add yogurt, ginger, green chili, salt, turmeric, chili powder – mix it well. Add all the vegetables (cauliflower, beans, bell pepper, carrots, paneer, cashews, ginger and green chili) to the yogurt. Mix it well then let it marinate for 10 to 15 minutes. Heat the oil in a saucepan. Test the heat by adding one cumin seed to the oil; if seed cracks right away oil is ready. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"2 cups Basmati Rice\",\n        \"1 cup mixed Vegetables\",\n        \"150 gms Green peas\",\n        \"3 finely sliced Onions\",\n        \"1 tsp Red chilli powder\",\n        \"4 Cloves\",\n        \"4 Tomatoes\",\n        \"1/2 cup Yogurt\",\n        \"1/2 tsp Mustard seeds\"\n      ],\n    \"key\" : 4004,\n    \"preptime\" : 50,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Vegetable Biryani\",\n    \"tileImage\" : \"images/Indian/Indian_5_150_C.jpg\",\n    \"title\" : \"Vegetable Biryani\"\n  },\n  { \"backgroundImage\" : \"images/Indian/Indian_6_600_C.jpg\",\n    \"directions\" : \"For the lemon rice, cook the lemon zest and spices in a little oil until fragrant. Add the rice and stir well. Tip in 2 mugs of water and 1 tsp salt, bring to a simmer, put on a lid and cook until water is absorbed and rice cooked. Add a splash of lemon juice to serve. To make the dhal, put the lentils and turmeric in a pan and add water to cover by 2cm. Season and simmer for about 20 minutes until tender, adding more water if needed. Heat some oil in a pan then cook the onion, garlic and chilli for a few minutes. Add the garam masala, cook for a minute then stir into the cooked lentils. For the saag paneer, fry the paneer in a little oil until golden. Add the onion, ginger, garlic and spices, and cook until softened. Add the spinach and a splash of water and cook until wilted. To make the onion raita, mix everything together just before serving and season. Make the aubergine and tomato curry by frying the onion in oil until soft. Tip onto a plate. Add a little more oil to the pan and fry the aubergine in batches until browned all over and tender. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/Indian/indian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/Indian/indian_group.png\",\n        \"key\" : \"Indian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Indian\",\n        \"title\" : \"Indian\"\n      },\n    \"ingredients\" : [ \"1 Lemon zest pared and juiced\",\n        \"1/2 tsp Mustard seeds\",\n        \"3 Cardamon pods bashed\",\n        \"1 mugful Basmati rice\",\n        \"250g Red lentils\",\n        \"1 tsp Turmeric\",\n        \"Oil\",\n        \"1 Onion  grated\",\n        \"2 Garlic cloves finely chopped\",\n        \"1 Red chilli shredded\",\n        \"1 tsp Garam masala\",\n        \"1 punnet Cherry tomatoes\"\n      ],\n    \"key\" : 4005,\n    \"preptime\" : 40,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Thali\",\n    \"tileImage\" : \"images/Indian/Indian_6_150_C.jpg\",\n    \"title\" : \"Thali\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_1_600_C.jpg\",\n    \"directions\" : \"In a medium saucepan, whisk together egg yolks and sugar until well blended. Whisk in milk and cook over medium heat, stirring constantly, until mixture boils. Boil gently for 1 minute, remove from heat and allow to cool slightly. Cover tightly and chill in refrigerator 1 hour.In a medium bowl, beat cream with vanilla until stiff peaks form. Whisk mascarpone into yolk mixture until smooth. In a small bowl, combine coffee and rum. Split ladyfingers in half lengthwise and drizzle with coffee mixture.Arrange half of soaked ladyfingers in bottom of a 7x11 inch dish. Spread half of mascarpone mixture over ladyfingers, then half of whipped cream over that. Repeat layers and sprinkle with cocoa. Cover and refrigerate 4 to 6 hours, until set.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"6 Egg yolks\",\n        \"3/4 cup White sugar\",\n        \"2/3 cup Milk\",\n        \"1 1/4 cups Heavy cream\",\n        \"1/2 teaspoon Vanilla extract\",\n        \"1 pound Mascarpone cheese\",\n        \"1/4 cup strong brewed Coffee room temperature\",\n        \"2 tablespoons Rum\",\n        \"2  packages Ladyfinger cookies\",\n        \"1 tablespoon unsweetened Cocoa powder\"\n      ],\n    \"key\" : 5000,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Tiramisu\",\n    \"tileImage\" : \"images/Italian/Italian_1_150_C.jpg\",\n    \"title\" : \"Tiramisu\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_2_600_C.jpg\",\n    \"directions\" : \"1. Put 1 1/2 quarts (6 cups) of water into a pot. Add 1 level tablespoon of kosher salt (or 2 level teaspoons if you are using table salt). Bring to a boil. Lower the heat to warm, cover and keep warm while you make the risotto. 2. In a large, wide saute pan, heat olive oil and butter on medium heat. Add the onions and cook until translucent, about 5 minutes. 3. Add arborio rice. Stir to coat. Cook, stirring, 5-7 minutes, until the rice just barely begins to brown on some of the grains. 4. Add the wine. Stir continuously, a few minutes, until the liquid has been completely absorbed by the rice. 5. Lower the heat to medium low. Start adding the hot salted water to the rice, one ladleful (about 1/2 cup) at a time. After each addition, stir continuously for a few minutes until the rice has completely absorbed the liquid. Stir enough to keep the rice from sticking to the edge of the pan. Stirring continuously helps extract starch from the rice, to make a creamy sauce for the rice. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"Salt\",\n        \"1 1/2 quarts Water\",\n        \"3 tbsp Olive oil\",\n        \"1 tbsp Butter\",\n        \"3/4 cup finely chopped Onion\",\n        \"2 cups Arborio rice or other Risotto rice\",\n        \"1 cup White wine\",\n        \"1 or 2 Meyer lemons enough for 1 tbsp of zest and 3 tbsp of juice\",\n        \"1 tbsp of chopped fresh Oregano leaves\",\n        \"1/4 teaspoon freshly Ground black pepper\",\n        \"1/4 cup lightly toasted Pine nuts\"\n      ],\n    \"key\" : 5001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lemon risotto\",\n    \"tileImage\" : \"images/Italian/Italian_2_150_C.jpg\",\n    \"title\" : \"Lemon risotto with pine nuts, herb oil and rosemary\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_3_600_C.jpg\",\n    \"directions\" : \"Bring a large pot of lightly salted water to a boil. Add pasta and cook for 8 to 10 minutes, or until al dente. Drain and set aside.Melt butter over medium-high heat in a large skillet. Add onions, mushrooms, and garlic, and saute until tender. Pour in wine and simmer for 10 minutes, reducing heat if necessary.Stir in clams, reserved clam juice, sour cream, pepper, and parsley, and simmer another 20 minutes. Toss with linguine, and serve. Enjoy!\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 package Linguine pasta\",\n        \"8 tablespoons unsalted Butter\",\n        \"1 medium white Onion chopped\",\n        \"8 ounces fresh Mushrooms sliced\",\n        \"4 cloves Garlic pressed\",\n        \"1 cup dry White wine\",\n        \"4 cans chopped Clams, drained and rinsed with juices reserved\",\n        \"2 tablespoons Sour cream\",\n        \"freshly Ground black pepper\",\n        \"1/4 cup chopped flat leaf Parsley\"\n      ],\n    \"key\" : 5002,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Linguine with clams\",\n    \"tileImage\" : \"images/Italian/Italian_3_150_C.jpg\",\n    \"title\" : \"Linguine with clams\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_4_600_C.jpg\",\n    \"directions\" : \"In a large saucepan combine crushed tomatoes, diced tomatoes, tomato sauce, minced garlic, sugar, parsley, garlic powder, salt, oregano, basil, and ground black pepper. Add capers and crushed red pepper if desired. Cover. Bring to a boil.Lower heat and simmer, with cover, for 45 to 60 minutes. As simmering time nears, in a large pot with boiling salted water cook spaghetti until al dente.Toss spaghetti with cooked sauce. Serve warm.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 pound Spaghetti\",\n        \"1  can crushed Tomatoes\",\n        \"1  can diced Tomatoes\",\n        \"1 can Tomato sauce\",\n        \"1 tablespoon Minced garlic\",\n        \"2 teaspoons White sugar\",\n        \"2 teaspoons dried Parsley\",\n        \"1 teaspoon Garlic powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon dried Oregano\",\n        \"1/4 teaspoon dried Basil\",\n        \"1/4 teaspoon ground Black pepper\",\n        \"1 1/2 tablespoons Capers\",\n        \"1 pinch crushed Red pepper flakes\"\n      ],\n    \"key\" : 5003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Spaghetti with marinara sauce\",\n    \"tileImage\" : \"images/Italian/Italian_4_150_C.jpg\",\n    \"title\" : \"Spaghetti with marinara sauce\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_5_600_C.jpg\",\n    \"directions\" : \"Layer alternating slices of tomatoes and mozzarella, adding a basil leaf between each, on a large, shallow platter. Drizzle the salad with extra-virgin olive oil and season with salt and pepper, to taste.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"3 Vine ripe tomatoes\",\n        \"1 pound fresh Mozzarell\",\n        \"20 to 30 leaves fresh Basil\",\n        \"Extra-virgin olive oil for drizzling\",\n        \"Coarse Salt and Pepper\"\n      ],\n    \"key\" : 5004,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Caprese Salad\",\n    \"tileImage\" : \"images/Italian/Italian_5_150_C.jpg\",\n    \"title\" : \"Caprese Salad\"\n  },\n  { \"backgroundImage\" : \"images/Italian/Italian_6_600_C.jpg\",\n    \"directions\" : \"1. Brown lean ground beef in skillet until lightly browned and cooked through. Put a few layers of paper towels in large bowl. With slotted spoon, remove browned beef from skillet draining off excess beef fat and put on top of blotting towels. After all the browned beef has been removed from the skillet, drain off and dispose of excess beef fat. Wipe skillet clean with paper towel.Add diced green pepper and onion to skillet. Brown for a few minutes on medium high heat. Add the garlic and cook for 30 seconds more. Add browned beef back to the skillet, lower the heat to low and continue to cook for 5 more minutes stirring frequently. 2. Transfer browned beef, green pepper and onions to 3 Qt. pot. Add tomato sauce, tomato paste. Open stewed tomatoes and dice, then add to 3 Qt. pot. Add oregano, parsley, Italian Spice Mix to taste, probably 2 teaspoons of each. Add a pinch of garlic powder and a pinch of garlic salt, to taste. Add a dash of white wine vinegar. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/italian/italian_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/italian/italian_group.png\",\n        \"key\" : \"Italian\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Italian\",\n        \"title\" : \"Italian\"\n      },\n    \"ingredients\" : [ \"1 lb lean Ground beef\",\n        \"1/2 medium sweet white Onion diced\",\n        \"1/2 large Bell pepper seeds and veins removed\",\n        \"1/2 lb dry Lasagna noodles\",\n        \"1/4 cup Sugar \", \n\t\t\"1 28oz can Tomato sauce\",\n        \"1/2 28 oz can Stewed tomatoes\",\n        \"1/2 6 oz can Tomato paste\",\n        \"1 lb Ricotta cheese\",\n        \"1 1/2 lb Mozzarella cheese\",\n        \"3/4 lb freshly grated Parmesan cheese\",\n        \"Garlic Powder\",\n        \"Oregano\",\n        \"White wine vinegar\"\n      ],\n    \"key\" : 5005,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Lasagna\",\n    \"tileImage\" : \"images/Italian/Italian_6_150_C.jpg\",\n    \"title\" : \"Lasagna\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_1_600_C.jpg\",\n    \"directions\" : \"1. If you are starting with somewhat old, dried out tortillas, great. If not and you are starting with relatively fresh tortillas, put them on a baking sheet and put them in the oven at 200°F for 10-15 minutes to dry them out a bit. It is best to start with tortillas that don't have a lot of moisture in them. Cut tortillas in half, and then cut the halves into 1/4-inch wide strips. Heat oil over medium-high heat in a 3-quart pot. Working in three batches, fry the tortilla strips in the oil, until lightly browned and crisp. Remove the tortilla strips from the pan and let drain on a paper-towel-lined plate. 2. Add the chopped onions to the pan, cook 2 minutes, stirring frequently. Add the chopped chile and cook for 2-3 minutes more, until the onions and chiles have softened. Add the garlic and cook for 30 seconds more. Add the broth, tomatoes, and salt. Increase the heat to high, heat until the soup begins to boil, then reduce the heat to a low simmer, cover and simmer for 15 minutes. Add the shredded chicken and cook until heated through. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"6 Corn tortillas preferably a little old and dried out\",\n        \"1/4 cup grapeseed Oil peanut oil other high smoke point oil\",\n        \"1/2 cup Chopped onion\",\n        \"2 cloves Garlic minced\",\n        \"1 medium Anaheim poblano or Jalapeno chile seeded veins removed chopped\",\n        \"4 cups Chicken broth or homemade chicken stock\",\n        \"1 can  diced Tomatoes undrained \",\n        \"1/2 teaspoon coarse salt\",\n        \"1 1/2 cups shredded cooked Chicken\",\n        \"1 ripe Avocado\",\n        \"1/2 cup shredded Monterey Jack cheese \",\n        \"Chopped fresh Cilantro\",\n        \"1 Lime cut into wedges\"\n      ],\n    \"key\" : 6000,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Tortilla soup\",\n    \"tileImage\" : \"images/Mexican/Mexican_1_150_C.jpg\",\n    \"title\" : \"Tortilla soup\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_2_600_C.jpg\",\n    \"directions\" : \"Combine salsa and sour cream in a large bowl. Heat oil in a large nonstick skillet over medium heat. Add onion and garlic and cook, stirring often, until softened, about 2 minutes. Add turkey and cook, stirring often and crumbling with a wooden spoon, until cooked through, about 5 minutes. Add tomatoes, beans, cumin and chili powder; cook, stirring, until the tomatoes begin to break down, 2 to 3 minutes. Remove from the heat, stir in cilantro and 1/4 cup of the salsa mixture. Add lettuce to the remaining salsa mixture in the bowl; toss to coat. To serve, divide the lettuce among 4 plates, top with the turkey mixture and sprinkle with cheese.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1/2 cup prepared Salsa\",\n        \"1/4 cup reduced-fat Sour cream\",\n        \"1 teaspoon Canola oil\",\n        \"1 medium Onion chopped\",\n        \"3 cloves Garlic minced\",\n        \"1 pound 93% lean Ground turkey\",\n        \"2 large plum Tomatoes diced\",\n        \"1 can kidney Beans rinsed\",\n        \"2 teaspoons Ground cumin\",\n        \"2 teaspoons Chili powder\",\n        \"1/4 cup chopped fresh Cilantro\",\n        \"8 cups shredded Romaine lettuce\",\n        \"1/2 cup shredded sharp Cheddar cheese\"\n      ],\n    \"key\" : 6001,\n    \"preptime\" : 70,\n    \"rating\" : 4,\n    \"shortTitle\" : \"Taco Salad\",\n    \"tileImage\" : \"images/Mexican/Mexican_2_150_C.jpg\",\n    \"title\" : \"Taco Salad\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_3_600_C.jpg\",\n    \"directions\" : \"Heat the oven to 400. Heat the oil in a large skillet over medium heat. Add the onion and garlic and cook them for 3 minutes, stirring often. Add the beef and use a wooden spoon or a spatula to break it up while it cooks, until it is no longer red, about 3 minutes. Stir in 1/2 cup of the salsa, the chili powder, and the salt and pepper. Cook the mixture over low heat, stirring occasionally, for 10 minutes. Place the tortillas on a plate and cover them with damp paper towels. Microwave them until warm and pliable, about 45 seconds. Top each tortilla with 1/4 cup of the beef mixture, spreading it to an inch from the edges. Sprinkle cheese evenly over the beef.Roll up the tortillas and place them on a foil-lined baking sheet with the seam sides down. Brush the taquitos lightly with vegetable oil, then bake them until the filling is heated through and the tortillas are lightly browned, about 8 to 12 minutes. Serve them hot with sour cream and/or salsa. Serves 4 to 6.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 tablespoon Vegetable oil plus more for brushing on the taquitos\",\n        \"1 medium Onion finely chopped\",\n        \"1 clove Garlic minced\",\n        \"3/4 pound lean Ground beef\",\n        \"1 cup Salsa plus more for dipping\",\n        \"2 teaspoons Chili powder\",\n        \"1/2 teaspoon Salt\",\n        \"1/4 teaspoon Pepper\",\n        \"10 flour Tortillas\",\n        \"1/2 cup shredded Cheddar or Monterey Jack Sour cream\"\n      ],\n    \"key\" : 6002,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Taquitos\",\n    \"tileImage\" : \"images/Mexican/Mexican_3_150_C.jpg\",\n    \"title\" : \"Taquitos\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_4_600_C.jpg\",\n    \"directions\" : \"Trim fat from pork. In a 3 1/2- or 4-quart slow cooker combine pork shoulder, broth, onion, garlic, cumin, ground chipotle chile pepper or chili powder, and salt. Cover and cook on low-heat setting for 10 to 11 hours or on high-heat setting for 5 to 6 hours. 2. Preheat oven to 400 degrees F. Remove pork from slow cooker, reserving cooking liquid. Using two forks, pull meat into coarse strands. 3. In a large bowl combine pork, 1/2 cup of the enchilada sauce, 2 tablespoons of the reserved cooking liquid, and the 1 tablespoon snipped cilantro. Set aside. 4. In a medium bowl combine the remaining enchilada sauce, 1/4 cup of the reserved cooking liquid (discard any remaining cooking liquid), and the diced green chile peppers. Spread about 1/2 cup of enchilada-green chile pepper mixture in the bottom of a 3-quart rectangular baking dish; set aside. 5. Divide pork mixture and 1 1/2 cups of the cheese among tortillas, placing meat and cheese near the edge of each tortilla. Roll up tortillas. Place filled tortillas, seam sides down, in the prepared baking dish (place tortillas close together); top with the remaining enchilada-green chile pepper mixture. \",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3 1/2 pounds boneless Pork shoulder\",\n        \"1 14 ounce can Chicken broth\",\n        \"1/2 cup chopped Onion\",\n        \"6 cloves garlic minced\",\n        \"1 tablespoon Ground cumin\",\n        \"2 or 3 teaspoons ground Chipotle chile pepper or Hot chili powder\",\n        \"1 teaspoon Salt\",\n        \"3 10 ounce cans Enchilada sauce\",\n        \"1 tablespoon snipped fresh Cilantro\",\n        \"1 4 ounce can diced Green hile peppers\",\n        \"8 ounces Cotija cheese shredded\",\n        \"8 inches flour Tortillas\",\n        \"Snipped fresh Cilantro\",\n        \"Diced tomato or quartered Grape tomatoes \",\n\t\t\"Sour cream\"\n      ],\n    \"key\" : 6003,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Pulled Pork Enchilada\",\n    \"tileImage\" : \"images/Mexican/Mexican_4_150_C.jpg\",\n    \"title\" : \"Pulled Pork Enchilada\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_5_600_C.jpg\",\n    \"directions\" : \"1. Remove papery husks from tomatillos and rinse well. 2. Roasting method Cut in half and place cut side down on a foil-lined baking sheet. Place under a broiler for about 5-7 minutes to lightly blacken the skin. 3. Boiling method Place tomatillos in a saucepan, cover with water. Bring to a boil and simmer for 5 minutes. Remove tomatillos with a slotted spoon. 3. Place tomatillos, lime juice, onions, cilantro, chili peppers, sugar in a food processor (or blender) and pulse until all ingredients are finely chopped and mixed. Season to taste with salt. Cool in refrigerator.Serve with chips or as a salsa accompaniment to Mexican dishes. Makes 3 cups.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"1 1/2 lb Tomatillos\",\n        \"1/2 cup chopped White onion\",\n        \"1/2 cup Cilantro leaves\",\n        \"1 Tbsp fresh Lime juice\",\n        \"1/4 teaspoon Sugar\",\n        \"2 Jalapeno peppers OR 2 Serrano peppers stemmed seeded and chopped\",\n        \"Salt to taste\"\n      ],\n    \"key\" : 6004,\n    \"preptime\" : 70,\n    \"rating\" : 3,\n    \"shortTitle\" : \"Salsa Verde\",\n    \"tileImage\" : \"images/Mexican/Mexican_5_150_C.jpg\",\n    \"title\" : \"Salsa Verde\"\n  },\n  { \"backgroundImage\" : \"images/Mexican/Mexican_6_600_C.jpg\",\n    \"directions\" : \"Place hominy in a large Dutch oven. Cover with water to 4 inches above hominy; cover and let stand 8 hours. Drain. Return hominy to pan. Cover with water to 4 inches above hominy; bring to a boil. Reduce heat, and simmer 1 hour, stirring occasionally; drain. Wipe pan dry with a paper towel.Heat oil in pan over medium-high heat. Add pork to pan; saut? 5 minutes, turning to brown on all sides. Add onion; saut? 2 minutes or until tender. Add oregano, salt, garlic, and bay leaf; saut? 1 minute. Return hominy to pan. Add 3 cups water and broth; bring to a boil. Reduce heat, and simmer 30 minutes, stirring occasionally. Add chiles; simmer 30 minutes, stirring occasionally. Discard chiles and bay leaf. Ladle about 1 1/2 cups posole into each of 8 bowls. Garnish each serving with 1/4 cup cabbage, about 2 teaspoons cilantro, about 2 teaspoons radishes, about 2 teaspoons green onions, and 1 lime wedge.\",\n    \"favorite\" : false,\n    \"group\" : { \"backgroundImage\" : \"images/mexican/mexican_group_detail.png\",\n        \"description\" : \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis laoreet tempus libero vitae feugiat. Proin justo velit, luctus ornare posuere eget, pulvinar ac nibh. Integer dapibus leo in metus volutpat blandit. Morbi facilisis laoreet magna iaculis porta. Donec quis ipsum et justo faucibus lacinia. Vivamus id sapien nec dolor venenatis hendrerit. Aenean sit amet pretium quam. \",\n        \"groupImage\" : \"images/mexican/mexican_group.png\",\n        \"key\" : \"Mexican\",\n        \"rank\" : \"\",\n        \"recipesCount\" : 6,\n        \"shortTitle\" : \"Mexican\",\n        \"title\" : \"Mexican\"\n      },\n    \"ingredients\" : [ \"3/4 pound dried White corn hominy\",\n        \"2 teaspoons Canola oil\",\n        \"8 ounces boneless Pork loin cut into 1/2-inch pieces \",\n        \"1 cup chopped Onion \",\n        \"2 teaspoons dried Oregano\",\n        \"3/4 teaspoon Salt\",\n        \"2 Garlic cloves minced\",\n        \"1 Bay leaf\",\n        \"3 cups Water\",\n        \"3 cans fat-free less-sodium Chicken broth\",\n        \"2 dried New Mexican chiles\",\n        \"2 cups shredded Cabbage\",\n        \"1/3 cup chopped fresh Cilantro\",\n        \"1/3 cup slivered Radishes\",\n        \"1/3 cup chopped Green onions \", \n\t\t\"8 lime wedges\"\n      ],\n    \"key\" : 6005,\n    \"preptime\" : 70,\n    \"rating\" : 5,\n    \"shortTitle\" : \"Posole\",\n    \"tileImage\" : \"images/Mexican/Mexican_6_150_C.jpg\",\n    \"title\" : \"Posole\"\n  }\n]"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/DataModel/BindableBase.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.UI.Xaml.Data;\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Implementation of <see cref=\"INotifyPropertyChanged\"/> to simplify models.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        /// <summary>\n        /// Multicast event for property change notifications.\n        /// </summary>\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        /// <summary>\n        /// Checks if a property already matches a desired value.  Sets the property and\n        /// notifies listeners only when necessary.\n        /// </summary>\n        /// <typeparam name=\"T\">Type of the property.</typeparam>\n        /// <param name=\"storage\">Reference to a property with both getter and setter.</param>\n        /// <param name=\"value\">Desired value for the property.</param>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers that\n        /// support CallerMemberName.</param>\n        /// <returns>True if the value was changed, false if the existing value matched the\n        /// desired value.</returns>\n        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)\n        {\n            if (object.Equals(storage, value)) return false;\n\n            storage = value;\n            this.OnPropertyChanged(propertyName);\n            return true;\n        }\n\n        /// <summary>\n        /// Notifies listeners that a property value has changed.\n        /// </summary>\n        /// <param name=\"propertyName\">Name of the property used to notify listeners.  This\n        /// value is optional and can be provided automatically when invoked from compilers\n        /// that support <see cref=\"CallerMemberNameAttribute\"/>.</param>\n        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)\n        {\n            var eventHandler = this.PropertyChanged;\n            if (eventHandler != null)\n            {\n                eventHandler(this, new PropertyChangedEventArgs(propertyName));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/DataModel/RecipeDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing System.Net.Http;\nusing Windows.Data.Json;\nusing Windows.ApplicationModel;\nusing System.Threading.Tasks;\nusing Windows.Storage;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"RecipeDataItem\"/> and <see cref=\"RecipeDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class RecipeDataCommon : BindableBase\n    {\n        public Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public RecipeDataCommon(String uniqueId, String title, String shortTitle, String imagePath)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._shortTitle = shortTitle;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _shortTitle = string.Empty;\n        public string ShortTitle\n        {\n            get { return this._shortTitle; }\n            set { this.SetProperty(ref this._shortTitle, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n\n        public Uri ImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._imagePath);\n            }\n        }\n\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(_baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n\n        public string GetImageUri()\n        {\n            return _imagePath;\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class UserPhotoDataItem : RecipeDataCommon\n    {\n        public new Uri _baseUri = new Uri(\"ms-appdata:///local/\");\n\n        public UserPhotoDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n    }\n\n    /// <summary>\n    /// Recipe item data model.\n    /// </summary>\n    public class RecipeDataItem : RecipeDataCommon\n    {\n        public RecipeDataItem()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n            // HACK - just initialize the User Photos evrytime we start the app\n            UserPhotos = new ObservableCollection<UserPhotoDataItem>();\n        }\n\n        public RecipeDataItem(String uniqueId, String title, String shortTitle, String imagePath, int preptime, String directions, ObservableCollection<string> ingredients, RecipeDataGroup group)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n            this._preptime = preptime;\n            this._directions = directions;\n            this._ingredients = ingredients;\n            this._group = group;\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private ObservableCollection<string> _ingredients;\n        public ObservableCollection<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private ObservableCollection<UserPhotoDataItem> _userphotos;\n        public ObservableCollection<UserPhotoDataItem> UserPhotos\n        {\n            get { return this._userphotos; }\n            set { this.SetProperty(ref this._userphotos, value); }\n        }\n        private RecipeDataGroup _group;\n        public RecipeDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n\n        private ImageSource _tileImage;\n        private string _tileImagePath;\n\n        public Uri TileImagePath\n        {\n            get\n            {\n                return new Uri(_baseUri, this._tileImagePath);\n            }\n        }\n\n        public ImageSource TileImage\n        {\n            get\n            {\n                if (this._tileImage == null && this._tileImagePath != null)\n                {\n                    this._tileImage = new BitmapImage(new Uri(_baseUri, this._tileImagePath));\n                }\n                return this._tileImage;\n            }\n            set\n            {\n                this._tileImagePath = null;\n                this.SetProperty(ref this._tileImage, value);\n            }\n        }\n\n        public void SetTileImage(String path)\n        {\n            this._tileImage = null;\n            this._tileImagePath = path;\n            this.OnPropertyChanged(\"TileImage\");\n        }\n    }\n\n    /// <summary>\n    /// Recipe group data model.\n    /// </summary>\n    public class RecipeDataGroup : RecipeDataCommon\n    {\n        public RecipeDataGroup()\n            : base(String.Empty, String.Empty, String.Empty, String.Empty)\n        {\n        }\n\n        public RecipeDataGroup(String uniqueId, String title, String shortTitle, String imagePath, String description)\n            : base(uniqueId, title, shortTitle, imagePath)\n        {\n        }\n\n        private ObservableCollection<RecipeDataItem> _items = new ObservableCollection<RecipeDataItem>();\n        public ObservableCollection<RecipeDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<RecipeDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _groupImage;\n        private string _groupImagePath;\n\n        public ImageSource GroupImage\n        {\n            get\n            {\n                if (this._groupImage == null && this._groupImagePath != null)\n                {\n                    this._groupImage = new BitmapImage(new Uri(_baseUri, this._groupImagePath));\n                }\n                return this._groupImage;\n            }\n            set\n            {\n                this._groupImagePath = null;\n                this.SetProperty(ref this._groupImage, value);\n            }\n        }\n\n        public int RecipesCount\n        {\n            get\n            {\n                return this.Items.Count;\n            }\n        }\n\n        public void SetGroupImage(String path)\n        {\n            this._groupImage = null;\n            this._groupImagePath = path;\n            this.OnPropertyChanged(\"GroupImage\");\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items.\n    /// </summary>\n    public sealed class RecipeDataSource\n    {\n        //public event EventHandler RecipesLoaded;\n\n        private static RecipeDataSource _recipeDataSource = new RecipeDataSource();\n\n        private ObservableCollection<RecipeDataGroup> _allGroups = new ObservableCollection<RecipeDataGroup>();\n        public ObservableCollection<RecipeDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static async Task<IEnumerable<RecipeDataGroup>> GetGroupsAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _recipeDataSource.AllGroups;\n        }\n\n        public static async Task<RecipeDataGroup> GetGroupAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static async Task<RecipeDataItem> GetItemAsync(string uniqueId)\n        {\n            await EnsureRecipeDataLoaded();\n            // Simple linear search is acceptable for small data sets\n            var matches = _recipeDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        private static async Task EnsureRecipeDataLoaded()\n        {\n            if (_recipeDataSource == null || _recipeDataSource.AllGroups.Count == 0)\n                await _recipeDataSource.LoadLocalDataAsync();\n\n            return;\n        }\n\n        public async Task LoadLocalDataAsync()\n        {\n            // Retrieve recipe data from Recipes.txt\n            var file = await Package.Current.InstalledLocation.GetFileAsync(\"Data\\\\Recipes.txt\");\n            var result = await FileIO.ReadTextAsync(file);\n\n            // Parse the JSON recipe data\n            var recipes = JsonArray.Parse(result);\n\n            // Convert the JSON objects into RecipeDataItems and RecipeDataGroups\n            CreateRecipesAndRecipeGroups(recipes);\n        }\n\n        private static void CreateRecipesAndRecipeGroups(JsonArray array)\n        {\n            foreach (var item in array)\n            {\n                var obj = item.GetObject();\n                RecipeDataItem recipe = new RecipeDataItem();\n                RecipeDataGroup group = null;\n\n                foreach (var key in obj.Keys)\n                {\n                    IJsonValue val;\n                    if (!obj.TryGetValue(key, out val))\n                        continue;\n\n                    switch (key)\n                    {\n                        case \"key\":\n                            recipe.UniqueId = val.GetNumber().ToString();\n                            break;\n                        case \"title\":\n                            recipe.Title = val.GetString();\n                            break;\n                        case \"shortTitle\":\n                            recipe.ShortTitle = val.GetString();\n                            break;\n                        case \"preptime\":\n                            recipe.PrepTime = (int)val.GetNumber();\n                            break;\n                        case \"directions\":\n                            recipe.Directions = val.GetString();\n                            break;\n                        case \"ingredients\":\n                            var ingredients = val.GetArray();\n                            var list = (from i in ingredients select i.GetString()).ToList();\n                            recipe.Ingredients = new ObservableCollection<string>(list);\n                            break;\n                        case \"backgroundImage\":\n                            recipe.SetImage(val.GetString());\n                            break;\n                        case \"tileImage\":\n                            recipe.SetTileImage(val.GetString());\n                            break;\n                        case \"group\":\n                            var recipeGroup = val.GetObject();\n\n                            IJsonValue groupKey;\n                            if (!recipeGroup.TryGetValue(\"key\", out groupKey))\n                                continue;\n\n                            group = _recipeDataSource.AllGroups.FirstOrDefault(c => c.UniqueId.Equals(groupKey.GetString()));\n\n                            if (group == null)\n                                group = CreateRecipeGroup(recipeGroup);\n\n                            recipe.Group = group;\n                            break;\n                    }\n                }\n\n                if (group != null)\n                    group.Items.Add(recipe);\n            }\n        }\n\n        private static RecipeDataGroup CreateRecipeGroup(JsonObject obj)\n        {\n            RecipeDataGroup group = new RecipeDataGroup();\n\n            foreach (var key in obj.Keys)\n            {\n                IJsonValue val;\n                if (!obj.TryGetValue(key, out val))\n                    continue;\n\n                switch (key)\n                {\n                    case \"key\":\n                        group.UniqueId = val.GetString();\n                        break;\n                    case \"title\":\n                        group.Title = val.GetString();\n                        break;\n                    case \"shortTitle\":\n                        group.ShortTitle = val.GetString();\n                        break;\n                    case \"description\":\n                        group.Description = val.GetString();\n                        break;\n                    case \"backgroundImage\":\n                        group.SetImage(val.GetString());\n                        break;\n                    case \"groupImage\":\n                        group.SetGroupImage(val.GetString());\n                        break;\n                }\n            }\n\n            _recipeDataSource.AllGroups.Add(group);\n            return group;\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/DataModel/SampleDataSource.cs",
    "content": "﻿// ----------------------------------------------------------------------------------\n// Microsoft Developer & Platform Evangelism\n// \n// Copyright (c) Microsoft Corporation. All rights reserved.\n// \n// THIS CODE AND INFORMATION ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND, \n// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES \n// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.\n// ----------------------------------------------------------------------------------\n// The example companies, organizations, products, domain names,\n// e-mail addresses, logos, people, places, and events depicted\n// herein are fictitious.  No association with any real company,\n// organization, product, domain name, email address, logo, person,\n// places, or events is intended or should be inferred.\n// ----------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Windows.ApplicationModel.Resources.Core;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\n// The data model defined by this file serves as a representative example of a strongly-typed\n// model that supports notification when members are added, removed, or modified.  The property\n// names chosen coincide with data bindings in the standard item templates.\n//\n// Applications may use this model as a starting point and build on it, or discard it entirely and\n// replace it with something appropriate to their needs.\n\nnamespace ContosoCookbook.DataModel\n{\n    /// <summary>\n    /// Base class for <see cref=\"SampleDataItem\"/> and <see cref=\"SampleDataGroup\"/> that\n    /// defines properties common to both.\n    /// </summary>\n    [Windows.Foundation.Metadata.WebHostHidden]\n    public abstract class SampleDataCommon : BindableBase\n    {\n        private static Uri _baseUri = new Uri(\"ms-appx:///\");\n\n        public SampleDataCommon(String uniqueId, String title, String subtitle, String imagePath, String description)\n        {\n            this._uniqueId = uniqueId;\n            this._title = title;\n            this._subtitle = subtitle;\n            this._description = description;\n            this._imagePath = imagePath;\n        }\n\n        private string _uniqueId = string.Empty;\n        public string UniqueId\n        {\n            get { return this._uniqueId; }\n            set { this.SetProperty(ref this._uniqueId, value); }\n        }\n\n        private string _title = string.Empty;\n        public string Title\n        {\n            get { return this._title; }\n            set { this.SetProperty(ref this._title, value); }\n        }\n\n        private string _subtitle = string.Empty;\n        public string Subtitle\n        {\n            get { return this._subtitle; }\n            set { this.SetProperty(ref this._subtitle, value); }\n        }\n\n        private string _description = string.Empty;\n        public string Description\n        {\n            get { return this._description; }\n            set { this.SetProperty(ref this._description, value); }\n        }\n\n        private ImageSource _image = null;\n        private String _imagePath = null;\n        public ImageSource Image\n        {\n            get\n            {\n                if (this._image == null && this._imagePath != null)\n                {\n                    this._image = new BitmapImage(new Uri(SampleDataCommon._baseUri, this._imagePath));\n                }\n                return this._image;\n            }\n\n            set\n            {\n                this._imagePath = null;\n                this.SetProperty(ref this._image, value);\n            }\n        }\n\n        public void SetImage(String path)\n        {\n            this._image = null;\n            this._imagePath = path;\n            this.OnPropertyChanged(\"Image\");\n        }\n    }\n\n    /// <summary>\n    /// Generic item data model.\n    /// </summary>\n    public class SampleDataItem : SampleDataCommon\n    {\n        public SampleDataItem(String uniqueId, String title, String subtitle, String imagePath, int prepTime, String description, IEnumerable<string> ingredients, String content, SampleDataGroup group)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n            this._content = content;\n            this._group = group;\n            this._preptime = prepTime;\n            this._directions = description;\n            this._ingredients = ingredients;\n        }\n\n        private string _content = string.Empty;\n        public string Content\n        {\n            get { return this._content; }\n            set { this.SetProperty(ref this._content, value); }\n        }\n\n        private int _preptime = 0;\n        public int PrepTime\n        {\n            get { return this._preptime; }\n            set { this.SetProperty(ref this._preptime, value); }\n        }\n\n        private string _directions = string.Empty;\n        public string Directions\n        {\n            get { return this._directions; }\n            set { this.SetProperty(ref this._directions, value); }\n        }\n\n        private IEnumerable<string> _ingredients;\n        public IEnumerable<string> Ingredients\n        {\n            get { return this._ingredients; }\n            set { this.SetProperty(ref this._ingredients, value); }\n        }\n\n        private SampleDataGroup _group;\n        public SampleDataGroup Group\n        {\n            get { return this._group; }\n            set { this.SetProperty(ref this._group, value); }\n        }\n    }\n\n    /// <summary>\n    /// Generic group data model.\n    /// </summary>\n    public class SampleDataGroup : SampleDataCommon\n    {\n        public SampleDataGroup(String uniqueId, String title, String subtitle, String imagePath, String description)\n            : base(uniqueId, title, subtitle, imagePath, description)\n        {\n        }\n\n        private ObservableCollection<SampleDataItem> _items = new ObservableCollection<SampleDataItem>();\n        public ObservableCollection<SampleDataItem> Items\n        {\n            get { return this._items; }\n        }\n\n        public IEnumerable<SampleDataItem> TopItems\n        {\n            // Provides a subset of the full items collection to bind to from a GroupedItemsPage\n            // for two reasons: GridView will not virtualize large items collections, and it\n            // improves the user experience when browsing through groups with large numbers of\n            // items.\n            //\n            // A maximum of 12 items are displayed because it results in filled grid columns\n            // whether there are 1, 2, 3, 4, or 6 rows displayed\n            get { return this._items.Take(12); }\n        }\n    }\n\n    /// <summary>\n    /// Creates a collection of groups and items with hard-coded content.\n    /// </summary>\n    public sealed class SampleDataSource\n    {\n        private static SampleDataSource _sampleDataSource = new SampleDataSource();\n\n        private ObservableCollection<SampleDataGroup> _allGroups = new ObservableCollection<SampleDataGroup>();\n        public ObservableCollection<SampleDataGroup> AllGroups\n        {\n            get { return this._allGroups; }\n        }\n\n        public static IEnumerable<SampleDataGroup> GetGroups(string uniqueId)\n        {\n            if (!uniqueId.Equals(\"AllGroups\")) throw new ArgumentException(\"Only 'AllGroups' is supported as a collection of groups\");\n\n            return _sampleDataSource.AllGroups;\n        }\n\n        public static SampleDataGroup GetGroup(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public static SampleDataItem GetItem(string uniqueId)\n        {\n            // Simple linear search is acceptable for small data sets\n            var matches = _sampleDataSource.AllGroups.SelectMany(group => group.Items).Where((item) => item.UniqueId.Equals(uniqueId));\n            if (matches.Count() == 1) return matches.First();\n            return null;\n        }\n\n        public SampleDataSource()\n        {\n            String ITEM_CONTENT = String.Format(\"Item Content: {0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\\n\\n{0}\",\n                        \"Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat\");\n            IEnumerable<string> ITEM_INGREDIENTS = new string[] { \"Curabitur\", \"aliquam\", \"vestibulum\", \"nam \", \"curae\", \"maecenas\" };\n\n            var group1 = new SampleDataGroup(\"Group-1\",\n                    \"Group Title: 1\",\n                    \"Group Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    25,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-2\",\n                    \"Item Title: 2 but this one has a long name\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    30,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    40,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            group1.Items.Add(new SampleDataItem(\"Group-1-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group1));\n            this.AllGroups.Add(group1);\n\n            var group2 = new SampleDataGroup(\"Group-2\",\n                    \"Group Title: 2\",\n                    \"Group Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/MediumGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            group2.Items.Add(new SampleDataItem(\"Group-2-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    47,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group2));\n            this.AllGroups.Add(group2);\n\n            var group3 = new SampleDataGroup(\"Group-3\",\n                    \"Group Title: 3\",\n                    \"Group Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/MediumGray.png\",\n                    10,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    66,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    11,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            group3.Items.Add(new SampleDataItem(\"Group-3-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/MediumGray.png\",\n                    12,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group3));\n            this.AllGroups.Add(group3);\n\n            var group4 = new SampleDataGroup(\"Group-4\",\n                    \"Group Title: 4\",\n                    \"Group Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/DarkGray.png\",\n                    13,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/LightGray.png\",\n                    14,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/DarkGray.png\",\n                    15,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/LightGray.png\",\n                    16,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    17,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            group4.Items.Add(new SampleDataItem(\"Group-4-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/LightGray.png\",\n                    18,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group4));\n            this.AllGroups.Add(group4);\n\n            var group5 = new SampleDataGroup(\"Group-5\",\n                    \"Group Title: 5\",\n                    \"Group Subtitle: 5\",\n                    \"Assets/MediumGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    20,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    22,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/LightGray.png\",\n                    23,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            group5.Items.Add(new SampleDataItem(\"Group-5-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/MediumGray.png\",\n                    45,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group5));\n            this.AllGroups.Add(group5);\n\n            var group6 = new SampleDataGroup(\"Group-6\",\n                    \"Group Title: 6\",\n                    \"Group Subtitle: 6\",\n                    \"Assets/DarkGray.png\",\n                    \"Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante\");\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-1\",\n                    \"Item Title: 1\",\n                    \"Item Subtitle: 1\",\n                    \"Assets/LightGray.png\",\n                    55,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-2\",\n                    \"Item Title: 2\",\n                    \"Item Subtitle: 2\",\n                    \"Assets/DarkGray.png\",\n                    7,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-3\",\n                    \"Item Title: 3\",\n                    \"Item Subtitle: 3\",\n                    \"Assets/MediumGray.png\",\n                    33,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-4\",\n                    \"Item Title: 4\",\n                    \"Item Subtitle: 4\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-5\",\n                    \"Item Title: 5\",\n                    \"Item Subtitle: 5\",\n                    \"Assets/LightGray.png\",\n                    35,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-6\",\n                    \"Item Title: 6\",\n                    \"Item Subtitle: 6\",\n                    \"Assets/MediumGray.png\",\n                    36,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-7\",\n                    \"Item Title: 7\",\n                    \"Item Subtitle: 7\",\n                    \"Assets/DarkGray.png\",\n                    34,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            group6.Items.Add(new SampleDataItem(\"Group-6-Item-8\",\n                    \"Item Title: 8\",\n                    \"Item Subtitle: 8\",\n                    \"Assets/LightGray.png\",\n                    44,\n                    \"Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.\",\n                    ITEM_INGREDIENTS,\n                    ITEM_CONTENT,\n                    group6));\n            this.AllGroups.Add(group6);\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/GroupDetailPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.GroupDetailPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    RequestedTheme=\"Light\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    mc:Ignorable=\"d\">  \n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" \n               DataContext=\"{Binding Group}\"\n               d:DataContext=\"{Binding AllGroups[0], Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}\">\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"GroupDetailsPivotItem\" Header=\"{Binding Title}\">\n                <Grid x:Name=\"PivotLayoutGrid\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"220\"/>\n                        <RowDefinition/>\n                    </Grid.RowDefinitions>\n                    <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" x:Name=\"img\" Grid.Column=\"0\" \n                           HorizontalAlignment=\"Left\"/>\n                    <StackPanel Orientation=\"Horizontal\" Margin=\"0,0,5,5\" \n                                HorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\">\n                        <TextBlock Text=\"Total Recipes: \" Style=\"{StaticResource BodyTextBlockStyle}\"\n                                    Foreground=\"{StaticResource AccentBrush}\"/>\n                        <TextBlock Text=\"{Binding RecipesCount}\" Style=\"{StaticResource BodyTextBlockStyle}\" \n                                    Foreground=\"{ThemeResource AccentBrush}\" Margin=\"10,0,0,0\"/>\n                    </StackPanel>\n                    <ScrollViewer x:Name=\"DescriptionScrollViewer\" Grid.Row=\"1\" Margin=\"0,10,0,0\">\n                        <TextBlock Text=\"{Binding Description}\" TextWrapping=\"Wrap\" HorizontalAlignment=\"Left\" \n                                   Style=\"{StaticResource BodyTextBlockStyle}\" FontSize=\"{StaticResource TextStyleLargeFontSize}\" />\n                    </ScrollViewer>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"GroupRecipesPivotItem\" Header=\"recipes\">\n                <!--Double line list no text wrapping-->\n                <ListView x:Name=\"lstRecipes\"  ItemsSource=\"{Binding Items}\" SelectionChanged=\"lstRecipes_SelectionChanged\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"160\"/>\n                                    <ColumnDefinition Width=\"*\"/>\n                                </Grid.ColumnDefinitions>\n                                <Image Source=\"{Binding Image}\" Width=\"150\" Stretch=\"UniformToFill\" HorizontalAlignment=\"Left\" \n                                       Margin=\"0,0,0,10\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\"/>\n                                <StackPanel Margin=\"10,0,0,0\" Grid.Column=\"1\">\n                                    <TextBlock Text=\"{Binding Title}\"  \n                                               Pivot.SlideInAnimationGroup=\"1\" CommonNavigationTransitionInfo.IsStaggerElement=\"True\" \n                                               FontSize=\"18\" TextWrapping=\"WrapWholeWords\" MaxLines=\"3\"/>\n                                    <StackPanel Grid.Column=\"1\" Orientation=\"Horizontal\" Pivot.SlideInAnimationGroup=\"2\"\n                                            CommonNavigationTransitionInfo.IsStaggerElement=\"True\" VerticalAlignment=\"Top\" Margin=\"0,5,0,0\">\n                                        <TextBlock Text=\"Prep time: \" Style=\"{StaticResource CaptionTextBlockStyle}\" />\n                                        <TextBlock Text=\"{Binding PrepTime}\" Style=\"{StaticResource CaptionTextBlockStyle}\" \n                                               Margin=\"10,0,0,0\"/>\n                                    </StackPanel>\n                                </StackPanel>\n                            </Grid>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n        </Pivot>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/GroupDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class GroupDetailPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public GroupDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var group = await RecipeDataSource.GetGroupAsync((string)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = group;\n\n            lstRecipes.SelectedItem = null;\n        }\n\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void lstRecipes_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (e.AddedItems.Count > 0)\n            {\n                var itemId = ((RecipeDataItem)e.AddedItems[0]).UniqueId;\n                this.Frame.Navigate(typeof(RecipeDetailPage), itemId);\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    xmlns:animation=\"using:Windows.UI.Xaml.Media.Animation\"\n    mc:Ignorable=\"d\"\n    RequestedTheme=\"Light\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\"\n    d:DataContext=\"{d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}\">\n\n    <Page.Resources>\n        <DataTemplate x:Key=\"RecipeGroupDataTemplate\">\n            <Grid Margin=\"20, 0, 0, 10\" >\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"3*\"/>\n                    <ColumnDefinition Width=\"7*\"/>\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition/>\n                    <RowDefinition/>\n                </Grid.RowDefinitions>\n                <Image Source=\"{Binding Image}\" Stretch=\"UniformToFill\" Grid.RowSpan=\"2\"/>\n                <TextBlock Text=\"{Binding Title}\"  Grid.Column=\"1\" Grid.Row=\"0\" \n\t\t\t\t           Style=\"{StaticResource HeaderTextBlockStyle}\" FontSize=\"24\" Margin=\"10,0,0,0\"/>\n                <TextBlock Text=\"{Binding Description}\" Grid.Column=\"1\" Grid.Row=\"1\" \n\t\t\t\t           Style=\"{StaticResource BodyTextBlockStyle}\" TextWrapping=\"NoWrap\" \n                           TextTrimming=\"CharacterEllipsis\"  Margin=\"10,0,0,0\"/>\n            </Grid>\n        </DataTemplate>\n    </Page.Resources>\n\n    <Page.BottomAppBar>\n        <CommandBar ClosedDisplayMode=\"Minimal\">\n            <CommandBar.SecondaryCommands>\n                <AppBarButton x:Uid=\"AboutButton\" Label=\"about\" Click=\"About_Click\"/>\n            </CommandBar.SecondaryCommands>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid x:Name=\"LayoutRoot\" \n          Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\"/>\n            <RowDefinition Height=\"*\"/>\n        </Grid.RowDefinitions>\n\n        <!-- TitlePanel -->\n        <StackPanel Grid.Row=\"0\" Margin=\"20,17,0,28\">\n            <TextBlock x:Uid=\"AppName\" Text=\"CONTOSO COOKBOOK\" Style=\"{ThemeResource TitleTextBlockStyle}\" Typography.Capitals=\"SmallCaps\"/>\n            <TextBlock x:Uid=\"RegionsPageHeader\" Text=\"regions\" Margin=\"0,12,0,0\" Style=\"{ThemeResource HeaderTextBlockStyle}\"/>\n        </StackPanel>\n\n        <!--TODO: Content should be placed within the following grid \n                  to show details for the current item -->\n        <Grid Grid.Row=\"1\" x:Name=\"ContentRoot\">\n            <ListView x:Name=\"groupListView\" \n                      ItemsSource=\"{Binding AllGroups}\"\n                      SelectionChanged=\"lstGroups_SelectionChanged\" \n                      ItemTemplate=\"{StaticResource RecipeGroupDataTemplate}\"/>\n        </Grid>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/MainPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.Graphics.Display;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            var recipeDataGroups = await RecipeDataSource.GetGroupsAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"AllGroups\"] = recipeDataGroups;\n\n            groupListView.SelectedItem = null;\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private void About_Click(object sender, RoutedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(AboutPage));\n        }\n\n        private void lstGroups_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(GroupDetailPage), (groupListView.SelectedItem as RecipeDataGroup).UniqueId);\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Package.appxmanifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n  <Identity Name=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" Publisher=\"CN=Andy\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"b573322f-6aa1-4398-8770-489ba9ccc46a\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>ContosoCookbook</DisplayName>\n    <PublisherDisplayName>Andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"ContosoCookbook.App\">\n      <uap:VisualElements DisplayName=\"ContosoCookbook\" Square150x150Logo=\"Assets\\Logo.png\" Square44x44Logo=\"Assets\\SmallLogo.png\" Description=\"ContosoCookbook\"  BackgroundColor=\"#464646\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\WideLogo.png\" Square71x71Logo=\"Assets\\Square71x71Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n        <uap:ApplicationView MinWidth=\"width320\" />\n        <!--Used in XAML Designer. DO NOT REMOVE-->\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClientServer\" />\n    <uap:Capability Name=\"picturesLibrary\" />\n    <DeviceCapability Name=\"webcam\" />\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ContosoCookbook\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ContosoCookbook\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/RecipeDetailPage.xaml",
    "content": "﻿<Page\n    x:Class=\"ContosoCookbook.RecipeDetailPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:ContosoCookbook\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:data=\"using:ContosoCookbook.DataModel\"\n    RequestedTheme=\"Light\"\n    mc:Ignorable=\"d\"\n    d:DataContext=\"{Binding AllGroups[1].Items[1], Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}\"\n    DataContext=\"{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}\">\n\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton x:Name=\"btnPinToStart\" Icon=\"Pin\" Click=\"btnPinToStart_Click\" Label=\"Like\"/>\n            <AppBarButton x:Name=\"btnReminderTimer\" Icon=\"Clock\" Label=\"timer\" Click=\"btnReminderTimer_Click\"/>\n            <AppBarButton x:Name=\"btnTakePhoto\" Icon=\"Camera\" Label=\"nailed it!\" Click=\"btnPhoto_Click\"/>\n            <AppBarButton x:Name=\"btnShare\" Icon=\"ReShare\" Label=\"share\" Click=\"btnShare_Click\"/>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n          DataContext=\"{Binding Item}\" d:DataContext=\"{Binding}\">\n        <Pivot x:Uid=\"Pivot\" Title=\"CONTOSO COOKBOOK\" x:Name=\"pivot\" >\n            <!--Pivot item one-->\n            <PivotItem x:Uid=\"RecipeDetailsPivotItem\" Header=\"recipe\" >\n                <Grid x:Name=\"RecipePanel\" Grid.Row=\"1\" >\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"Auto\"/>\n                        <RowDefinition Height=\"110*\"/>\n                        <RowDefinition Height=\"155*\"/>\n                        <RowDefinition Height=\"Auto\"/>\n                    </Grid.RowDefinitions>\n                    <TextBlock Text=\"{Binding Title}\" Style=\"{ThemeResource BodyTextBlockStyle}\" \n                               Foreground=\"{StaticResource AccentBrush}\" FontSize=\"{StaticResource TextStyleExtraLargeFontSize}\" \n                               Margin=\"0,0,0,5\"/>\n                    <Image Source=\"{Binding ImagePath}\" Stretch=\"UniformToFill\" Grid.Row=\"1\"/>\n                    <ScrollViewer Grid.Row=\"2\" Margin=\"0,10\">\n                        <TextBlock x:Name=\"InstructionsTextBlock\" TextWrapping=\"WrapWholeWords\" \n                           Style=\"{StaticResource BodyTextBlockStyle}\"\n                           Text=\"{Binding Directions}\"/>\n                    </ScrollViewer>\n                    <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\" >\n                        <TextBlock Text=\"Prep time:\" Style=\"{StaticResource BodyTextBlockStyle}\"\n                           Foreground=\"{StaticResource AccentBrush}\"/>\n                        <TextBlock x:Name=\"PrepTimeTextBlock\" Text=\"{Binding PrepTime}\" Style=\"{StaticResource BodyTextBlockStyle}\" Margin=\"10,0,0,10\"/>\n                    </StackPanel>\n                </Grid>\n            </PivotItem>\n\n            <!--Pivot item two-->\n            <PivotItem x:Uid=\"RecipeIngredientsPivotItem\" Header=\"ingredients\">\n                <ListView ItemsSource=\"{Binding Ingredients}\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate>\n                            <TextBlock Text=\"{Binding Mode=OneWay}\" Style=\"{ThemeResource BodyTextBlockStyle}\"/>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                </ListView>\n            </PivotItem>\n\n            <!--Pivot item three-->\n            <PivotItem x:Name=\"PicsPivot\" Header=\"notes\">\n                <Grid>\n                    <TextBlock Text=\"No images found.\"  HorizontalAlignment=\"Center\"\n                               Visibility=\"{Binding UserImages, Converter={StaticResource ImagesDisplayConverter}}\"  VerticalAlignment=\"Center\" />\n                    <ListBox x:Name=\"listUserPictures\" ItemsSource=\"{Binding UserPhotos}\">\n                        <ListBox.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <VirtualizingStackPanel Orientation=\"Vertical\"/>\n                            </ItemsPanelTemplate>\n                        </ListBox.ItemsPanel>\n                        <ListBox.ItemTemplate>\n                            <DataTemplate>\n                                <Grid>\n                                    <Image Source=\"{Binding Image}\" Margin=\"5\"/>\n                                    <Rectangle Fill=\"#33FFFFFF\" Height=\"50\" VerticalAlignment=\"Bottom\"/>\n                                    <StackPanel Orientation=\"Horizontal\" Margin=\"5\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" >\n                                        <TextBlock Text=\"{Binding Converter={StaticResource ToStringConverter}}\" Margin=\"10,0,0,5\" Style=\"{ThemeResource HeaderTextBlockStyle}\" />\n                                    </StackPanel>\n                                </Grid>\n                            </DataTemplate>\n                        </ListBox.ItemTemplate>\n                    </ListBox>\n                </Grid>\n            </PivotItem>\n\n        </Pivot>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/RecipeDetailPage.xaml.cs",
    "content": "﻿using ContosoCookbook.Common;\nusing ContosoCookbook.DataModel;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\nusing Windows.Storage.Streams;\nusing Windows.UI.Notifications;\nusing Windows.UI.Popups;\nusing Windows.UI.StartScreen;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\n// The Pivot Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace ContosoCookbook\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class RecipeDetailPage : Page\n    {\n        private RecipeDataItem item;\n        private NavigationHelper navigationHelper;\n        private ObservableDictionary defaultViewModel = new ObservableDictionary();\n\n        /// <summary>\n        /// NavigationHelper is used on each page to aid in navigation and \n        /// process lifetime management\n        /// </summary>\n        public NavigationHelper NavigationHelper\n        {\n            get { return this.navigationHelper; }\n        }\n\n        /// <summary>\n        /// This can be changed to a strongly typed view model.\n        /// </summary>\n        public ObservableDictionary DefaultViewModel\n        {\n            get { return this.defaultViewModel; }\n        }\n\n        public RecipeDetailPage()\n        {\n            this.InitializeComponent();\n\n            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;\n\n            this.navigationHelper = new NavigationHelper(this);\n            this.navigationHelper.LoadState += navigationHelper_LoadState;\n        }\n\n        /// <summary>\n        /// Populates the page with content passed during navigation.  Any saved state is also\n        /// provided when recreating a page from a prior session.\n        /// </summary>\n        /// <param name=\"sender\">\n        /// The source of the event; typically <see cref=\"NavigationHelper\"/>\n        /// </param>\n        /// <param name=\"e\">Event data that provides both the navigation parameter passed to\n        /// <see cref=\"Frame.Navigate(Type, Object)\"/> when this page was initially requested and\n        /// a dictionary of state preserved by this page during an earlier\n        /// session.  The state will be null the first time a page is visited.</param>\n        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)\n        {\n            item = await RecipeDataSource.GetItemAsync((String)e.NavigationParameter);\n            this.DefaultViewModel[\"Group\"] = item.Group;\n            this.DefaultViewModel[\"Item\"] = item;\n\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n\n            DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested;\n        }\n\n        private async void OnShareDataRequested(DataTransferManager sender, DataRequestedEventArgs args)\n        {\n            DataRequest request = args.Request;\n            var deferral = args.Request.GetDeferral();\n\n            try\n            {\n                Uri photoFileUri = new Uri(new Uri(\"ms-appdata:///local/\"), item.UserPhotos[0].Title);\n                var photoFile = await StorageFile.GetFileFromApplicationUriAsync(photoFileUri);\n\n                request.Data.Properties.Title = \"I've been baking!\";\n                request.Data.Properties.Description = \"This was my attempt at making \" + item.ShortTitle;\n\n                // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image\n                // since the target app may only support one or the other.\n                List<IStorageItem> imageItems = new List<IStorageItem>();\n                imageItems.Add(photoFile);\n                request.Data.SetStorageItems(imageItems);\n\n                RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(photoFile);\n                // It is recommended that you always add a thumbnail image any time you're sharing an image\n                request.Data.Properties.Thumbnail = imageStreamRef;\n                request.Data.SetBitmap(imageStreamRef);\n\n                // Set Text to share for those targets that can't accept images\n                request.Data.SetText(\"I just made \" + item.ShortTitle + \" from Contoso Cookbook!\");\n            }\n            finally\n            {\n                deferral.Complete();\n            }\n        }\n\n        #region NavigationHelper registration\n\n        /// The methods provided in this section are simply used to allow\n        /// NavigationHelper to respond to the page's navigation methods.\n        /// \n        /// Page specific logic should be placed in event handlers for the  \n        /// <see cref=\"GridCS.Common.NavigationHelper.LoadState\"/>\n        /// and <see cref=\"GridCS.Common.NavigationHelper.SaveState\"/>.\n        /// The navigation parameter is available in the LoadState method \n        /// in addition to page state preserved during an earlier session.\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedTo(e);\n        }\n\n        protected override void OnNavigatedFrom(NavigationEventArgs e)\n        {\n            navigationHelper.OnNavigatedFrom(e);\n        }\n\n        #endregion\n\n        private async void btnPinToStart_Click(object sender, RoutedEventArgs e)\n        {\n            // Is recipe already pinned?\n            if (SecondaryTile.Exists(item.UniqueId))\n            {\n                var tile = new SecondaryTile(item.UniqueId);\n                await tile.RequestDeleteAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.Pin);\n            }\n            else\n            {\n                var uri = new Uri(item.TileImagePath.AbsoluteUri);\n\n                var tile = new SecondaryTile(\n                        item.UniqueId,              // Tile ID\n                        item.ShortTitle,            // Tile short name\n                        item.UniqueId,              // Activation argument\n                        uri,                        // Tile logo URI\n                        TileSize.Square150x150\n                    );\n\n                await tile.RequestCreateAsync();\n                btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin);\n            }\n        }\n\n        private async void btnReminderTimer_Click(object sender, RoutedEventArgs e)\n        {\n            var notifier = ToastNotificationManager.CreateToastNotifier();\n\n            // Make sure notifications are enabled\n            if (notifier.Setting != NotificationSetting.Enabled)\n            {\n                var dialog = new MessageDialog(\"Notifications are currently disabled\");\n                await dialog.ShowAsync();\n                return;\n            }\n\n            // Get a toast template and insert a text node containing a message\n            var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);\n            var element = template.GetElementsByTagName(\"text\")[0];\n            element.AppendChild(template.CreateTextNode(\"Reminder!\"));\n\n            // Schedule the toast to appear 30 seconds from now\n            var date = DateTimeOffset.Now.AddSeconds(30);\n            var stn = new ScheduledToastNotification(template, date);\n            notifier.AddToSchedule(stn);\n        }\n\n        private async void btnPhoto_Click(object sender, RoutedEventArgs e)\n        {\n            await PickPhotoAsync();\n        }\n\n        private async Task PickPhotoAsync()\n        {\n            FileOpenPicker openPicker = new FileOpenPicker();\n            openPicker.ViewMode = PickerViewMode.Thumbnail;\n            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;\n            openPicker.FileTypeFilter.Add(\".jpg\");\n            openPicker.FileTypeFilter.Add(\".jpeg\");\n            openPicker.FileTypeFilter.Add(\".png\");\n\n            StorageFile file = await openPicker.PickSingleFileAsync();\n\n            if (file != null)\n            {\n                var destFile = await file.CopyAsync(Windows.Storage.ApplicationData.Current.LocalFolder, file.Name, NameCollisionOption.ReplaceExisting);\n                var userPhoto = new UserPhotoDataItem() { Title = destFile.Name };\n                userPhoto.SetImage(destFile.Path);\n                item.UserPhotos.Add(userPhoto);\n            }\n        }\n\n        private void btnShare_Click(object sender, RoutedEventArgs e)\n        {\n            if (item.UserPhotos == null || item.UserPhotos.Count == 0)\n            {\n                var i = new MessageDialog(\"You must insert a picture first!\").ShowAsync();\n            }\n            else\n            {\n                DataTransferManager.ShowShareUI();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ShareContractExample/ContosoCookbook/Strings/en-US/Resources.resw",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutButton.Label\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AboutPageHeader\" xml:space=\"preserve\">\n    <value>about</value>\n  </data>\n  <data name=\"AppLimitation.Text\" xml:space=\"preserve\">\n    <value>All Rights Reserved</value>\n  </data>\n  <data name=\"AppName.Text\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"AppRights.Text\" xml:space=\"preserve\">\n    <value>Copyright © Microsoft 2014</value>\n  </data>\n  <data name=\"AppVersion.Text\" xml:space=\"preserve\">\n    <value>Version 1.0</value>\n  </data>\n  <data name=\"GroupRecipesPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipes</value>\n  </data>\n  <data name=\"Pivot.Title\" xml:space=\"preserve\">\n    <value>CONTOSO COOKBOOK</value>\n  </data>\n  <data name=\"PivotItem1.Header\" xml:space=\"preserve\">\n    <value>item1</value>\n  </data>\n  <data name=\"PivotItem2.Header\" xml:space=\"preserve\">\n    <value>item2</value>\n  </data>\n  <data name=\"PublishedByText.Text\" xml:space=\"preserve\">\n    <value>Published by:</value>\n  </data>\n  <data name=\"RecipeDetailsPivotItem.Header\" xml:space=\"preserve\">\n    <value>recipe</value>\n  </data>\n  <data name=\"RecipeIngredientsPivotItem.Header\" xml:space=\"preserve\">\n    <value>ingredients</value>\n  </data>\n  <data name=\"RegionsPageHeader\" xml:space=\"preserve\">\n    <value>regions</value>\n  </data>\n  <data name=\"VersionText.Text\" xml:space=\"preserve\">\n    <value>Version:</value>\n  </data>\n</root>"
  },
  {
    "path": "ShareContractExample/ContosoCookbook.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ContosoCookbook\", \"ContosoCookbook\\ContosoCookbook.csproj\", \"{E977916E-3C97-485A-96FC-0D214F6FC9E3}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Build.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Build.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.ActiveCfg = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Build.0 = Release|x86\n\t\t{E977916E-3C97-485A-96FC-0D214F6FC9E3}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"SimplePushDemo.App\" xmlns:common=\"using:SimplePushDemo.Common\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:local=\"using:SimplePushDemo\" RequestedTheme=\"Dark\">\n</common:BootStrapper>"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/App.xaml.cs",
    "content": "﻿using SimplePushDemo.Helpers;\nusing System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace SimplePushDemo\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override async Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n\n            var channelURI = await PushHandlingHelper.RegisterForPushAsync();\n            Debug.WriteLine(channelURI);\n        }\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace SimplePushDemo.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Helpers/PushHandlingHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Networking.PushNotifications;\n\nnamespace SimplePushDemo.Helpers\n{\n    public static class PushHandlingHelper\n    {\n        public static async Task<string> RegisterForPushAsync()\n        {\n            var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();\n            channel.PushNotificationReceived += channel_PushNotificationReceived;\n            return channel.Uri.ToString();\n        }\n\n        static void channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)\n        {\n            string result = args.NotificationType.ToString();\n            switch (args.NotificationType)\n            {\n                case PushNotificationType.Badge:\n                    result += \": \" + args.BadgeNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.Raw:\n                    result += \": \" + args.RawNotification.Content;\n                    break;\n                case PushNotificationType.Tile:\n                    result += \": \" + args.TileNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.TileFlyout:\n                    result += \": \" + args.TileNotification.Content.GetXml();\n                    break;\n                case PushNotificationType.Toast:\n                    result += \": \" + args.ToastNotification.Content.GetXml();\n                    break;\n                default:\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity \n    Name=\"Applicious.W10MVAPushDemo\" \n    Publisher=\"CN=426AFF0D-09CF-438E-8140-1F79DD469DD6\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"5f1f3aeb-a06d-44c1-8560-f7c0940287d3\" PhonePublisherId=\"426AFF0D-09CF-438E-8140-1F79DD469DD6\"/>\n\n  <Properties>\n    <DisplayName>Blank</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"Blank\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Blank\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SimplePushDemo\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SimplePushDemo\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace SimplePushDemo.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n        void OnNavigatingFrom(NavigatingCancelEventArgs args);\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace SimplePushDemo.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace SimplePushDemo.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace SimplePushDemo.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/SimplePushDemo.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E481767A-6A1F-43F9-BD06-7F86D3D215D9}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SimplePushDemp</RootNamespace>\n    <AssemblyName>SimplePushDemp</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>11389afa</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Helpers\\PushHandlingHelper.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"SimplePushDemo.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:SimplePushDemo.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"80\" />\n            <RowDefinition />\n        </Grid.RowDefinitions>\n\n        <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Top\" Margin=\"12,12,0,0\">\n            <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE76E;\" FontSize=\"40\" VerticalAlignment=\"Center\" Margin=\"0,0,20,0\" />\n            <TextBlock Style=\"{StaticResource HeaderTextBlockStyle}\" Text=\"Hello Template 10\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Margin=\"0,80,0,0\">\n            <!-- content -->\n        </Grid>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The SimplePushDemo Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace SimplePushDemo.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n</packages>"
  },
  {
    "path": "SimplePushDemo/SimplePushDemo.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SimplePushDemo\", \"SimplePushDemo\\SimplePushDemo.csproj\", \"{E481767A-6A1F-43F9-BD06-7F86D3D215D9}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.Build.0 = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.Build.0 = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.Build.0 = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.ActiveCfg = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.Build.0 = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x64.Deploy.0 = Release|x64\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.ActiveCfg = Release|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.Build.0 = Release|x86\n\t\t{E481767A-6A1F-43F9-BD06-7F86D3D215D9}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/App.xaml",
    "content": "﻿<Application\n    x:Class=\"Sample.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Sample\">\n\n</Application>\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\nusing Microsoft.ApplicationInsights;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace Sample\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public TelemetryClient TelemetryClient = new TelemetryClient();\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override async void OnLaunched(LaunchActivatedEventArgs e)\n        {\n            Window.Current.Content = new Views.Splash(e.SplashScreen);\n            await System.Threading.Tasks.Task.Delay(5000);\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"21c4a0ee-6ef0-4efe-9595-2034d65172f5\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"21c4a0ee-6ef0-4efe-9595-2034d65172f5\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>SplashScreen-Blank</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetPlatform Name=\"Windows.Universal\" MinVersion=\"10.0.10030.0\" MaxVersionTested=\"10.0.10030.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"SplashScreen_Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"SplashScreen-Blank\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"SplashScreen-Blank\"\n        ForegroundText=\"light\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SplashScreen-Blank\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SplashScreen-Blank\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/SplashScreen-Blank.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{6BC4A399-FB94-415D-A687-39DB5DE7C555}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Sample</RootNamespace>\n    <AssemblyName>Sample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10030.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SplashScreen-Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>4700190d</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Views\\Splash.xaml.cs\">\n      <DependentUpon>Splash.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Splash.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Sample.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Sample\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace Sample\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Views/Splash.xaml",
    "content": "﻿<Page\n    x:Class=\"Sample.Views.Splash\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid>\n        <Canvas HorizontalAlignment=\"Stretch\"\n                VerticalAlignment=\"Stretch\">\n            <Image x:Name=\"SplashImage\" />\n        </Canvas>\n        <ProgressRing Height=\"100\" Width=\"100\"\n                      Foreground=\"White\"\n                IsActive=\"True\" Margin=\"100\" \n                HorizontalAlignment=\"Center\"\n                VerticalAlignment=\"Bottom\" />\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/Views/Splash.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\nnamespace Sample.Views\n{\n    public sealed partial class Splash : Page\n    {\n        public Splash(Windows.ApplicationModel.Activation.SplashScreen splashScreen,\n               Nullable<Color> splashBackground = null, Uri splashImage = null)\n        {\n            this.InitializeComponent();\n\n            // defaults\n            if (splashBackground == null)\n                splashBackground = Colors.Red;\n            this.Background = new SolidColorBrush(splashBackground.Value);\n            if (splashImage == null)\n                splashImage = new Uri(\"ms-appx:///Assets/SplashScreen.png\");\n            SplashImage.ImageOpened += (s, e) => Window.Current.Activate();\n            SplashImage.ImageFailed += (s, e) => Window.Current.Activate();\n            SplashImage.Source = new BitmapImage(splashImage);\n\n            // setup resize\n            Action resize = () =>\n            {\n                SplashImage.Stretch = Stretch.Uniform;\n                SplashImage.Height = splashScreen.ImageLocation.Height;\n                SplashImage.Width = splashScreen.ImageLocation.Width;\n                var t = new TranslateTransform\n                {\n                    X = splashScreen.ImageLocation.Left,\n                    Y = splashScreen.ImageLocation.Top,\n                };\n                SplashImage.RenderTransform = t;\n            };\n\n            // init\n            Window.Current.SizeChanged += (s, e) => resize();\n            resize.Invoke();\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Blank/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/App.xaml",
    "content": "<common:BootStrapper x:Class=\"Template10.App\" xmlns:common=\"using:Template10.Common\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:local=\"using:Template10\" RequestedTheme=\"Dark\">\n</common:BootStrapper>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n            this.SplashFactory = (s) => { return new Views.Splash(s); };\n        }\n\n        public override async Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            // handle long-running tasks\n            await Task.Delay(5000);\n\n            // first screen\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"b245f87a-2b1f-461d-b8ba-a32ac75c5bcc\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"b245f87a-2b1f-461d-b8ba-a32ac75c5bcc\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>SplashScreen-Template10</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetPlatform Name=\"Windows.Universal\" MinVersion=\"10.0.10030.0\" MaxVersionTested=\"10.0.10030.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"SplashScreen_Template10.App\">\n      <uap:VisualElements\n        DisplayName=\"SplashScreen-Template10\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"SplashScreen-Template10\"\n        ForegroundText=\"light\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SplashScreen-Template10\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SplashScreen-Template10\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string OnNavigatedFrom = \"OnNavigatedFrom\";\n        private const string OnNavigatedTo = \"OnNavigatedTo\";\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext;\n                if (dataContext != null)\n                {\n                    // navigationService will not depend on Mvvm namespace\n                    var method = dataContext.GetType()\n                        .GetRuntimeMethod(OnNavigatedFrom, new[] {\n                            typeof(Dictionary<string, object>),\n                            typeof(Boolean)\n                        });\n                    if (method != null)\n                    {\n                        // TODO: get existing state\n                        method.Invoke(dataContext, new object[] { null, suspending });\n                    }\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext;\n                if (dataContext != null)\n                {\n                    // navigationService will not depend on Mvvm namespace\n                    var method = dataContext.GetType()\n                        .GetRuntimeMethod(OnNavigatedTo, new[] {\n                            typeof(string),\n                            typeof(NavigationMode),\n                            typeof(Dictionary<string, object>)\n                        });\n                    if (method != null)\n                    {\n                        // TODO: get existing state\n                        method.Invoke(dataContext, new object[] { parameter, mode, null });\n                    }\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext;\n            if (dataContext != null)\n            {\n                // navigationService will not depend on Mvvm namespace\n                var method = dataContext.GetType()\n                    .GetRuntimeMethod(OnNavigatedTo, new[] {\n                        typeof(string),\n                        typeof(NavigationMode),\n                        typeof(Dictionary<string, object>)\n                    });\n                if (method != null)\n                {\n                    // TODO: get existing state\n                    method.Invoke(dataContext, new object[] { parameter, NavigationMode.New, null });\n                }\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/SplashScreen-Template10.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E49862CD-55C0-4BE4-B6BE-CF625951E989}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10030.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SplashScreen-Template10_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>bdb4d95d</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Splash.xaml.cs\">\n      <DependentUpon>Splash.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Splash.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.14-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.13.0-build26067\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Dark\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Top\" Margin=\"12,12,0,0\">\n            <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE76E;\" FontSize=\"40\" VerticalAlignment=\"Center\" />\n            <TextBlock Style=\"{StaticResource HeaderTextBlockStyle}\" Text=\"Hello Template 10\" Margin=\"20,0\" />\n        </StackPanel>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        async void Alert(string messageId)\n        {\n            var loader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();\n            var title = loader.GetString(string.Format(\"{0}.Title\", messageId));\n            var message = loader.GetString(string.Format(\"{0}.Message\", messageId));\n            var button = loader.GetString(string.Format(\"{0}.Button\", messageId));\n            var dialog = new ContentDialog\n            {\n                Title = title,\n                Content = message,\n                PrimaryButtonText = button\n            };\n            await dialog.ShowAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Views/Splash.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.Splash\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid>\n        <Canvas HorizontalAlignment=\"Stretch\"\n                VerticalAlignment=\"Stretch\">\n            <Image x:Name=\"SplashImage\" />\n        </Canvas>\n        <ProgressRing Height=\"100\" Width=\"100\"\n                      Foreground=\"White\"\n                IsActive=\"True\" Margin=\"100\" \n                HorizontalAlignment=\"Center\"\n                VerticalAlignment=\"Bottom\" />\n    </Grid>\n\n</Page>\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/Views/Splash.xaml.cs",
    "content": "﻿using System;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\n\nnamespace Template10.Views\n{\n    public sealed partial class Splash : Page\n    {\n        public Splash(Windows.ApplicationModel.Activation.SplashScreen splashScreen,\n            Nullable<Color> splashBackground = null, Uri splashImage = null)\n        {\n            this.InitializeComponent();\n\n            // defaults\n            if (splashBackground == null)\n                splashBackground = Colors.Red;\n            this.Background = new SolidColorBrush(Colors.Red);\n            if (splashImage == null)\n                splashImage = new Uri(\"ms-appx:///Assets/SplashScreen.png\");\n            SplashImage.ImageOpened += (s, e) => Window.Current.Activate();\n            SplashImage.ImageFailed += (s, e) => Window.Current.Activate();\n            SplashImage.Source = new BitmapImage(splashImage);\n\n            // setup resize\n            Action resize = () =>\n            {\n                SplashImage.Stretch = Stretch.Uniform;\n                SplashImage.Height = splashScreen.ImageLocation.Height;\n                SplashImage.Width = splashScreen.ImageLocation.Width;\n                var t = new TranslateTransform\n                {\n                    X = splashScreen.ImageLocation.Left,\n                    Y = splashScreen.ImageLocation.Top,\n                };\n                SplashImage.RenderTransform = t;\n            };\n\n            // init\n            Window.Current.SizeChanged += (s, e) => resize();\n            resize.Invoke();\n        }\n    }\n}\n"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen-Template10/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "SplashScreen/SplashScreen/SplashScreen.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22609.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SplashScreen-Blank\", \"SplashScreen-Blank\\SplashScreen-Blank.csproj\", \"{6BC4A399-FB94-415D-A687-39DB5DE7C555}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SplashScreen-Template10\", \"SplashScreen-Template10\\SplashScreen-Template10.csproj\", \"{E49862CD-55C0-4BE4-B6BE-CF625951E989}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x64.Build.0 = Debug|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x86.Build.0 = Debug|x86\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|ARM.Build.0 = Release|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x64.ActiveCfg = Release|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x64.Build.0 = Release|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x64.Deploy.0 = Release|x64\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x86.ActiveCfg = Release|x86\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x86.Build.0 = Release|x86\n\t\t{6BC4A399-FB94-415D-A687-39DB5DE7C555}.Release|x86.Deploy.0 = Release|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x64.Build.0 = Debug|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x86.Build.0 = Debug|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|ARM.Build.0 = Release|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x64.ActiveCfg = Release|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x64.Build.0 = Release|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x64.Deploy.0 = Release|x64\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x86.ActiveCfg = Release|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x86.Build.0 = Release|x86\n\t\t{E49862CD-55C0-4BE4-B6BE-CF625951E989}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/App.xaml",
    "content": "﻿<Application\n    x:Class=\"Template10.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10\">\n\n</Application>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace Template10\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n                // Set the default language\n                rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n            }\n\n            // Place the frame in the current Window\n            Window.Current.Content = new Views.Shell(rootFrame);\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(Views.MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"5185c7f1-6a59-4b99-9c4c-7697bc3f8a2d\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"5185c7f1-6a59-4b99-9c4c-7697bc3f8a2d\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>SplitView-Blank</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetPlatform Name=\"Windows.Universal\" MinVersion=\"10.0.10030.0\" MaxVersionTested=\"10.0.10030.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"SplitView_Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"SplitView-Blank\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"SplitView-Blank\"\n        ForegroundText=\"light\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SplitView-Blank\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SplitView-Blank\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/SplitView-Blank.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{5A224EF4-815B-4205-8BB9-6837B122DBE6}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Sample</RootNamespace>\n    <AssemblyName>Sample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SplitView-Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>a68394ff</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Views\\AboutPage.xaml.cs\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\PrivacyPage.xaml.cs\">\n      <DependentUpon>PrivacyPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPage.xaml.cs\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Shell.xaml.cs\">\n      <DependentUpon>Shell.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"SplitView-Blank_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"..\\SplitView-Template10\\Styles\\SplitViewStyles.xaml\">\n      <Link>Styles\\SplitViewStyles.xaml</Link>\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\AboutPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\PrivacyPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\SettingsPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Shell.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n  </Target>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/AboutPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"About\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/AboutPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class AboutPage : Page\n    {\n        public AboutPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"80\" />\n            <RowDefinition />\n        </Grid.RowDefinitions>\n        \n        <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Top\" Margin=\"12,12,0,0\">\n            <FontIcon FontFamily=\"Segoe MDL2 Assets\" Glyph=\"&#xE76E;\" FontSize=\"40\" VerticalAlignment=\"Center\" Margin=\"0,0,20,0\" />\n            <TextBlock Style=\"{StaticResource HeaderTextBlockStyle}\" Text=\"Hello XAML-SplitView\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Margin=\"0,80,0,0\">\n            <!-- content -->\n            <Button VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Click=\"GotoAbout\">About</Button>\n        </Grid>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/MainPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private void GotoAbout(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            this.Frame.Navigate(typeof(Views.AboutPage));\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/PrivacyPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.PrivacyPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"Privacy\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/PrivacyPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class PrivacyPage : Page\n    {\n        public PrivacyPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/SettingsPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.SettingsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"Settings\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/SettingsPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class SettingsPage : Page\n    {\n        public SettingsPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/Shell.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.Shell\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:views=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\" RequestedTheme=\"Dark\">\n\n    <Page.Resources>\n\n        <ResourceDictionary>\n\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"../Styles/SplitViewStyles.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n\n            <Style TargetType=\"TextBlock\" BasedOn=\"{StaticResource SplitViewTextBlockStyle}\" />\n            <Style TargetType=\"RadioButton\" BasedOn=\"{StaticResource SplitViewRadioButtonStyle}\" />\n\n        </ResourceDictionary>\n\n    </Page.Resources>\n\n    <SplitView x:Name=\"ShellSplitView\">\n        <SplitView.Pane>\n            <Grid>\n\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <ScrollViewer Grid.Row=\"0\" HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Auto\">\n                    <StackPanel>\n\n                        <!-- back -->\n                        <RadioButton Checked=\"DontCheck\" Command=\"{Binding BackCommand}\"  Background=\"{StaticResource SystemControlBackgroundAccentBrush}\">\n                            <RadioButton.Tag>\n                                <TextBlock Text=\"\" FontSize=\"{StaticResource SplitViewLargeNavFontSize}\" />\n                            </RadioButton.Tag>\n                        </RadioButton>\n\n                        <!-- hamburger -->\n                        <RadioButton Checked=\"DontCheck\" Command=\"{Binding MenuCommand}\">\n                            <RadioButton.Tag>\n                                <TextBlock Text=\"\" FontSize=\"{StaticResource SplitViewLargeNavFontSize}\" />\n                            </RadioButton.Tag>\n                        </RadioButton>\n\n                    </StackPanel>\n                </ScrollViewer>\n\n                <StackPanel x:Name=\"RadioButtonContainer\" Grid.Row=\"1\">\n\n                    <!-- home -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Home\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:MainPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                    <!-- privacy -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Privacy\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:PrivacyPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                    <!-- about -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"About\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:AboutPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                </StackPanel>\n\n                <StackPanel Grid.Row=\"2\">\n\n                    <!-- settings -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Settings\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:SettingsPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                </StackPanel>\n\n            </Grid>\n        </SplitView.Pane>\n    </SplitView>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Blank/Views/Shell.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Views\n{\n    public sealed partial class Shell : Page\n    {\n        private Frame contentFrame;\n\n        public Shell(Frame frame)\n        {\n            this.contentFrame = frame;\n            this.InitializeComponent();\n            this.ShellSplitView.Content = frame;\n            var update = new Action(() =>\n            {\n                // update radiobuttons after frame navigates\n                var type = frame.CurrentSourcePageType;\n                foreach (var radioButton in AllRadioButtons(this))\n                {\n                    var target = radioButton.CommandParameter as NavType;\n                    if (target == null)\n                        continue;\n                    radioButton.IsChecked = target.Type.Equals(type);\n                }\n                this.ShellSplitView.IsPaneOpen = false;\n                this.BackCommand.RaiseCanExecuteChanged();\n            });\n            frame.Navigated += (s, e) => update();\n            this.Loaded += (s, e) => update();\n            this.DataContext = this;\n        }\n\n        // back\n        Mvvm.Command _backCommand;\n        public Mvvm.Command BackCommand { get { return _backCommand ?? (_backCommand = new Mvvm.Command(ExecuteBack, CanBack)); } }\n        private bool CanBack()\n        {\n            return this.contentFrame.CanGoBack;\n        }\n        private void ExecuteBack()\n        {\n            this.contentFrame.GoBack();\n        }\n\n        // menu\n        Mvvm.Command _menuCommand;\n        public Mvvm.Command MenuCommand { get { return _menuCommand ?? (_menuCommand = new Mvvm.Command(ExecuteMenu)); } }\n        private void ExecuteMenu()\n        {\n            this.ShellSplitView.IsPaneOpen = !this.ShellSplitView.IsPaneOpen;\n        }\n\n        // nav\n        Mvvm.Command<NavType> _navCommand;\n\n        public Mvvm.Command<NavType> NavCommand { get { return _navCommand ?? (_navCommand = new Mvvm.Command<NavType>(ExecuteNav)); } }\n        private void ExecuteNav(NavType navType)\n        {\n            var type = navType.Type;\n\n            this.contentFrame.Navigate(navType.Type);\n            // when we nav home, clear history\n            if (type.Equals(typeof(Views.MainPage)))\n            {\n                this.contentFrame.BackStack.Clear();\n                if(this.BackCommand != null)\n                {\n                    this.BackCommand.RaiseCanExecuteChanged();\n                }\n            }\n        }\n\n        // utility\n        public List<RadioButton> AllRadioButtons(DependencyObject parent)\n        {\n            var list = new List<RadioButton>();\n            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)\n            {\n                var child = VisualTreeHelper.GetChild(parent, i);\n                if (child is RadioButton)\n                {\n                    list.Add(child as RadioButton);\n                    continue;\n                }\n                list.AddRange(AllRadioButtons(child));\n            }\n            return list;\n        }\n\n        // prevent check\n        private void DontCheck(object s, RoutedEventArgs e)\n        {\n            // don't let the radiobutton check\n            (s as RadioButton).IsChecked = false;\n        }\n    }\n\n    public class NavType\n    {\n        public Type Type { get; set; }\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"Template10.App\" xmlns:common=\"using:Template10.Common\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:local=\"using:Template10\"            >\n</common:BootStrapper>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\n\nnamespace Template10\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnInitializeAsync()\n        {\n            // use splitview shell\n            Window.Current.Content = new Views.Shell(this.RootFrame);\n            return base.OnInitializeAsync();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\" schemaVersion=\"2014-05-30\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppSessionInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.StoreAppUserInitializer, Microsoft.ApplicationInsights\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Core;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnStartAsync is required, and second in the pipeline\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<HandledEventArgs> BackRequested;\n        public event EventHandler<HandledEventArgs> ForwardRequested;\n\n        public BootStrapper()\n        {\n            Resuming += (s, e) => { OnResuming(s, e); };\n            Suspending += async (s, e) =>\n            {\n                // one, global deferral\n                var deferral = e.SuspendingOperation.GetDeferral();\n                try\n                {\n                    // date the cache\n                    NavigationService.State().Values[CacheKey] = DateTime.Now.ToString();\n                    // call view model suspend (OnNavigatedfrom)\n                    await NavigationService.SuspendingAsync();\n                    // call system-level suspend\n                    await OnSuspendingAsync(s, e);\n                }\n                finally { deferral.Complete(); }\n            };\n        }\n\n        protected override void OnWindowCreated(WindowCreatedEventArgs args)\n        {\n            this._dispatcher = args.Window.Dispatcher;\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n        public TimeSpan CacheMaxDuration { get; set; } = TimeSpan.MaxValue;\n        private const string CacheKey = \"Setting-Cache-Date\";\n\n        private CoreDispatcher _dispatcher;\n        public async void Dispatch(Action action)\n        {\n            if (_dispatcher.HasThreadAccess) { action(); }\n            else { await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => action()); }\n        }\n\n        #endregion\n\n        #region activated\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await OnStartAsync(StartKind.Activate, e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (SplashFactory != null)\n            {\n                splashScreen = SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            // setup frame\n            RootFrame = RootFrame ?? new Frame();\n            RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            NavigationService = new Services.NavigationService.NavigationService(RootFrame);\n\n            // expire state\n            var state = NavigationService.State();\n            if (state.Values.ContainsKey(CacheKey))\n            {\n                DateTime cacheDate;\n                if (DateTime.TryParse(state.Values[CacheKey]?.ToString(), out cacheDate))\n                {\n                    var cacheAge = DateTime.Now.Subtract(cacheDate);\n                    if (cacheAge >= CacheMaxDuration)\n                    {\n                        ClearState();\n                    }\n                }\n            }\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n            switch (e.PreviousExecutionState)\n            {\n                case ApplicationExecutionState.NotRunning:\n                case ApplicationExecutionState.Running:\n                case ApplicationExecutionState.Suspended:\n                    {\n                        // launch if not restored\n                        await OnStartAsync(StartKind.Launch, e);\n                        break;\n                    }\n                case ApplicationExecutionState.ClosedByUser:\n                case ApplicationExecutionState.Terminated:\n                    {\n                        // restore if you need to/can do\n                        var restored = NavigationService.RestoreSavedNavigation();\n                        if (!restored)\n                        {\n                            await OnStartAsync(StartKind.Launch, e);\n                        }\n                        break;\n                    }\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = RootFrame;\n            }\n\n            // ensure active\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += (s, args) =>\n            {\n                args.Handled = true;\n                RaiseBackRequested();\n            };\n\n            // Hook up keyboard and mouse Back handler\n            var keyboard = new Services.KeyboardService.KeyboardService();\n            keyboard.AfterBackGesture = () => RaiseBackRequested();\n\n            // Hook up keyboard and house Forward handler\n            keyboard.AfterForwardGesture = () => RaiseForwardRequested();\n        }\n\n        private void ClearState()\n        {\n            var state = NavigationService.State();\n            foreach (var item in state.Containers)\n            {\n                state.DeleteContainer(item.Key);\n            }\n            state.Values.Clear();\n        }\n\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void RaiseBackRequested()\n        {\n            var args = new HandledEventArgs();\n            BackRequested?.Invoke(this, args);\n\n            if (!args.Handled)\n            {\n                NavigationService.GoBack();\n                args.Handled = true;\n            }\n        }\n\n        private void RaiseForwardRequested()\n        {\n            var args = new HandledEventArgs();\n            ForwardRequested?.Invoke(this, args);\n\n            if (!args.Handled)\n            {\n                NavigationService.GoForward();\n                args.Handled = true;\n            }\n        }\n\n        #region overrides\n\n        public enum StartKind { Launch, Activate }\n        public abstract Task OnStartAsync(StartKind startKind, IActivatedEventArgs args);\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n        public virtual void OnResuming(object s, object e) { }\n\n        #endregion\n\n        public class HandledEventArgs : EventArgs { public System.Boolean Handled { get; set; } }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409\n\nnamespace Template10\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Template10.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n                return;\n            (App.Current as Common.BootStrapper).Dispatch(() =>\n            {\n                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n            });\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Mvvm/Command.cs",
    "content": "﻿using System;\n\nnamespace Template10.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute, Func<bool> canexecute = null)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canexecute ?? (() => true);\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try { return _canExecute(); }\n            catch { return false; }\n        }\n\n        public void Execute(object p)\n        {\n            if (!CanExecute(p))\n                return;\n            try { _execute(); }\n            catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> _execute;\n        private readonly Func<T, bool> _canExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute, Func<T, bool> canexecute = null)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canexecute ?? (e => true);\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return _canExecute == null ? true : _canExecute(_Value);\n            }\n            catch { return false; }\n        }\n\n        public void Execute(object p)\n        {\n            if (!CanExecute(p))\n                return;\n            var _Value = (T)Convert.ChangeType(p, typeof(T));\n            _execute(_Value);\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Template10.Services.NavigationService;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public ViewModelBase()\n        {\n            if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                this.Dispatch = (App.Current as Common.BootStrapper).Dispatch;\n                this.NavigationService = (App.Current as Common.BootStrapper).NavigationService;\n            }\n        }\n        public Action<Action> Dispatch { get; private set; }\n        public NavigationService NavigationService { get; private set; }\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state) { /* nothing by default */ }\n        public virtual Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending) { return Task.FromResult<object>(null); }\n        public virtual void OnNavigatingFrom(Services.NavigationService.NavigatingEventArgs args) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3eb3d7b2-70a8-4235-8448-ed631d081541\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3eb3d7b2-70a8-4235-8448-ed631d081541\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>SplitView-Template10</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetPlatform Name=\"Windows.Universal\" MinVersion=\"10.0.10030.0\" MaxVersionTested=\"10.0.10030.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"SplitView_Template10.App\">\n      <uap:VisualElements\n        DisplayName=\"SplitView-Template10\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"SplitView-Template10\"\n        ForegroundText=\"light\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SplitView-Template10\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SplitView-Template10\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/KeyboardService/KeyboardEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.System;\nusing Windows.UI.Core;\n\nnamespace Template10.Services.KeyboardService\n{\n    public class KeyboardEventArgs : EventArgs\n    {\n        public bool AltKey { get; set; }\n        public bool ControlKey { get; set; }\n        public bool ShiftKey { get; set; }\n        public VirtualKey VirtualKey { get; set; }\n        public AcceleratorKeyEventArgs EventArgs { get; set; }\n        public char? Character { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/KeyboardService/KeyboardHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\n\nnamespace Template10.Services.KeyboardService\n{\n    public class KeyboardHelper\n    {\n        public KeyboardHelper()\n        {\n            Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += CoreDispatcher_AcceleratorKeyActivated;\n            Window.Current.CoreWindow.PointerPressed += CoreWindow_PointerPressed;\n        }\n\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs e)\n        {\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown))\n            {\n                var coreWindow = Windows.UI.Xaml.Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                var virtualKey = e.VirtualKey;\n                bool winKey = ((coreWindow.GetKeyState(VirtualKey.LeftWindows) & downState) == downState || (coreWindow.GetKeyState(VirtualKey.RightWindows) & downState) == downState);\n                bool altKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n\n                // raise keydown actions\n                var keyDown = new KeyboardEventArgs\n                {\n                    AltKey = altKey,\n                    Character = ToChar(virtualKey, shiftKey),\n                    ControlKey = controlKey,\n                    EventArgs = e,\n                    ShiftKey = shiftKey,\n                    VirtualKey = virtualKey\n                };\n\n                try { KeyDown?.Invoke(keyDown); }\n                catch { }\n\n                // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n                // are pressed\n                if (virtualKey == VirtualKey.Left\n                    || virtualKey == VirtualKey.Right\n                    || (int)virtualKey == 166\n                    || (int)virtualKey == 167\n                    || (int)virtualKey == 69)\n                {\n                    bool noModifiers = !altKey && !controlKey && !shiftKey;\n                    bool onlyAlt = altKey && !controlKey && !shiftKey;\n\n                    if (((int)virtualKey == 166 && noModifiers)\n                        || (virtualKey == VirtualKey.Left && onlyAlt))\n                    {\n                        // When the previous key or Alt+Left are pressed navigate back\n                        e.Handled = true;\n                        RaiseGoBackGestured();\n                    }\n                    else if (virtualKey == VirtualKey.Back && winKey)\n                    {\n                        // When the next key or Win+Backspace are pressed navigate backward\n                        e.Handled = true;\n                        RaiseGoBackGestured();\n                    }\n                    else if (((int)virtualKey == 167 && noModifiers) || (virtualKey == VirtualKey.Right && onlyAlt))\n                    {\n                        // When the next key or Alt+Right are pressed navigate forward\n                        e.Handled = true;\n                        RaiseGoForwardGestured();\n                    }\n                    else if (((int)virtualKey == 69 && controlKey))\n                    {\n                        // when control-E\n                        e.Handled = true;\n                        RaiseControlEGestured();\n                    }\n                }\n            }\n        }\n\n        public Action<KeyboardEventArgs> KeyDown { get; set; }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender, PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed)\n                return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) RaiseGoBackGestured();\n                if (forwardPressed) RaiseGoForwardGestured();\n            }\n        }\n\n        public Action GoForwardGestured { get; set; }\n        protected void RaiseGoForwardGestured()\n        {\n            try { GoForwardGestured?.Invoke(); }\n            catch { }\n        }\n\n        public Action GoBackGestured { get; set; }\n        protected void RaiseGoBackGestured()\n        {\n            try { GoBackGestured?.Invoke(); }\n            catch { }\n        }\n\n        public Action ControlEGestured { get; set; }\n        protected void RaiseControlEGestured()\n        {\n            try { ControlEGestured?.Invoke(); }\n            catch { }\n        }\n\n        private static char? ToChar(VirtualKey key, bool shift)\n        {\n            // convert virtual key to char\n            if (32 == (int)key)\n                return ' ';\n\n            VirtualKey search;\n\n            // look for simple letter\n            foreach (var letter in \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\")\n            {\n                if (Enum.TryParse<VirtualKey>(letter.ToString(), out search) && search.Equals(key))\n                    return (shift) ? letter : letter.ToString().ToLower()[0];\n            }\n\n            // look for simple number\n            foreach (var number in \"1234567890\")\n            {\n                if (Enum.TryParse<VirtualKey>(\"Number\" + number.ToString(), out search) && search.Equals(key))\n                    return number;\n            }\n\n            // not found\n            return null;\n        }\n    }\n\n    enum VKeyClass_EnUs\n    {\n        Control, // 0-31, 33-47, 91-95, 144-165\n        Character, // 32, 48-90\n        NumPad, // 96-111\n        Function // 112 - 135\n    }\n\n    public enum VKeyCharacterClass\n    {\n        Space,\n        Numeric,\n        Alphabetic\n    }\n\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/KeyboardService/KeyboardService.cs",
    "content": "﻿using System;\n\nnamespace Template10.Services.KeyboardService\n{\n    public class KeyboardService\n    {\n        KeyboardHelper _helper;\n\n        public KeyboardService()\n        {\n            _helper = new KeyboardHelper();\n            _helper.GoBackGestured = () => { AfterBackGesture?.Invoke(); };\n            _helper.GoForwardGestured = () => { AfterForwardGesture?.Invoke(); };\n        }\n\n        public Action AfterBackGesture { get; set; }\n        public Action AfterForwardGesture { get; set; }\n    }\n\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/FrameFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class FrameFacade\n    {\n        public FrameFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigatedEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = CurrentPageType;\n            var param = CurrentPageParam;\n            _frame.BackStack.Remove(_frame.BackStack.Last());\n            Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigatedEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigatedEventArgs> Navigated\n        {\n            add\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                    return;\n                _navigatedEventHandlers.Add(value);\n                if (_navigatedEventHandlers.Count == 1)\n                    _frame.Navigated += FacadeNavigatedEventHandler;\n            }\n\n            remove\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                    return;\n                _navigatedEventHandlers.Remove(value);\n                if (_navigatedEventHandlers.Count == 0)\n                    _frame.Navigated -= FacadeNavigatedEventHandler;\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            var args = new NavigatedEventArgs(e);\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                handler(this, args);\n            }\n            CurrentPageType = e.SourcePageType;\n            CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler<NavigatingEventArgs>> _navigatingEventHandlers = new List<EventHandler<NavigatingEventArgs>>();\n        public event EventHandler<NavigatingEventArgs> Navigating\n        {\n            add\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                    return;\n                _navigatingEventHandlers.Add(value);\n                if (_navigatingEventHandlers.Count == 1)\n                    _frame.Navigating += FacadeNavigatingCancelEventHandler;\n            }\n            remove\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                    return;\n                _navigatingEventHandlers.Remove(value);\n                if (_navigatingEventHandlers.Count == 0)\n                    _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            var args = new NavigatingEventArgs(e);\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, args);\n            }\n            e.Cancel = args.Cancel;\n        }\n    }\n\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n        void OnNavigatingFrom(NavigatingCancelEventArgs args);\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/NavigatedEventArgs.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigatedEventArgs : EventArgs\n    {\n        public NavigatedEventArgs() { }\n        public NavigatedEventArgs(NavigationEventArgs e)\n        {\n            this.PageType = e.SourcePageType;\n            this.Parameter = e.Parameter?.ToString();\n            this.NavigationMode = e.NavigationMode;\n        }\n        public NavigationMode NavigationMode { get; set; }\n        public Type PageType { get; set; }\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/NavigatingEventArgs.cs",
    "content": "﻿using Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigatingEventArgs: NavigatedEventArgs\n    {\n        public NavigatingEventArgs() { }\n        public NavigatingEventArgs(NavigatingCancelEventArgs e)\n        {\n            this.NavigationMode = e.NavigationMode;\n            this.PageType = e.SourcePageType;\n            this.Parameter = e.Parameter?.ToString();\n        }\n        public bool Cancel { get; set; } = false;\n        public bool Suspending { get; set; } = false;\n    }\n}"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly FrameFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; }\n        string LastNavigationType { get; set; }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new FrameFacade(frame);\n            _frame.Navigating += async (s, e) =>\n            {\n                if (e.Suspending)\n                    return;\n\n                // allow the viewmodel to cancel navigation\n                e.Cancel = !NavigatingFrom(false);\n                if (!e.Cancel)\n                {\n                    await NavigateFromAsync(false);\n                }\n            };\n            _frame.Navigated += (s, e) =>\n            {\n                NavigateTo(e.NavigationMode, e.Parameter);\n            };\n        }\n\n        public Windows.Storage.ApplicationDataContainer State()\n        {\n            var data = Windows.Storage.ApplicationData.Current;\n            var app = data.LocalSettings.CreateContainer(\"PageState\", Windows.Storage.ApplicationDataCreateDisposition.Always);\n            return app;\n        }\n\n        public IPropertySet State(Type type)\n        {\n            var key = string.Format(\"{0}\", type);\n            var container = State().CreateContainer(key, Windows.Storage.ApplicationDataCreateDisposition.Always);\n            return container.Values;\n        }\n\n        bool NavigatingFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    var args = new NavigatingEventArgs\n                    {\n                        PageType = _frame.CurrentPageType,\n                        Parameter = _frame.CurrentPageParam,\n                        Suspending = suspending,\n                    };\n                    dataContext.OnNavigatingFrom(args);\n                    return !args.Cancel;\n                }\n            }\n            return true;\n        }\n\n        async Task NavigateFromAsync(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedFromAsync(State(CurrentPageType), suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // clear state\n                var state = State();\n                foreach (var container in state.Containers)\n                {\n                    state.DeleteContainer(container.Key);\n                }\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    var state = State(page.GetType());\n                    dataContext.OnNavigatedTo(parameter, mode, state);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void SaveNavigation()\n        {\n            var state = State(GetType());\n            state[\"CurrentPageType\"] = CurrentPageType.ToString();\n            state[\"CurrentPageParam\"] = CurrentPageParam;\n            state[\"NavigateState\"] = _frame.GetNavigationState();\n        }\n\n        public bool RestoreSavedNavigation()\n        {\n            try\n            {\n                var state = State(GetType());\n                _frame.CurrentPageType = Type.GetType(state[\"CurrentPageType\"].ToString());\n                _frame.CurrentPageParam = state[\"CurrentPageParam\"]?.ToString();\n                _frame.SetNavigationState(state[\"NavigateState\"].ToString());\n                NavigateTo(NavigationMode.Refresh, _frame.CurrentPageParam);\n                return true;\n            }\n            catch { return false; }\n        }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Resuming() { /* nothing */ }\n\n        public async Task SuspendingAsync()\n        {\n            SaveNavigation();\n            await NavigateFromAsync(true);\n        }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/SplitView-Template10.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>SplitView-Template10_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>652eab7c</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"Views\\AboutPage.xaml.cs\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\PrivacyPage.xaml.cs\">\n      <DependentUpon>PrivacyPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPage.xaml.cs\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Shell.xaml.cs\">\n      <DependentUpon>Shell.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"SplitView-Template10_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Styles\\SplitViewStyles.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\AboutPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\PrivacyPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\SettingsPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\Shell.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n  </Target>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Styles/SplitViewStyles.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n\n    <!-- design reference http://osguni/?id=19359&Background=19361 -->\n    \n    <!-- temporary solution until generic.xaml is updated -->\n    <!--<Color x:Key=\"SystemListAccentLowColor\">#FF004780</Color>\n    <Color x:Key=\"SystemListAccentMediumColor\">#FF005FAB</Color>\n    <Color x:Key=\"SystemListAccentHighColor\">#FF006BC0</Color>-->\n\n    <SolidColorBrush x:Key=\"SplitViewBackgroundBrush\" Color=\"{ThemeResource SystemBaseMediumColor}\" Opacity=\"1\" />\n    <SolidColorBrush x:Key=\"SplitViewForegroundBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <SolidColorBrush x:Key=\"NavButtonPressedBackgroundBrush\" Color=\"{ThemeResource SystemListMediumColor}\" />\n    <SolidColorBrush x:Key=\"NavButtonHoverBackgroundBrush\" Color=\"{ThemeResource SystemListLowColor}\" />\n    <SolidColorBrush x:Key=\"NavButtonCheckedBackgroundBrush\" Color=\"{ThemeResource SystemListAccentLowColor}\" />\n    <SolidColorBrush x:Key=\"NavButtonCheckedPressedBackgroundBrush\" Color=\"{ThemeResource SystemListAccentMediumColor}\" />\n    <SolidColorBrush x:Key=\"NavButtonCheckedHoverBackgroundBrush\" Color=\"{ThemeResource SystemListAccentHighColor}\" />\n    \n    <x:Double x:Key=\"SplitViewNormalNavFontSize\">16</x:Double>\n    <x:Double x:Key=\"SplitViewLargeNavFontSize\">20</x:Double>\n    <x:Double x:Key=\"SplitViewBackButtonHeight\">32</x:Double>\n    <x:String x:Key=\"BackButtonText\"></x:String>\n    <x:String x:Key=\"ForwardButtonText\"></x:String>\n    <x:String x:Key=\"MenuButtonText\"></x:String>\n\n    <Style TargetType=\"SplitView\">\n        <Setter Property=\"IsPaneOpen\" Value=\"False\" />\n        <Setter Property=\"OpenPaneLength\" Value=\"320\" />\n        <Setter Property=\"CompactPaneLength\" Value=\"48\" />\n        <Setter Property=\"PaneBackground\" Value=\"{ThemeResource SplitViewBackgroundBrush}\" />\n        <Setter Property=\"DisplayMode\" Value=\"CompactOverlay\" />\n        <Setter Property=\"RequestedTheme\" Value=\"Dark\" />\n    </Style>\n\n    <Style TargetType=\"TextBlock\" x:Key=\"SplitViewTextBlockStyle\">\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Center\" />\n        <Setter Property=\"FontFamily\" Value=\"Segoe MDL2 Assets\" />\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource SplitViewNormalNavFontSize}\" />\n    </Style>\n\n    <Style TargetType=\"RadioButton\" x:Key=\"SplitViewRadioButtonStyle\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SplitViewForegroundBrush}\" />\n        <Setter Property=\"Padding\" Value=\"1,4,0,0\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"RadioButton\">\n                    <Border Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CommonStates\">\n                                <VisualState x:Name=\"Normal\" />\n                                <VisualState x:Name=\"PointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"HoverBackground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"CheckedHoverBackground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Pressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"PressedBackground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"CheckedPressedBackground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Disabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NixonGlyph\" Storyboard.TargetProperty=\"Foreground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource RadioButtonContentDisabledForegroundThemeBrush}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource RadioButtonContentDisabledForegroundThemeBrush}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"CheckStates\">\n                                <VisualState x:Name=\"Checked\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"CheckedBackground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Unchecked\" />\n                                <VisualState x:Name=\"Indeterminate\" />\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"FocusStates\">\n                                <VisualState x:Name=\"Focused\">\n                                    <Storyboard>\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualWhite\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualBlack\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Unfocused\" />\n                                <VisualState x:Name=\"PointerFocused\" />\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Grid>\n\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"48\" />\n                            </Grid.RowDefinitions>\n\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"48\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"20\" />\n                            </Grid.ColumnDefinitions>\n\n                            <Grid.Resources>\n                                <Style TargetType=\"Rectangle\" x:Name=\"FocusVisual\">\n                                    <Setter Property=\"Opacity\" Value=\"0\" />\n                                    <Setter Property=\"StrokeDashArray\" Value=\"1,1\" />\n                                    <Setter Property=\"StrokeEndLineCap\" Value=\"Square\" />\n                                </Style>\n                            </Grid.Resources>\n\n                            <!-- background -->\n\n                            <Grid x:Name=\"NotCheckedBackground\" Grid.ColumnSpan=\"4\">\n                                <Rectangle x:Name=\"PressedBackground\" Visibility=\"Collapsed\" Fill=\"{StaticResource NavButtonPressedBackgroundBrush}\"/>\n                                <Rectangle x:Name=\"HoverBackground\" Visibility=\"Collapsed\" Fill=\"{StaticResource NavButtonHoverBackgroundBrush}\"/>\n                            </Grid>\n                            <Grid x:Name=\"CheckedBackground\" Grid.ColumnSpan=\"4\" Visibility=\"Collapsed\" Background=\"{StaticResource NavButtonCheckedBackgroundBrush}\">\n                                <Rectangle x:Name=\"CheckedPressedBackground\" Visibility=\"Collapsed\" Fill=\"{StaticResource NavButtonCheckedPressedBackgroundBrush}\"/>\n                                <Rectangle x:Name=\"CheckedHoverBackground\" Visibility=\"Collapsed\" Fill=\"{StaticResource NavButtonCheckedHoverBackgroundBrush}\"/>\n                            </Grid>\n\n                            <!-- focus -->\n                            <Rectangle x:Name=\"FocusVisualWhite\" Stroke=\"{ThemeResource FocusVisualWhiteStrokeThemeBrush}\" StrokeDashOffset=\"1.5\" Style=\"{StaticResource FocusVisual}\" />\n                            <Rectangle x:Name=\"FocusVisualBlack\" Stroke=\"{ThemeResource FocusVisualBlackStrokeThemeBrush}\" StrokeDashOffset=\"0.5\" Style=\"{StaticResource FocusVisual}\" />\n\n                            <!-- glyph -->\n                            <ContentPresenter x:Name=\"NixonGlyph\" Content=\"{TemplateBinding Tag}\" />\n\n                            <!-- text -->\n                            <ContentPresenter x:Name=\"ContentPresenter\"\n                        \t\t\tGrid.Column=\"1\"\n                        \t\t\tMargin=\"{TemplateBinding Padding}\"\n                        \t\t\tHorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                        \t\t\tVerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                        \t\t\tAutomationProperties.AccessibilityView=\"Raw\"\n                        \t\t\tContent=\"{TemplateBinding Content}\"\n                        \t\t\tContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                        \t\t\tContentTransitions=\"{TemplateBinding ContentTransitions}\" />\n                        </Grid>\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/AboutPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"About\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/AboutPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class AboutPage : Page\n    {\n        public AboutPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"Hello Template 10\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Header=\"SplitView Sample\">\n            <DataTemplate>\n                \n                <!-- content -->\n                <Button VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Click=\"GotoAbout\">Go to About</Button>\n            \n            </DataTemplate>\n        </HubSection>\n\n    </Hub>\n    \n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/MainPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private void GotoAbout(object sender, Windows.UI.Xaml.RoutedEventArgs e)\n        {\n            (App.Current as Common.BootStrapper).NavigationService.Navigate(typeof(Views.AboutPage));\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/PrivacyPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.PrivacyPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"Privacy\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/PrivacyPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class PrivacyPage : Page\n    {\n        public PrivacyPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/SettingsPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.SettingsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"Settings\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"550\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\">\n            <DataTemplate>\n                <TextBlock TextWrapping=\"WrapWholeWords\" FontSize=\"16\">\n                    <Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum lectus arcu, vitae tristique nulla suscipit sit amet. Suspendisse eu sem eros. Nulla ullamcorper dui volutpat nisi interdum, quis pellentesque nibh vestibulum. Aenean eu erat venenatis, dapibus velit maximus, tristique lorem. Integer mauris metus, tempor quis ullamcorper lacinia, eleifend ut mi. Etiam venenatis, magna ut hendrerit ultricies, nisi dui porttitor tellus, pellentesque pulvinar felis dolor consectetur ante. Nullam elementum dictum rhoncus. Maecenas quis leo at nunc aliquam feugiat nec at lectus. Aenean in augue eu orci suscipit porta. Fusce egestas, justo in placerat molestie, sem ligula pellentesque nisi, ut interdum ex mauris ac nunc. Sed neque felis, rutrum eget venenatis et, porta quis urna. In sollicitudin viverra dictum.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Nulla vitae mollis orci, eget facilisis velit. Donec congue neque et libero ullamcorper dapibus. Maecenas consequat ultricies enim ac posuere. Sed faucibus libero ac lobortis dapibus. Fusce massa lorem, tempor a arcu vel, posuere venenatis felis. Nulla id mattis nisl. Donec commodo, elit at bibendum ultrices, mi mi hendrerit dui, nec facilisis velit enim sit amet lorem. Nunc vitae nisi eu ante efficitur porta. Donec tempor mi non lacus rhoncus, quis rhoncus sapien hendrerit. Pellentesque eros felis, suscipit pellentesque venenatis vel, faucibus vel diam. Aliquam et enim lobortis, porta risus in, tincidunt mi. Sed id erat blandit, feugiat leo sit amet, interdum ipsum. Morbi consectetur eget tortor cursus aliquet. Donec augue nisl, ornare eget tincidunt vel, consectetur eget neque.</Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Ut lobortis consequat nisi, sollicitudin rhoncus ante scelerisque ac. In condimentum tortor sed nunc convallis, id ornare est bibendum. Curabitur id libero lorem. Nunc non aliquam ipsum, eu semper tortor. Pellentesque sagittis ante a turpis mollis, quis accumsan odio aliquet. Donec condimentum diam sapien, ut malesuada libero facilisis sit amet. Nullam felis dui, hendrerit ac odio nec, pulvinar molestie sem. Integer eget consectetur justo. Proin eu pellentesque dolor. Duis lacinia velit consectetur lectus pharetra porta. Fusce cursus dui ut porttitor rhoncus. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Sed nec varius elit. Ut ut lectus nec sapien pellentesque interdum. Pellentesque cursus magna in eros tristique, in viverra dolor fermentum. Mauris volutpat urna nec nibh sollicitudin, non pellentesque est rhoncus. Pellentesque elementum, purus feugiat mollis finibus, tortor orci sagittis dui, a pulvinar eros lectus quis ipsum. Fusce rhoncus molestie diam, sit amet luctus lacus tincidunt eu. Cras eros elit, bibendum nec nisi et, egestas pharetra mauris. Nam consequat, dui vitae ultrices pulvinar, est enim tristique ipsum, maximus iaculis odio ligula vel purus. Maecenas quis congue lectus. Sed consectetur dignissim ipsum non gravida. Ut ut tristique sapien. Fusce at vehicula mauris. Fusce blandit, libero et maximus congue, nisl dolor ultrices lectus, sed semper turpis massa id augue. </Run>\n                    <LineBreak />\n                    <LineBreak />\n                    <Run>Suspendisse fermentum magna est, sit amet euismod ex gravida at. Praesent imperdiet laoreet massa, quis fermentum sem venenatis eget. Nullam ac justo id ex accumsan volutpat ut eu sem. Mauris mattis libero vitae magna tristique consectetur. Pellentesque consequat est ac erat facilisis fermentum. Aenean magna nisi, dapibus eu scelerisque vitae, commodo et metus. Fusce nisl nibh, pharetra a facilisis imperdiet, commodo eget sem. Morbi iaculis lacus a enim ullamcorper, ut condimentum justo ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce lobortis sodales augue, a ullamcorper eros. Quisque dapibus elit quis erat eleifend, et hendrerit justo eleifend. Mauris dapibus, quam a ornare facilisis, felis tellus ultrices nunc, ut venenatis est risus a nisi. Donec sed vestibulum velit, id viverra erat. Praesent dolor metus, lobortis et velit eu, sagittis tempor ex. Nullam tempus mattis lacus ut sollicitudin. Pellentesque sapien augue, ultrices feugiat erat vel, fermentum vulputate purus.</Run>\n                </TextBlock>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/SettingsPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Template10.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class SettingsPage : Page\n    {\n        public SettingsPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/Shell.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.Shell\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:views=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n\n        <ResourceDictionary>\n\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"../Styles/SplitViewStyles.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n\n            <Style TargetType=\"TextBlock\" BasedOn=\"{StaticResource SplitViewTextBlockStyle}\" />\n            <Style TargetType=\"RadioButton\" BasedOn=\"{StaticResource SplitViewRadioButtonStyle}\" />\n\n        </ResourceDictionary>\n\n    </Page.Resources>\n\n    <SplitView x:Name=\"ShellSplitView\">\n        <SplitView.Pane>\n            <Grid Background=\"{StaticResource SplitViewBackgroundBrush}\">\n\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <ScrollViewer Grid.Row=\"0\" HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Auto\">\n                    <StackPanel>\n\n                        <!-- back -->\n                        <RadioButton Checked=\"DontCheck\" Command=\"{Binding BackCommand}\"  Background=\"{StaticResource SystemControlBackgroundAccentBrush}\">\n                            <RadioButton.Tag>\n                                <TextBlock Text=\"{StaticResource BackButtonText}\" FontSize=\"{StaticResource SplitViewLargeNavFontSize}\" />\n                            </RadioButton.Tag>\n                        </RadioButton>\n\n                        <!-- hamburger -->\n                        <RadioButton Checked=\"DontCheck\" Command=\"{Binding MenuCommand}\">\n                            <RadioButton.Tag>\n                                <TextBlock Text=\"{StaticResource MenuButtonText}\" FontSize=\"{StaticResource SplitViewLargeNavFontSize}\" />\n                            </RadioButton.Tag>\n                        </RadioButton>\n\n                    </StackPanel>\n                </ScrollViewer>\n\n                <StackPanel x:Name=\"RadioButtonContainer\" Grid.Row=\"1\">\n\n                    <!-- home -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Home\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:MainPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                    <!-- privacy -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Privacy\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:PrivacyPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                    <!-- about -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"About\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:AboutPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                </StackPanel>\n\n                <StackPanel Grid.Row=\"2\">\n\n                    <!-- settings -->\n                    <RadioButton Command=\"{Binding NavCommand}\" Content=\"Settings\" GroupName=\"Nav\">\n                        <RadioButton.CommandParameter>\n                            <views:NavType Type=\"views:SettingsPage\" />\n                        </RadioButton.CommandParameter>\n                        <RadioButton.Tag>\n                            <TextBlock Text=\"\" />\n                        </RadioButton.Tag>\n                    </RadioButton>\n\n                </StackPanel>\n\n            </Grid>\n        </SplitView.Pane>\n    </SplitView>\n\n</Page>\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/Views/Shell.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Views\n{\n    public sealed partial class Shell : Page\n    {\n        public Shell(Frame frame)\n        {\n            this.InitializeComponent();\n            this.ShellSplitView.Content = frame;\n            var update = new Action(() =>\n            {\n                // update radiobuttons after frame navigates\n                var type = frame.CurrentSourcePageType;\n                foreach (var radioButton in AllRadioButtons(this))\n                {\n                    var target = radioButton.CommandParameter as NavType;\n                    if (target == null)\n                        continue;\n                    radioButton.IsChecked = target.Type.Equals(type);\n                }\n                this.ShellSplitView.IsPaneOpen = false;\n                this.BackCommand.RaiseCanExecuteChanged();\n            });\n            frame.Navigated += (s, e) => update();\n            this.Loaded += (s, e) => update();\n            this.DataContext = this;\n        }\n\n        // back\n        Mvvm.Command _backCommand;\n        public Mvvm.Command BackCommand { get { return _backCommand ?? (_backCommand = new Mvvm.Command(ExecuteBack, CanBack)); } }\n        private bool CanBack()\n        {\n            var nav = (App.Current as App).NavigationService;\n            return nav.CanGoBack;\n        }\n        private void ExecuteBack()\n        {\n            var nav = (App.Current as App).NavigationService;\n            nav.GoBack();\n        }\n\n        // menu\n        Mvvm.Command _menuCommand;\n        public Mvvm.Command MenuCommand { get { return _menuCommand ?? (_menuCommand = new Mvvm.Command(ExecuteMenu)); } }\n        private void ExecuteMenu()\n        {\n            this.ShellSplitView.IsPaneOpen = !this.ShellSplitView.IsPaneOpen;\n        }\n\n        // nav\n        Mvvm.Command<NavType> _navCommand;\n        public Mvvm.Command<NavType> NavCommand { get { return _navCommand ?? (_navCommand = new Mvvm.Command<NavType>(ExecuteNav)); } }\n        private void ExecuteNav(NavType navType)\n        {\n            var type = navType.Type;\n            var nav = (App.Current as App).NavigationService;\n\n            // when we nav home, clear history\n            if (type.Equals(typeof(Views.MainPage)))\n                nav.ClearHistory();\n\n            // navigate only to new pages\n            if (nav.CurrentPageType != null && nav.CurrentPageType != type)\n                nav.Navigate(type, navType.Parameter);\n        }\n\n        // utility\n        public List<RadioButton> AllRadioButtons(DependencyObject parent)\n        {\n            var list = new List<RadioButton>();\n            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)\n            {\n                var child = VisualTreeHelper.GetChild(parent, i);\n                if (child is RadioButton)\n                {\n                    list.Add(child as RadioButton);\n                    continue;\n                }\n                list.AddRange(AllRadioButtons(child));\n            }\n            return list;\n        }\n\n        // prevent check\n        private void DontCheck(object s, RoutedEventArgs e)\n        {\n            // don't let the radiobutton check\n            (s as RadioButton).IsChecked = false;\n        }\n    }\n\n    public class NavType\n    {\n        public Type Type { get; set; }\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SplitView/SplitView/SplitView-Template10/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"CommonServiceLocator\" version=\"1.3\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.RuntimeTelemetry\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.ApplicationInsights.WindowsStore\" version=\"0.13.0-build26067\" targetFramework=\"win81\" />\n  <package id=\"Microsoft.Diagnostics.Tracing.EventSource.Redist\" version=\"1.1.14-beta\" targetFramework=\"win81\" />\n  <package id=\"MvvmLightLibs\" version=\"5.1.1.0\" targetFramework=\"win81\" />\n</packages>"
  },
  {
    "path": "SplitView/SplitView.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22609.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SplitView-Blank\", \"SplitView\\SplitView-Blank\\SplitView-Blank.csproj\", \"{5A224EF4-815B-4205-8BB9-6837B122DBE6}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SplitView-Template10\", \"SplitView\\SplitView-Template10\\SplitView-Template10.csproj\", \"{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x64.Build.0 = Debug|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x86.Build.0 = Debug|x86\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|ARM.Build.0 = Release|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x64.ActiveCfg = Release|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x64.Build.0 = Release|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x64.Deploy.0 = Release|x64\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x86.ActiveCfg = Release|x86\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x86.Build.0 = Release|x86\n\t\t{5A224EF4-815B-4205-8BB9-6837B122DBE6}.Release|x86.Deploy.0 = Release|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x64.Build.0 = Debug|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x86.Build.0 = Debug|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|ARM.Build.0 = Release|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x64.ActiveCfg = Release|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x64.Build.0 = Release|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x64.Deploy.0 = Release|x64\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x86.ActiveCfg = Release|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x86.Build.0 = Release|x86\n\t\t{5D1C9F3A-9FF4-4687-A8DC-18D9769F7194}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "SuspendResume/Blank1/App.xaml",
    "content": "﻿<common:BootStrapper \n    x:Class=\"Blank1.App\" \n    xmlns:common=\"using:Blank1.Common\" \n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n    xmlns:local=\"using:Blank1\">\n\n    <common:BootStrapper.Resources>\n        <ResourceDictionary />\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "SuspendResume/Blank1/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Blank1.Common;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Blank1\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App()\n        {\n            InitializeComponent();\n        }\n\n        public override Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)\n        {\n            NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Blank1.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{E8C68256-1D7B-4432-9733-3300C405244F}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Blank1</RootNamespace>\n    <AssemblyName>Blank</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Services\\KeyboardService\\KeyboardEventArgs.cs\" />\n    <Compile Include=\"Services\\KeyboardService\\KeyboardHelper.cs\" />\n    <Compile Include=\"Services\\KeyboardService\\KeyboardService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigatingEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigatedEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\FrameFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\DetailsPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"Views\\DetailsPage.xaml.cs\">\n      <DependentUpon>DetailsPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"Blank_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Views\\DetailsPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"Models\\\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n  </Target>\n</Project>"
  },
  {
    "path": "SuspendResume/Blank1/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Core;\n\nnamespace Blank1.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnStartAsync is required, and second in the pipeline\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<HandledEventArgs> BackRequested;\n        public event EventHandler<HandledEventArgs> ForwardRequested;\n\n        public BootStrapper()\n        {\n            Resuming += (s, e) => { OnResuming(s, e); };\n            Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                try\n                {\n                    await NavigationService.SuspendingAsync();\n                    await OnSuspendingAsync(s, e);\n                }\n                finally { deferral.Complete(); }\n            };\n\n            // enable thread dispatch\n            var dispatcher = Window.Current.Dispatcher;\n            Dispatch = async action =>\n            {\n                if (dispatcher.HasThreadAccess) { action(); }\n                else { await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => action()); }\n            };\n        }\n\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Action<Action> Dispatch { get; private set; }\n        public bool EnableRestoreNavigationState { get; set; } = true;\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await OnStartAsync(StartKind.Activate, e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        [Obsolete(\"Use OnStartAsync()\")]\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (SplashFactory != null)\n            {\n                splashScreen = SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            RootFrame = RootFrame ?? new Frame();\n            RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            NavigationService = new Services.NavigationService.NavigationService(RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n            switch (e.PreviousExecutionState)\n            {\n                case ApplicationExecutionState.NotRunning:\n                case ApplicationExecutionState.Running:\n                case ApplicationExecutionState.Suspended:\n                    {\n                        // launch if not restored\n                        await OnStartAsync(StartKind.Launch, e);\n                        break;\n                    }\n                case ApplicationExecutionState.Terminated:\n                case ApplicationExecutionState.ClosedByUser:\n                    {\n                        if (EnableRestoreNavigationState)\n                        {\n                            // restore if you need to/can do\n                            var restored = NavigationService.RestoreSavedNavigation();\n                            if (!restored)\n                                await OnStartAsync(StartKind.Launch, e);\n                        }\n                        else\n                        {\n                            await OnStartAsync(StartKind.Launch, e);\n                        }\n                        break;\n                    }\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = RootFrame;\n            }\n\n            // ensure active\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += (s, args) =>\n            {\n                args.Handled = true;\n                OnBackRequested();\n            };\n\n            // Hook up keyboard and mouse Back handler\n            var keyboard = new Services.KeyboardService.KeyboardService();\n            keyboard.AfterBackGesture = () => OnBackRequested();\n\n            // Hook up keyboard and house Forward handler\n            keyboard.AfterForwardGesture = () => OnForwardRequested();\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested()\n        {\n            var args = new HandledEventArgs();\n            BackRequested?.Invoke(this, args);\n\n            if (!args.Handled)\n            {\n                NavigationService.GoBack();\n                args.Handled = true;\n            }\n        }\n\n        private void OnForwardRequested()\n        {\n            var args = new HandledEventArgs();\n            ForwardRequested?.Invoke(this, args);\n\n            if (!args.Handled)\n            {\n                NavigationService.GoForward();\n                args.Handled = true;\n            }\n        }\n\n        #region overrides\n\n        public enum StartKind { Launch, Activate }\n        public abstract Task OnStartAsync(StartKind startKind, IActivatedEventArgs args);\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n        public virtual void OnResuming(object s, object e) { }\n\n        #endregion\n\n        public class HandledEventArgs : EventArgs { public System.Boolean Handled { get; set; } }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Blank1.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Mvvm/Command.cs",
    "content": "﻿using System;\n\nnamespace Blank1.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action _execute;\n        private readonly Func<bool> _canExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute, Func<bool> canexecute = null)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canexecute ?? (() => true);\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try { return _canExecute(); }\n            catch { return false; }\n        }\n\n        public void Execute(object p)\n        {\n            if (!CanExecute(p))\n                return;\n            try { _execute(); }\n            catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> _execute;\n        private readonly Func<T, bool> _canExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute, Func<T, bool> canexecute = null)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            _execute = execute;\n            _canExecute = canexecute ?? (e => true);\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return _canExecute == null ? true : _canExecute(_Value);\n            }\n            catch { return false; }\n        }\n\n        public void Execute(object p)\n        {\n            if (!CanExecute(p))\n                return;\n            var _Value = (T)Convert.ChangeType(p, typeof(T));\n            _execute(_Value);\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Mvvm/ViewModelBase.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state) { /* nothing by default */ }\n        public virtual Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending) { return Task.FromResult<object>(null); }\n        public virtual void OnNavigatingFrom(Services.NavigationService.NavigatingEventArgs args) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "SuspendResume/Blank1/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"4a242f60-f709-4ae6-9032-0afe709f69c7\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"4a242f60-f709-4ae6-9032-0afe709f69c7\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>Blank</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"Blank\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"Blank\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "SuspendResume/Blank1/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Blank1\")]\n[assembly: AssemblyDescription(\"Template 10\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Blank1\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "SuspendResume/Blank1/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "SuspendResume/Blank1/Services/KeyboardService/KeyboardEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.System;\nusing Windows.UI.Core;\n\nnamespace Blank1.Services.KeyboardService\n{\n    public class KeyboardEventArgs : EventArgs\n    {\n        public bool AltKey { get; set; }\n        public bool ControlKey { get; set; }\n        public bool ShiftKey { get; set; }\n        public VirtualKey VirtualKey { get; set; }\n        public AcceleratorKeyEventArgs EventArgs { get; set; }\n        public char? Character { get; set; }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/KeyboardService/KeyboardHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.System;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml;\n\nnamespace Blank1.Services.KeyboardService\n{\n    public class KeyboardHelper\n    {\n        public KeyboardHelper()\n        {\n            Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += CoreDispatcher_AcceleratorKeyActivated;\n            Window.Current.CoreWindow.PointerPressed += CoreWindow_PointerPressed;\n        }\n\n        private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs e)\n        {\n            if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||\n                e.EventType == CoreAcceleratorKeyEventType.KeyDown))\n            {\n                var coreWindow = Windows.UI.Xaml.Window.Current.CoreWindow;\n                var downState = CoreVirtualKeyStates.Down;\n                var virtualKey = e.VirtualKey;\n                bool winKey = ((coreWindow.GetKeyState(VirtualKey.LeftWindows) & downState) == downState || (coreWindow.GetKeyState(VirtualKey.RightWindows) & downState) == downState);\n                bool altKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;\n                bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;\n                bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;\n\n                // raise keydown actions\n                var keyDown = new KeyboardEventArgs\n                {\n                    AltKey = altKey,\n                    Character = ToChar(virtualKey, shiftKey),\n                    ControlKey = controlKey,\n                    EventArgs = e,\n                    ShiftKey = shiftKey,\n                    VirtualKey = virtualKey\n                };\n\n                try { KeyDown?.Invoke(keyDown); }\n                catch { }\n\n                // Only investigate further when Left, Right, or the dedicated Previous or Next keys\n                // are pressed\n                if (virtualKey == VirtualKey.Left\n                    || virtualKey == VirtualKey.Right\n                    || (int)virtualKey == 166\n                    || (int)virtualKey == 167\n                    || (int)virtualKey == 69)\n                {\n                    bool noModifiers = !altKey && !controlKey && !shiftKey;\n                    bool onlyAlt = altKey && !controlKey && !shiftKey;\n\n                    if (((int)virtualKey == 166 && noModifiers)\n                        || (virtualKey == VirtualKey.Left && onlyAlt))\n                    {\n                        // When the previous key or Alt+Left are pressed navigate back\n                        e.Handled = true;\n                        RaiseGoBackGestured();\n                    }\n                    else if (virtualKey == VirtualKey.Back && winKey)\n                    {\n                        // When the next key or Win+Backspace are pressed navigate backward\n                        e.Handled = true;\n                        RaiseGoBackGestured();\n                    }\n                    else if (((int)virtualKey == 167 && noModifiers) || (virtualKey == VirtualKey.Right && onlyAlt))\n                    {\n                        // When the next key or Alt+Right are pressed navigate forward\n                        e.Handled = true;\n                        RaiseGoForwardGestured();\n                    }\n                    else if (((int)virtualKey == 69 && controlKey))\n                    {\n                        // when control-E\n                        e.Handled = true;\n                        RaiseControlEGestured();\n                    }\n                }\n            }\n        }\n\n        public Action<KeyboardEventArgs> KeyDown { get; set; }\n\n        /// <summary>\n        /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this\n        /// page is active and occupies the entire window.  Used to detect browser-style next and\n        /// previous mouse button clicks to navigate between pages.\n        /// </summary>\n        /// <param name=\"sender\">Instance that triggered the event.</param>\n        /// <param name=\"e\">Event data describing the conditions that led to the event.</param>\n        private void CoreWindow_PointerPressed(CoreWindow sender, PointerEventArgs e)\n        {\n            var properties = e.CurrentPoint.Properties;\n\n            // Ignore button chords with the left, right, and middle buttons\n            if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||\n                properties.IsMiddleButtonPressed)\n                return;\n\n            // If back or foward are pressed (but not both) navigate appropriately\n            bool backPressed = properties.IsXButton1Pressed;\n            bool forwardPressed = properties.IsXButton2Pressed;\n            if (backPressed ^ forwardPressed)\n            {\n                e.Handled = true;\n                if (backPressed) RaiseGoBackGestured();\n                if (forwardPressed) RaiseGoForwardGestured();\n            }\n        }\n\n        public Action GoForwardGestured { get; set; }\n        protected void RaiseGoForwardGestured()\n        {\n            try { GoForwardGestured?.Invoke(); }\n            catch { }\n        }\n\n        public Action GoBackGestured { get; set; }\n        protected void RaiseGoBackGestured()\n        {\n            try { GoBackGestured?.Invoke(); }\n            catch { }\n        }\n\n        public Action ControlEGestured { get; set; }\n        protected void RaiseControlEGestured()\n        {\n            try { ControlEGestured?.Invoke(); }\n            catch { }\n        }\n\n        private static char? ToChar(VirtualKey key, bool shift)\n        {\n            // convert virtual key to char\n            if (32 == (int)key)\n                return ' ';\n\n            VirtualKey search;\n\n            // look for simple letter\n            foreach (var letter in \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\")\n            {\n                if (Enum.TryParse<VirtualKey>(letter.ToString(), out search) && search.Equals(key))\n                    return (shift) ? letter : letter.ToString().ToLower()[0];\n            }\n\n            // look for simple number\n            foreach (var number in \"1234567890\")\n            {\n                if (Enum.TryParse<VirtualKey>(\"Number\" + number.ToString(), out search) && search.Equals(key))\n                    return number;\n            }\n\n            // not found\n            return null;\n        }\n    }\n\n    enum VKeyClass_EnUs\n    {\n        Control, // 0-31, 33-47, 91-95, 144-165\n        Character, // 32, 48-90\n        NumPad, // 96-111\n        Function // 112 - 135\n    }\n\n    public enum VKeyCharacterClass\n    {\n        Space,\n        Numeric,\n        Alphabetic\n    }\n\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/KeyboardService/KeyboardService.cs",
    "content": "﻿using System;\n\nnamespace Blank1.Services.KeyboardService\n{\n    public class KeyboardService\n    {\n        KeyboardHelper _helper;\n\n        public KeyboardService()\n        {\n            _helper = new KeyboardHelper();\n            _helper.GoBackGestured = () => { AfterBackGesture?.Invoke(); };\n            _helper.GoForwardGestured = () => { AfterForwardGesture?.Invoke(); };\n        }\n\n        public Action AfterBackGesture { get; set; }\n        public Action AfterForwardGesture { get; set; }\n    }\n\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/NavigationService/FrameFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Services.NavigationService\n{\n    public class FrameFacade\n    {\n        public FrameFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigatedEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = CurrentPageType;\n            var param = CurrentPageParam;\n            _frame.BackStack.Remove(_frame.BackStack.Last());\n            Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigatedEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigatedEventArgs> Navigated\n        {\n            add\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                    return;\n                _navigatedEventHandlers.Add(value);\n                if (_navigatedEventHandlers.Count == 1)\n                    _frame.Navigated += FacadeNavigatedEventHandler;\n            }\n\n            remove\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                    return;\n                _navigatedEventHandlers.Remove(value);\n                if (_navigatedEventHandlers.Count == 0)\n                    _frame.Navigated -= FacadeNavigatedEventHandler;\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            var args = new NavigatedEventArgs(e);\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                handler(this, args);\n            }\n            CurrentPageType = e.SourcePageType;\n            CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler<NavigatingEventArgs>> _navigatingEventHandlers = new List<EventHandler<NavigatingEventArgs>>();\n        public event EventHandler<NavigatingEventArgs> Navigating\n        {\n            add\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                    return;\n                _navigatingEventHandlers.Add(value);\n                if (_navigatingEventHandlers.Count == 1)\n                    _frame.Navigating += FacadeNavigatingCancelEventHandler;\n            }\n            remove\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                    return;\n                _navigatingEventHandlers.Remove(value);\n                if (_navigatingEventHandlers.Count == 0)\n                    _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            var args = new NavigatingEventArgs(e);\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, args);\n            }\n            e.Cancel = args.Cancel;\n        }\n    }\n\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state);\n        Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending);\n        void OnNavigatingFrom(Services.NavigationService.NavigatingEventArgs args);\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/NavigationService/NavigatedEventArgs.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Services.NavigationService\n{\n    public class NavigatedEventArgs : EventArgs\n    {\n        public NavigatedEventArgs() { }\n        public NavigatedEventArgs(NavigationEventArgs e)\n        {\n            this.PageType = e.SourcePageType;\n            this.Parameter = e.Parameter?.ToString();\n            this.NavigationMode = e.NavigationMode;\n        }\n        public NavigationMode NavigationMode { get; set; }\n        public Type PageType { get; set; }\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Services/NavigationService/NavigatingEventArgs.cs",
    "content": "﻿using Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Services.NavigationService\n{\n    public class NavigatingEventArgs : NavigatedEventArgs\n    {\n        public NavigatingEventArgs() { }\n        public NavigatingEventArgs(NavigatingCancelEventArgs e)\n        {\n            this.NavigationMode = e.NavigationMode;\n            this.PageType = e.SourcePageType;\n            this.Parameter = e.Parameter?.ToString();\n        }\n        public bool Cancel { get; set; } = false;\n        public bool Suspending { get; set; } = false;\n    }\n}"
  },
  {
    "path": "SuspendResume/Blank1/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly FrameFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; }\n        string LastNavigationType { get; set; }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new FrameFacade(frame);\n            _frame.Navigating += async (s, e) =>\n            {\n                if (e.Suspending)\n                    return;\n\n                // allow the viewmodel to cancel navigation\n                e.Cancel = !NavigatingFrom(false);\n                if (!e.Cancel)\n                {\n                    await NavigateFromAsync(false);\n                }\n            };\n            _frame.Navigated += (s, e) =>\n            {\n                NavigateTo(e.NavigationMode, e.Parameter);\n            };\n        }\n\n        public Windows.Storage.ApplicationDataContainer State()\n        {\n            var data = Windows.Storage.ApplicationData.Current;\n            var app = data.LocalSettings.CreateContainer(\"PageState\", Windows.Storage.ApplicationDataCreateDisposition.Always);\n            return app;\n        }\n\n        public IPropertySet State(Type type)\n        {\n            var key = string.Format(\"{0}\", type);\n            var container = State().CreateContainer(key, Windows.Storage.ApplicationDataCreateDisposition.Always);\n            return container.Values;\n        }\n\n        bool NavigatingFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    var args = new NavigatingEventArgs\n                    {\n                        PageType = _frame.CurrentPageType,\n                        Parameter = _frame.CurrentPageParam,\n                        Suspending = suspending,\n                    };\n                    dataContext.OnNavigatingFrom(args);\n                    return !args.Cancel;\n                }\n            }\n            return true;\n        }\n\n        async Task NavigateFromAsync(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedFromAsync(State(CurrentPageType), suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // clear state\n                var state = State();\n                foreach (var container in state.Containers)\n                {\n                    state.DeleteContainer(container.Key);\n                }\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    var state = State(page.GetType());\n                    dataContext.OnNavigatedTo(parameter, mode, state);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void SaveNavigation()\n        {\n            var state = State(GetType());\n            state[\"CurrentPageType\"] = CurrentPageType.ToString();\n            state[\"CurrentPageParam\"] = CurrentPageParam;\n            state[\"NavigateState\"] = _frame.GetNavigationState();\n        }\n\n        public bool RestoreSavedNavigation()\n        {\n            try\n            {\n                var state = State(GetType());\n                _frame.CurrentPageType = Type.GetType(state[\"CurrentPageType\"].ToString());\n                _frame.CurrentPageParam = state[\"CurrentPageParam\"]?.ToString();\n                _frame.SetNavigationState(state[\"NavigateState\"].ToString());\n                NavigateTo(NavigationMode.Refresh, _frame.CurrentPageParam);\n                return true;\n            }\n            catch { return false; }\n        }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Resuming() { /* nothing */ }\n\n        public async Task SuspendingAsync()\n        {\n            SaveNavigation();\n            await NavigateFromAsync(true);\n        }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "SuspendResume/Blank1/ViewModels/DetailsPageViewModel.cs",
    "content": "﻿using Blank1.Mvvm;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Blank1.ViewModels\n{\n    class DetailsPageViewModel : ViewModelBase\n    {\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, IDictionary<string, object> state)\n        {\n            try\n            {\n                FirstName = state[\"FirstName\"]?.ToString();\n                LastName = state[\"LastName\"]?.ToString();\n                Email = state[\"Email\"]?.ToString();\n            }\n            finally { state.Clear(); }\n        }\n\n        public override Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending)\n        {\n            if (suspending)\n            {\n                state[\"FirstName\"] = FirstName;\n                state[\"LastName\"] = LastName;\n                state[\"Email\"] = Email;\n            }\n            return base.OnNavigatedFromAsync(state, suspending);\n        }\n\n        private string _FirstName = default(string);\n        public string FirstName { get { return _FirstName; } set { Set(ref _FirstName, value); } }\n\n        private string _LastName = default(string);\n        public string LastName { get { return _LastName; } set { Set(ref _LastName, value); } }\n\n        private string _Email = default(string);\n        public string Email { get { return _Email; } set { Set(ref _Email, value); } }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/ViewModels/MainPageViewModel.cs",
    "content": "﻿namespace Blank1.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        private string _Value = \"Hello Template 10\";\n        public string Value { get { return _Value; } set { Set(ref _Value, value); } }\n\n        public void Goto2()\n        {\n            var nav = (App.Current as Common.BootStrapper).NavigationService;\n            nav.Navigate(typeof(Views.DetailsPage));\n        }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Views/DetailsPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Blank1.Views.DetailsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Blank1.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Blank1.ViewModels\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:DetailsPageViewModel FirstName=\"Default Value\" />\n    </Page.DataContext>\n    \n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Hub Header=\"Details\" />\n        <StackPanel VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" Margin=\"12,64,0,0\">\n            <TextBox Header=\"First Name\" Text=\"{Binding FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Width=\"200\" />\n            <TextBox Header=\"Last Name\" Text=\"{Binding LastName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Width=\"200\" />\n            <TextBox Header=\"Email\" Text=\"{Binding Email, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Width=\"200\" />\n            <Button Margin=\"0,12\">Submit</Button>\n        </StackPanel>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SuspendResume/Blank1/Views/DetailsPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Blank1.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class DetailsPage : Page\n    {\n        public DetailsPage()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "SuspendResume/Blank1/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Blank1.Views.MainPage\"\n    xmlns:local=\"using:Blank1.Views\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Blank1.ViewModels\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n\n        <!-- content -->\n        <Button VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" Margin=\"12\" Click=\"{x:Bind ViewModel.Goto2}\">Go to page 2</Button>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "SuspendResume/Blank1/Views/MainPage.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace Blank1.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            InitializeComponent();\n            this.DataContextChanged += (s, e) => ViewModel = DataContext as ViewModels.MainPageViewModel;\n        }\n\n        // strongly-typed view models enable x:bind\n        public ViewModels.MainPageViewModel ViewModel { get; set; }\n    }\n}"
  },
  {
    "path": "SuspendResume/Blank1/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n</packages>"
  },
  {
    "path": "SuspendResume/SuspendResume.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Blank1\", \"Blank1\\Blank1.csproj\", \"{E8C68256-1D7B-4432-9733-3300C405244F}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x64.Build.0 = Debug|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x86.Build.0 = Debug|x86\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|ARM.Build.0 = Release|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x64.ActiveCfg = Release|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x64.Build.0 = Release|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x64.Deploy.0 = Release|x64\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x86.ActiveCfg = Release|x86\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x86.Build.0 = Release|x86\n\t\t{E8C68256-1D7B-4432-9733-3300C405244F}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"TODOFileHandlingSample.App\" xmlns:common=\"using:TODOFileHandlingSample.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:TODOFileHandlingSample.Converters\"\n                     xmlns:local=\"using:TODOFileHandlingSample\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOFileHandlingSample\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n\n        protected async override Task OnSuspendingAsync(object s, SuspendingEventArgs e)\n        {\n            // Dirty hack until I can figure out how to fix OnNavigatedFrom behaviour\n            var deferral = e.SuspendingOperation.GetDeferral();\n            // Give enough time for the file storage to work when app is suspending\n            await Task.Delay(500);\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOFileHandlingSample.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODOFileHandlingSample: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Converters/Converters.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Converters folder</h1>\n                <ul>Value Converters are used in XAML data binding to change the output of a property to a more-desiarable string.</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Converter?</h2>\n                <p>\n                    In XAML data binding, the default presentation of a property's value is the result of its [ToString] method.\n                    Since, in .Net, every [class] inherits from [object] and since [object] ensures the [ToString] method,\n                    it is the only reliable default XAML could use to present a value. In effect, XAML is using a default, built-in\n                    Value Converter unless it is provided an alternate, custom Value Converter.\n                </p>\n                <p>\n                    Sometimes a developer or designer wants a property's value presented in a way different than the default.\n                    For example, in the case of a DateTime property the default format is \"4/22/2015 4:09:39 PM\". This\n                    format may be accurate, but it is not friendly. What you might want is \"April 22, 2015\". To accomplish\n                    this format in C#, you could use <span style=\"font-family: 'Courier New';\">DateTime.ToString(\"m\");</span>.\n                    To accomplish it in XAML you use a Value Converter with the same C# logic inside.\n                </p>\n                <h2>IValueConverter</h2>\n                <p>\n                    A XAML Value Converter is just a C# class. It must implment [IValueConverter], which may be found in the\n                    [Windows.UI.Xaml.Data] namespace. This interface requires the [Convert] and the [ConvertBack] methods,\n                    though most converters do not implement the [ConvertBack] method. This is generally because they are\n                    [readonly] operations; the [ConvertBack] method is only used when writing back to a property which is\n                    an uncommon scenario for a value converter.\n                </p>\n                <p>\n                    When XAML binds a property, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Apply the default Value Converter</li>\n                        <li>Present the result</li>\n                    </ol>\n                    With a Custom Value Converter, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Pass the property value through the Custom Value Converter's [Convert] method</li>\n                        <li>Present the result</li>\n                    </ol>\n                    This ability to inject into the presentation pipeline gives the developer\n                    considerable control over the presentation of data.\n                </p>\n                <h2>Performance Caveat</h2>\n                <p>\n                    Value Converters, like any executing code, have a cost to process. As a result, it is generally not recommended\n                    to use Custom Value Converters in repeating data, especially when the quantity of data is quite high. The reason\n                    for this is that the Value Converter has to be instantiated for each item and creates a binding performance penalty.\n                </p>\n                <p>\n                    Sometimes a value in repeating data needs to be converted before it is displayed. If this is the case, creating\n                    a new property in the [Model] that handles the formatting is far more cost effective than using a Value Converter.\n                    For example, you might have the property <span style=\"font-family: 'Courier New';\">DateTime DueDate</span> but\n                    will also create a companion, [readonly] property called <span style=\"font-family: 'Courier New';\"> String DueDateFormatted</span>.\n                    The C# syntax is nearly the same as the Value Converter. The developer simply trades the reusability\n                    and declarability of a Value Converter for improved (or maintained) performance.\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOFileHandlingSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOFileHandlingSample.Converters] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>DateTimeFormatConverter.cs</b></li>\n                </ol>\n                <p>\n                    [DateTimeFormatConverter] is a one-way converter that takes a [DateTime] value and applies the\n                    format string supplied in the [CommandParameter] argument. The incoming value must be\n                    a [DateTime] and cannot be a [DateTime?].\n                </p>\n                <ul>\n                    Format string <a href=\"https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx\" target=\"_blank\">reference</a>.\n                </ul>\n                <ol start=\"2\">\n                    <li><b>StateToStringConverter.cs</b></li>\n                </ol>\n                <p>\n                    Unique to this application is the States ENUM (defined in /Models/States.cs) that represents\n                    the current state of a TodoItem (defined in /Models/TodoItem.cs). One possible state, for example is\n                    NotStarted. Notice how it has no space. The [StateToStringConverter] is a one-way converter that\n                    takes a [State] value and returns a custom string, like \"Not Started\".\n                </p>\n                <ul>\n                    Note: this converter does not apply localization the returned string. It is hard coded.\n                </ul>\n                <ol start=\"3\">\n                    <li><b>ValueWhenConverter.cs</b></li>\n                </ol>\n                <p>\n                    The [ValueWhenConverter] is a powerful, reusable converter. It is a one-way converter that\n                    accepts some variable value, testing it against its own [When] property using the [Equals]\n                    method (which is defined on every object in .Net). If [Equals] returns true, it returns\n                    its own [When] property. If it returns false, it returns its own [Otherwise] property.\n                </p>\n                <p>\n                    Because the developer can define [Value], [When], and [Otherwise] this converter can be reused\n                    to meet the requirements of several common (90%) scenarios such as \"VisibleWhenFalse\" or \n                    \"VisibleWhenZero\" or any other values that can be declared in XAML. As a result, the\n                    [ValueWhenConverter] can resude the number of unique converters in a project. That being said,\n                    it cannot meet every need and custom converters may still be necessary. \n                </p>\n                Sample syntax\n<pre>\n&lt;c:valuewhenconverter \n        x:name=\"VisibleWhenZeroConverter\"&gt;\n\n    &lt;c:valuewhenconverter.when&gt;\n        &lt;x:int32&gt;0&lt;/x:int32&gt;\n    &lt;/c:valuewhenconverter.when&gt;\n\n    &lt;c:valuewhenconverter.value&gt;\n        &lt;visibility&gt;Visible&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.value&gt;\n\n    &lt;c:valuewhenconverter.otherwise&gt;\n        &lt;visibility&gt;Collapsed&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.otherwise&gt;\n\n&lt;/c:valuewhenconverter&gt;\n</pre>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOFileHandlingSample.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOFileHandlingSample.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOFileHandlingSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOFileHandlingSample.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A TODOFileHandlingSample list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This TODOFileHandlingSample application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" TODOFileHandlingSample list and a \"vacation\" TODOFileHandlingSample list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace TODOFileHandlingSample.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace TODOFileHandlingSample.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace TODOFileHandlingSample.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace TODOFileHandlingSample.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            return Task.FromResult<object>(null);\n        }\n\n        public virtual Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending)\n        {\n            return Task.FromResult<object>(null);\n        }\n\n    }\n}"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3c03f095-6973-4437-805e-8c22aeaf1aba\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3c03f095-6973-4437-805e-8c22aeaf1aba\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>TODO</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"TODO.App\">\n      <uap:VisualElements\n        DisplayName=\"TODO\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"TODO\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TODOFileHandlingSample\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TODOFileHandlingSample\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFileHandlingSample.Models;\n\nnamespace TODOFileHandlingSample.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFileHandlingSample.Models;\n\nnamespace TODOFileHandlingSample.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await this.GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOFileHandlingSample.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // convert to string\n            var _String = Serialize(value);\n            System.Diagnostics.Debug.WriteLine(_String);\n\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting).ConfigureAwait(false);\n            Debug.WriteLine(\"File created/replaced\");\n\n            try\n            {\n                // save string to file\n                await Windows.Storage.FileIO.WriteTextAsync(_File, _String).AsTask().ConfigureAwait(false);\n                Debug.WriteLine(\"Wrote data to file\");\n\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(ex.ToString());\n                throw ex;\n            }\n            Debug.WriteLine(\"Checking if File exists and returning\");\n\n            // result\n            return await FileExistsAsync(key, location).ConfigureAwait(false);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOFileHandlingSample.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Local); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Local);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODOFileHandlingSample: persist */ }\n        string LastNavigationType { get; set; /* TODOFileHandlingSample: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        async void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedFromAsync(null, suspending);\n                }\n            }\n        }\n\n        async void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODOFileHandlingSample: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedToAsync(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODOFileHandlingSample */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public async void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                await dataContext.OnNavigatedToAsync(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Styles/PivotTabsStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFileHandlingSample.Styles\">\n\n    <!-- This pivot uses left-oriented Tabs-style headers -->\n    <Style TargetType=\"Pivot\" x:Key=\"TabsPivotWithLeftHeaders\">\n        <Setter Property=\"Margin\" Value=\"0\" />\n        <Setter Property=\"Padding\" Value=\"0\" />\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlHighlightBaseHighBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <Setter Property=\"ItemsPanel\">\n            <Setter.Value>\n                <ItemsPanelTemplate>\n                    <Grid />\n                </ItemsPanelTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Pivot\">\n                    <Grid\n                        x:Name=\"RootElement\"\n                        HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n                        VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n                        Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n\n                            <!-- This PivotHeaderItem is used to provide 'Tabs' style visuals and selection -->\n                            <Style TargetType=\"PivotHeaderItem\" >\n                                <Setter Property=\"Background\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"Height\" Value=\"60\" />\n                                <Setter Property=\"Width\" Value=\"180\" />\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"PivotHeaderItem\">\n                                            <Grid x:Name=\"Grid\" Background=\"{TemplateBinding Background}\">\n                                                <Grid.Resources>\n                                                    <Style x:Key=\"BaseContentPresenterStyle\" TargetType=\"ContentPresenter\">\n                                                        <Setter Property=\"FontFamily\" Value=\"Segoe UI\" />\n                                                        <Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n                                                        <Setter Property=\"FontSize\" Value=\"15\" />\n                                                        <Setter Property=\"TextWrapping\" Value=\"Wrap\" />\n                                                        <Setter Property=\"LineStackingStrategy\" Value=\"MaxHeight\" />\n                                                        <Setter Property=\"TextLineBounds\" Value=\"Full\" />\n                                                        <Setter Property=\"OpticalMarginAlignment\" Value=\"TrimSideBearings\" />\n                                                    </Style>\n                                                    <Style x:Key=\"BodyContentPresenterStyle\" TargetType=\"ContentPresenter\" BasedOn=\"{StaticResource BaseContentPresenterStyle}\">\n                                                    </Style>\n                                                </Grid.Resources>\n                                                <Grid.RowDefinitions>\n                                                    <RowDefinition Height=\"58\" />\n                                                    <RowDefinition Height=\"2\" />\n                                                </Grid.RowDefinitions>\n                                                <VisualStateManager.VisualStateGroups>\n                                                    <VisualStateGroup x:Name=\"SelectionStates\">\n                                                        <VisualStateGroup.Transitions>\n                                                            <VisualTransition From=\"Unselected\" To=\"UnselectedLocked\" GeneratedDuration=\"0:0:0.33\" />\n                                                            <VisualTransition From=\"UnselectedLocked\" To=\"Unselected\" GeneratedDuration=\"0:0:0.33\" />\n                                                        </VisualStateGroup.Transitions>\n                                                        <VisualState x:Name=\"Disabled\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlDisabledBaseLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Unselected\" />\n                                                        <VisualState x:Name=\"UnselectedLocked\">\n                                                            <Storyboard>\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenterTranslateTransform\" Storyboard.TargetProperty=\"X\" \n                                                                     Duration=\"0\" To=\"{ThemeResource PivotHeaderItemLockedTranslation}\" />\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                                     Duration=\"0\" To=\"0\" />\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Selected\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                    </VisualStateGroup>\n                                                </VisualStateManager.VisualStateGroups>\n\n                                                <ContentPresenter x:Name=\"ContentPresenter\" \n                                              Content=\"{TemplateBinding Content}\" \n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\" \n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" \n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" \n                                              Margin=\"0\" \n                                              Style=\"{StaticResource BodyContentPresenterStyle}\"\n                                              FontSize=\"12\"\n                                              LineHeight=\"14\"\n                                              Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\"\n                                              Grid.RowSpan=\"2\">\n                                                    <ContentPresenter.RenderTransform>\n                                                        <TranslateTransform x:Name=\"ContentPresenterTranslateTransform\" />\n                                                    </ContentPresenter.RenderTransform>\n                                                </ContentPresenter>\n\n                                                <Rectangle Grid.Row=\"1\" Width=\"180\" Height=\"2\" Fill=\"{ThemeResource SystemControlHighlightAccentBrush}\" x:Name=\"SelectionHintBar\" Opacity=\"0\" />\n                                            </Grid>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n\n                            <Style x:Key=\"BaseContentControlStyle\" TargetType=\"ContentControl\">\n                                <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n                                <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\n                                <Setter Property=\"FontSize\" Value=\"15\"/>\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"ContentControl\">\n                                            <ContentPresenter Content=\"{TemplateBinding Content}\"\n                                                                ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                                                                Margin=\"{TemplateBinding Padding}\"\n                                                                ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n                                                                HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                                                VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                                                OpticalMarginAlignment=\"TrimSideBearings\"/>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n                            <Style x:Key=\"TitleContentControlStyle\" TargetType=\"ContentControl\" BasedOn=\"{StaticResource BaseContentControlStyle}\">\n                                <Setter Property=\"FontWeight\" Value=\"SemiLight\"/>\n                                <Setter Property=\"FontSize\" Value=\"24\"/>\n                            </Style>\n                        </Grid.Resources>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"Orientation\">\n                                <VisualState x:Name=\"Portrait\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotPortraitThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Landscape\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotLandscapeThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"NavigationButtonsVisibility\">\n                                <VisualState x:Name=\"NavigationButtonsHidden\" />\n                                <VisualState x:Name=\"NavigationButtonsVisible\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"HeaderStates\">\n                                <VisualState x:Name=\"HeaderDynamic\" />\n                                <VisualState x:Name=\"HeaderStatic\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Header\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"StaticHeader\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"*\" />\n                        </Grid.RowDefinitions>\n                        <ContentControl                                x:Name=\"TitleContentControl\"\n                            IsTabStop=\"False\"\n                            Margin=\"{StaticResource PivotPortraitThemePadding}\"\n                            Style=\"{StaticResource TitleContentControlStyle}\"\n                            Visibility=\"Collapsed\"\n                            Content=\"{TemplateBinding Title}\"\n                            ContentTemplate=\"{TemplateBinding TitleTemplate}\"/>\n                        <Grid Grid.Row=\"1\">\n                            <Grid.Resources>\n                                <ControlTemplate x:Key=\"NextTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E3;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                                <ControlTemplate x:Key=\"PreviousTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E2;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                            </Grid.Resources>\n                            <ScrollViewer\n                                x:Name=\"ScrollViewer\"\n                                Margin=\"{TemplateBinding Padding}\"\n                                HorizontalSnapPointsType=\"MandatorySingle\"\n                                HorizontalSnapPointsAlignment=\"Center\"\n                                HorizontalScrollBarVisibility=\"Hidden\"\n                                VerticalScrollMode=\"Disabled\"\n                                VerticalScrollBarVisibility=\"Disabled\"\n                                VerticalSnapPointsType=\"None\"\n                                VerticalContentAlignment=\"Stretch\"\n                                ZoomMode=\"Disabled\"\n                                Template=\"{StaticResource ScrollViewerScrollBarlessTemplate}\"\n                                BringIntoViewOnFocusChange=\"False\">\n\n                                <PivotPanel x:Name=\"Panel\" VerticalAlignment=\"Stretch\">\n                                    <Grid x:Name=\"PivotLayoutElement\">\n                                        <Grid.RowDefinitions>\n                                            <RowDefinition Height=\"Auto\" />\n                                            <RowDefinition Height=\"*\" />\n                                        </Grid.RowDefinitions>\n                                        <Grid.ColumnDefinitions>\n\n                                            <!-- By setting this to *,Auto,* the Header panel would be centered -->\n                                            <ColumnDefinition Width=\"8\" />\n                                            <ColumnDefinition Width=\"Auto\" />\n                                            <ColumnDefinition Width=\"*\" />\n                                        </Grid.ColumnDefinitions>\n                                        <Grid.RenderTransform>\n                                            <CompositeTransform x:Name=\"PivotLayoutElementTranslateTransform\" />\n                                        </Grid.RenderTransform>\n\n                                        <!-- Provides a background color behind the entire width of the header area -->\n                                        <Border Grid.ColumnSpan=\"3\" Background=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                        <ContentPresenter\n                                      x:Name=\"LeftHeaderPresenter\"\n                                      Content=\"{TemplateBinding LeftHeader}\"\n                                      ContentTemplate=\"{TemplateBinding LeftHeaderTemplate}\"\n                                      HorizontalAlignment=\"Stretch\"\n                                      VerticalAlignment=\"Stretch\" />\n                                        <ContentControl\n                                      x:Name=\"HeaderClipper\"\n                                      Grid.Column=\"1\"\n                                      UseSystemFocusVisuals=\"True\"\n                                      HorizontalContentAlignment=\"Stretch\">\n                                            <ContentControl.Clip>\n                                                <RectangleGeometry x:Name=\"HeaderClipperGeometry\" />\n                                            </ContentControl.Clip>\n                                            <Grid Background=\"Transparent\">\n                                                <PivotHeaderPanel x:Name=\"StaticHeader\" Visibility=\"Collapsed\" />\n                                                <PivotHeaderPanel x:Name=\"Header\">\n                                                    <PivotHeaderPanel.RenderTransform>\n                                                        <TransformGroup>\n                                                            <CompositeTransform x:Name=\"HeaderTranslateTransform\" />\n                                                            <CompositeTransform x:Name=\"HeaderOffsetTranslateTransform\" />\n                                                        </TransformGroup>\n                                                    </PivotHeaderPanel.RenderTransform>\n                                                </PivotHeaderPanel>\n                                            </Grid>\n                                        </ContentControl>\n                                        <Button\n                                        x:Name=\"PreviousButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource PreviousTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Left\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <Button\n                                        x:Name=\"NextButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource NextTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Right\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <ContentPresenter\n                                        x:Name=\"RightHeaderPresenter\"\n                                        Grid.Column=\"2\"\n                                        Content=\"{TemplateBinding RightHeader}\"\n                                        ContentTemplate=\"{TemplateBinding RightHeaderTemplate}\"\n                                        HorizontalAlignment=\"Stretch\"\n                                        VerticalAlignment=\"Stretch\" />\n                                        <ItemsPresenter x:Name=\"PivotItemPresenter\" Grid.Row=\"1\" Grid.ColumnSpan=\"3\">\n                                            <ItemsPresenter.RenderTransform>\n                                                <TransformGroup>\n                                                    <TranslateTransform x:Name=\"ItemsPresenterTranslateTransform\" />\n                                                    <CompositeTransform x:Name=\"ItemsPresenterCompositeTransform\" />\n                                                </TransformGroup>\n                                            </ItemsPresenter.RenderTransform>\n                                        </ItemsPresenter>\n                                    </Grid>\n                                </PivotPanel>\n                            </ScrollViewer>\n                        </Grid>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFileHandlingSample.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/TODOFileHandlingSample.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TODOFileHandlingSample</RootNamespace>\n    <AssemblyName>TODOFileHandlingSample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>TODO_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>1b8df4b3</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ToDoEditorContentDialog.xaml.cs\">\n      <DependentUpon>ToDoEditorContentDialog.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"TODO_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Converters\\Converters.readme.htm\" />\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\PivotTabsStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\ToDoEditorContentDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFileHandlingSample.Mvvm;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFileHandlingSample.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n            return Task.FromResult<object>(null);\n        }\n\n        public override async Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending)\n        {\n            await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                this.TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                this.TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(1000);\n\n                var data = await _todoListRepository.GetAsync();\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.Title))\n                {\n                    this.TodoLists.Add(new ViewModels.TodoListViewModel(item));\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            try\n            {\n                Busy = true;\n                //await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing TODOFileHandlingSample.Models;\n\nnamespace TODOFileHandlingSample.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace TODOFileHandlingSample.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            this.TodoList = list;\n            foreach (var item in list.Items)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                this.TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                this.TodoList.Items.Remove(this.SelectedItem.TodoItem);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"TODOFileHandlingSample.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFileHandlingSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:TODOFileHandlingSample.ViewModels\"\n    xmlns:models=\"using:TODOFileHandlingSample.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n                <ResourceDictionary Source=\"ms-appx:///Styles/PivotTabsStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Icon=\"Edit\" Label=\"rename list\" Click=\"EditListButtonClicked\"/>\n            <AppBarButton Icon=\"Delete\" Label=\"delete list\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Bottom\">\n                        <Button Content=\"Are you sure?\" Click=\"DeleteListConfirmationButtonClicked\" />\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n\n        <Pivot x:Name=\"MainPivot\" ItemsSource=\"{Binding TodoLists}\" Style=\"{StaticResource TabsPivotWithLeftHeaders}\">\n            <Pivot.TitleTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                        <Grid HorizontalAlignment=\"Right\" Grid.Column=\"1\" Margin=\"0,-8,0,0\" RenderTransformOrigin=\"0.5,0.5\">\n                            <Grid.RenderTransform>\n                                <CompositeTransform ScaleY=\"0.75\" ScaleX=\"0.75\"/>\n                            </Grid.RenderTransform>\n                            <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                            <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                        </Grid>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.TitleTemplate>\n\n            <Pivot.HeaderTemplate>\n                <DataTemplate>\n                    <Grid >\n                        <!-- list title -->\n                        <TextBlock Text=\"{Binding TodoList.Title}\" Style=\"{StaticResource CaptionTextBlockStyle}\" FontSize=\"20\"/>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.HeaderTemplate>\n\n            <Pivot.ItemTemplate>\n                <DataTemplate>\n                    <ListView Padding=\"0,0,0,12\" Margin=\"0,8,0,0\" Grid.Row=\"2\"\n                                IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                        <ListView.Background>\n                            <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                        </ListView.Background>\n                        <ListView.ItemContainerTransitions>\n                            <TransitionCollection>\n                                <AddDeleteThemeTransition />\n                            </TransitionCollection>\n                        </ListView.ItemContainerTransitions>\n                        <ListView.ItemContainerStyle>\n                            <Style TargetType=\"ListViewItem\">\n                                <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            </Style>\n                        </ListView.ItemContainerStyle>\n                        <ListView.Header>\n                            <StackPanel Orientation=\"Horizontal\">\n                                <!-- create new item -->\n                                <TextBox KeyDown=\"TextBox_KeyDown\" Width=\"260\" PlaceholderText=\"Add a new task\" \n                                         Margin=\"24,0,0,12\" />\n                                <AppBarButton Icon=\"Accept\" Loaded=\"AddNewItemConfirmButton_Loaded\"\n                                              IsEnabled=\"False\" Click=\"AddNewItemConfirmButton_Click\" \n                                              RenderTransformOrigin=\"0.5,0.5\" Margin=\"0,-8,0,0\">\n                                    <AppBarButton.RenderTransform>\n                                        <CompositeTransform ScaleX=\"0.75\" ScaleY=\"0.75\"/>\n                                    </AppBarButton.RenderTransform>\n                                </AppBarButton>\n                            </StackPanel> \n                        </ListView.Header>\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Height=\"48\">\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"48\" />\n                                        <ColumnDefinition Width=\"*\" />\n                                        <ColumnDefinition Width=\"48\" />\n                                    </Grid.ColumnDefinitions>\n\n                                    <!-- item checked -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                    <!-- item title -->\n                                    <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                    <!-- item strikethrough -->\n                                    <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                    <!-- item star -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                </DataTemplate>\n            </Pivot.ItemTemplate>\n        </Pivot>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing TODOFileHandlingSample.ViewModels;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace TODOFileHandlingSample.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            //this.TodoEditorDialog.DataContext = e.ClickedItem;\n            //await this.TodoEditorDialog.ShowAsync();\n\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            var itemEditorDialog = new ToDoEditorContentDialog();\n            itemEditorDialog.DataContext = e.ClickedItem;\n            itemEditorDialog.SecondaryButtonCommand = toDoListVM.RemoveCommand;\n            itemEditorDialog.SecondaryButtonCommandParameter = ((TodoItemViewModel)(e.ClickedItem)).TodoItem;\n            await itemEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n\n            this.ListEditorDialog.DataContext = data.TodoList;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n\n        private TextBox NewToDoItemNameTextBox = null;\n\n        private AppBarButton AddNewItemConfirmButton = null;\n\n        private void AddNewItemConfirmButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            // This button is in a data template, so we can use the Loaded event to get a reference to it\n            // You can't get at controls in Data Templates in Item Templates using their name\n            AddNewItemConfirmButton = sender as AppBarButton;\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            NewToDoItemNameTextBox = textBox;\n\n            if (!string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = true;\n\n                if (e.Key == Windows.System.VirtualKey.Enter)\n                {\n                    // Handle 'Enter' key for keyboard users\n                    if (e.Key == Windows.System.VirtualKey.Enter)\n                    {\n                        e.Handled = true;\n                        CreateNewToDoItem(textBox);\n                    }\n                }\n            }\n            else\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = false;\n            }\n        }\n\n        private void CreateNewToDoItem(TextBox textBox)\n        {\n            var list = textBox.DataContext as ViewModels.TodoListViewModel;\n            list.AddCommand.Execute(textBox.Text);\n            textBox.Text = string.Empty;\n            textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n\n            if (AddNewItemConfirmButton != null)\n                AddNewItemConfirmButton.IsEnabled = false;\n        }\n\n        private void AddNewItemConfirmButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (NewToDoItemNameTextBox != null)\n            {\n                CreateNewToDoItem(NewToDoItemNameTextBox);\n            }\n        }\n\n        private async void EditListButtonClicked(object sender, RoutedEventArgs e)\n        {\n            this.ListEditorDialog.DataContext = ((TodoListViewModel)MainPivot.SelectedItem).TodoList;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void DeleteListConfirmationButtonClicked(object sender, RoutedEventArgs e)\n        {\n            var currentList = (TodoListViewModel)MainPivot.SelectedItem;\n            var vm = this.DataContext as ViewModels.MainPageViewModel;\n            if (vm.RemoveListCommand.CanExecute(currentList))\n            {\n                vm.RemoveListCommand.Execute(currentList);\n            }\n        }\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            var toDoItemVM = sender.DataContext as TodoItemViewModel;\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            if (toDoListVM.RemoveCommand.CanExecute(toDoItemVM.TodoItem))\n            {\n                toDoListVM.RemoveCommand.Execute(toDoItemVM.TodoItem);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Views/ToDoEditorContentDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"TODOFileHandlingSample.Views.ToDoEditorContentDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFileHandlingSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    Title=\"Edit ToDo Item\" \n    PrimaryButtonText=\"Close\" \n    SecondaryButtonText=\"Delete\" \n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"360\">\n\n    <ContentDialog.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </ContentDialog.Resources>\n\n    <ContentDialog.Content>\n        <StackPanel Margin=\"12,0,0,0\">\n            <Grid>\n                <StackPanel>\n                    <Grid Width=\"300\">\n                        <!-- item checked -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Content=\"Is Complete?\" HorizontalAlignment=\"Left\"/>\n                        <!-- item star -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Style=\"{StaticResource StarCheckBoxStyle}\" HorizontalAlignment=\"Right\"/>\n                    </Grid>\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" \n                                     Margin=\"0,12,0,0\" />\n                    <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" \n                                     Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" \n                                        Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n\n            </Grid>\n        </StackPanel>\n    </ContentDialog.Content>\n</ContentDialog>\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/Views/ToDoEditorContentDialog.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing TODOFileHandlingSample.ViewModels;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace TODOFileHandlingSample.Views\n{\n    public sealed partial class ToDoEditorContentDialog : ContentDialog\n    {\n        public ToDoEditorContentDialog()\n        {\n            this.InitializeComponent();\n        }\n\n        public event EventHandler<TodoItemViewModel> DeleteTodoItemClicked;\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            if (DeleteTodoItemClicked != null)\n            {\n                DeleteTodoItemClicked(this, (TodoItemViewModel)this.DataContext);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "TODOFileHandlingSample/TODOFileHandlingSample.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TODOFileHandlingSample\", \"TODOFileHandlingSample\\TODOFileHandlingSample.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"TODOFilePickerSample.App\" xmlns:common=\"using:TODOFilePickerSample.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:TODOFilePickerSample.Converters\"\n                     xmlns:local=\"using:TODOFilePickerSample\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOFilePickerSample\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOFilePickerSample.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODOFilePickerSample: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Converters/Converters.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Converters folder</h1>\n                <ul>Value Converters are used in XAML data binding to change the output of a property to a more-desiarable string.</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Converter?</h2>\n                <p>\n                    In XAML data binding, the default presentation of a property's value is the result of its [ToString] method.\n                    Since, in .Net, every [class] inherits from [object] and since [object] ensures the [ToString] method,\n                    it is the only reliable default XAML could use to present a value. In effect, XAML is using a default, built-in\n                    Value Converter unless it is provided an alternate, custom Value Converter.\n                </p>\n                <p>\n                    Sometimes a developer or designer wants a property's value presented in a way different than the default.\n                    For example, in the case of a DateTime property the default format is \"4/22/2015 4:09:39 PM\". This\n                    format may be accurate, but it is not friendly. What you might want is \"April 22, 2015\". To accomplish\n                    this format in C#, you could use <span style=\"font-family: 'Courier New';\">DateTime.ToString(\"m\");</span>.\n                    To accomplish it in XAML you use a Value Converter with the same C# logic inside.\n                </p>\n                <h2>IValueConverter</h2>\n                <p>\n                    A XAML Value Converter is just a C# class. It must implment [IValueConverter], which may be found in the\n                    [Windows.UI.Xaml.Data] namespace. This interface requires the [Convert] and the [ConvertBack] methods,\n                    though most converters do not implement the [ConvertBack] method. This is generally because they are\n                    [readonly] operations; the [ConvertBack] method is only used when writing back to a property which is\n                    an uncommon scenario for a value converter.\n                </p>\n                <p>\n                    When XAML binds a property, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Apply the default Value Converter</li>\n                        <li>Present the result</li>\n                    </ol>\n                    With a Custom Value Converter, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Pass the property value through the Custom Value Converter's [Convert] method</li>\n                        <li>Present the result</li>\n                    </ol>\n                    This ability to inject into the presentation pipeline gives the developer\n                    considerable control over the presentation of data.\n                </p>\n                <h2>Performance Caveat</h2>\n                <p>\n                    Value Converters, like any executing code, have a cost to process. As a result, it is generally not recommended\n                    to use Custom Value Converters in repeating data, especially when the quantity of data is quite high. The reason\n                    for this is that the Value Converter has to be instantiated for each item and creates a binding performance penalty.\n                </p>\n                <p>\n                    Sometimes a value in repeating data needs to be converted before it is displayed. If this is the case, creating\n                    a new property in the [Model] that handles the formatting is far more cost effective than using a Value Converter.\n                    For example, you might have the property <span style=\"font-family: 'Courier New';\">DateTime DueDate</span> but\n                    will also create a companion, [readonly] property called <span style=\"font-family: 'Courier New';\"> String DueDateFormatted</span>.\n                    The C# syntax is nearly the same as the Value Converter. The developer simply trades the reusability\n                    and declarability of a Value Converter for improved (or maintained) performance.\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOFilePickerSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOFilePickerSample.Converters] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>DateTimeFormatConverter.cs</b></li>\n                </ol>\n                <p>\n                    [DateTimeFormatConverter] is a one-way converter that takes a [DateTime] value and applies the\n                    format string supplied in the [CommandParameter] argument. The incoming value must be\n                    a [DateTime] and cannot be a [DateTime?].\n                </p>\n                <ul>\n                    Format string <a href=\"https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx\" target=\"_blank\">reference</a>.\n                </ul>\n                <ol start=\"2\">\n                    <li><b>StateToStringConverter.cs</b></li>\n                </ol>\n                <p>\n                    Unique to this application is the States ENUM (defined in /Models/States.cs) that represents\n                    the current state of a TodoItem (defined in /Models/TodoItem.cs). One possible state, for example is\n                    NotStarted. Notice how it has no space. The [StateToStringConverter] is a one-way converter that\n                    takes a [State] value and returns a custom string, like \"Not Started\".\n                </p>\n                <ul>\n                    Note: this converter does not apply localization the returned string. It is hard coded.\n                </ul>\n                <ol start=\"3\">\n                    <li><b>ValueWhenConverter.cs</b></li>\n                </ol>\n                <p>\n                    The [ValueWhenConverter] is a powerful, reusable converter. It is a one-way converter that\n                    accepts some variable value, testing it against its own [When] property using the [Equals]\n                    method (which is defined on every object in .Net). If [Equals] returns true, it returns\n                    its own [When] property. If it returns false, it returns its own [Otherwise] property.\n                </p>\n                <p>\n                    Because the developer can define [Value], [When], and [Otherwise] this converter can be reused\n                    to meet the requirements of several common (90%) scenarios such as \"VisibleWhenFalse\" or \n                    \"VisibleWhenZero\" or any other values that can be declared in XAML. As a result, the\n                    [ValueWhenConverter] can resude the number of unique converters in a project. That being said,\n                    it cannot meet every need and custom converters may still be necessary. \n                </p>\n                Sample syntax\n<pre>\n&lt;c:valuewhenconverter \n        x:name=\"VisibleWhenZeroConverter\"&gt;\n\n    &lt;c:valuewhenconverter.when&gt;\n        &lt;x:int32&gt;0&lt;/x:int32&gt;\n    &lt;/c:valuewhenconverter.when&gt;\n\n    &lt;c:valuewhenconverter.value&gt;\n        &lt;visibility&gt;Visible&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.value&gt;\n\n    &lt;c:valuewhenconverter.otherwise&gt;\n        &lt;visibility&gt;Collapsed&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.otherwise&gt;\n\n&lt;/c:valuewhenconverter&gt;\n</pre>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOFilePickerSample.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOFilePickerSample.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOFilePickerSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOFilePickerSample.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A TODOFilePickerSample list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This TODOFilePickerSample application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" TODOFilePickerSample list and a \"vacation\" TODOFilePickerSample list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Models/TodoItem.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Media.Imaging;\n\nnamespace TODOFilePickerSample.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n\n        private Uri _ImageUri = default(Uri);\n        public Uri ImageUri { get { return _ImageUri; }\n            set\n            {\n                if (!object.Equals(_ImageUri, value))\n                {\n                    SetImage(value);\n                }\n                Set(ref _ImageUri, value);\n            }\n        }\n\n        private BitmapImage _ImageSource;\n        public BitmapImage ImageSource { get { return _ImageSource; } set { Set(ref _ImageSource, value); } }\n\n        private async void SetImage(Uri targetImageUri)\n        {\n            if (targetImageUri == null)\n            {\n                ImageSource = null;\n            }\n            else\n            {\n                var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(targetImageUri);\n                var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);\n                var img = new BitmapImage();\n                img.SetSource(fileStream);\n                ImageSource = img;\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace TODOFilePickerSample.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace TODOFilePickerSample.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace TODOFilePickerSample.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3c03f095-6973-4437-805e-8c22aeaf1aba\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3c03f095-6973-4437-805e-8c22aeaf1aba\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>TODO</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"TODO.App\">\n      <uap:VisualElements\n        DisplayName=\"TODO\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"TODO\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n    <DeviceCapability Name=\"webcam\"/>\n  </Capabilities>\n</Package>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TODOFilePickerSample\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TODOFilePickerSample\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFilePickerSample.Models;\n\nnamespace TODOFilePickerSample.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null, Uri imageUri = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n                ImageUri = imageUri,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate,\n                    item.ImageUri\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            Uri[] defaultImageUris = new Uri[] \n            { new Uri(\"ms-appx:///Assets/DarkGray.png\"),\n              new Uri(\"ms-appx:///Assets/LightGray.png\"),\n               new Uri(\"ms-appx:///Assets/MediumGray.png\"),\n            };\n\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200)),\n                        defaultImageUris[random.Next(0, 3)]\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFilePickerSample.Models;\n\nnamespace TODOFilePickerSample.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await this.GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOFilePickerSample.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOFilePickerSample.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODOFilePickerSample: persist */ }\n        string LastNavigationType { get; set; /* TODOFilePickerSample: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODOFilePickerSample: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODOFilePickerSample */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Styles/PivotTabsStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOPivot.Styles\">\n\n    <!-- This pivot uses left-oriented Tabs-style headers -->\n    <Style TargetType=\"Pivot\" x:Key=\"TabsPivotWithLeftHeaders\">\n        <Setter Property=\"Margin\" Value=\"0\" />\n        <Setter Property=\"Padding\" Value=\"0\" />\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlHighlightBaseHighBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <Setter Property=\"ItemsPanel\">\n            <Setter.Value>\n                <ItemsPanelTemplate>\n                    <Grid />\n                </ItemsPanelTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Pivot\">\n                    <Grid\n                        x:Name=\"RootElement\"\n                        HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n                        VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n                        Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n\n                            <!-- This PivotHeaderItem is used to provide 'Tabs' style visuals and selection -->\n                            <Style TargetType=\"PivotHeaderItem\" >\n                                <Setter Property=\"Background\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"Height\" Value=\"60\" />\n                                <Setter Property=\"Width\" Value=\"180\" />\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"PivotHeaderItem\">\n                                            <Grid x:Name=\"Grid\" Background=\"{TemplateBinding Background}\">\n                                                <Grid.Resources>\n                                                    <Style x:Key=\"BaseContentPresenterStyle\" TargetType=\"ContentPresenter\">\n                                                        <Setter Property=\"FontFamily\" Value=\"Segoe UI\" />\n                                                        <Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n                                                        <Setter Property=\"FontSize\" Value=\"15\" />\n                                                        <Setter Property=\"TextWrapping\" Value=\"Wrap\" />\n                                                        <Setter Property=\"LineStackingStrategy\" Value=\"MaxHeight\" />\n                                                        <Setter Property=\"TextLineBounds\" Value=\"Full\" />\n                                                        <Setter Property=\"OpticalMarginAlignment\" Value=\"TrimSideBearings\" />\n                                                    </Style>\n                                                    <Style x:Key=\"BodyContentPresenterStyle\" TargetType=\"ContentPresenter\" BasedOn=\"{StaticResource BaseContentPresenterStyle}\">\n                                                    </Style>\n                                                </Grid.Resources>\n                                                <Grid.RowDefinitions>\n                                                    <RowDefinition Height=\"58\" />\n                                                    <RowDefinition Height=\"2\" />\n                                                </Grid.RowDefinitions>\n                                                <VisualStateManager.VisualStateGroups>\n                                                    <VisualStateGroup x:Name=\"SelectionStates\">\n                                                        <VisualStateGroup.Transitions>\n                                                            <VisualTransition From=\"Unselected\" To=\"UnselectedLocked\" GeneratedDuration=\"0:0:0.33\" />\n                                                            <VisualTransition From=\"UnselectedLocked\" To=\"Unselected\" GeneratedDuration=\"0:0:0.33\" />\n                                                        </VisualStateGroup.Transitions>\n                                                        <VisualState x:Name=\"Disabled\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlDisabledBaseLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Unselected\" />\n                                                        <VisualState x:Name=\"UnselectedLocked\">\n                                                            <Storyboard>\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenterTranslateTransform\" Storyboard.TargetProperty=\"X\" \n                                                                     Duration=\"0\" To=\"{ThemeResource PivotHeaderItemLockedTranslation}\" />\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                                     Duration=\"0\" To=\"0\" />\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Selected\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                    </VisualStateGroup>\n                                                </VisualStateManager.VisualStateGroups>\n\n                                                <ContentPresenter x:Name=\"ContentPresenter\" \n                                              Content=\"{TemplateBinding Content}\" \n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\" \n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" \n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" \n                                              Margin=\"0\" \n                                              Style=\"{StaticResource BodyContentPresenterStyle}\"\n                                              FontSize=\"12\"\n                                              LineHeight=\"14\"\n                                              Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\"\n                                              Grid.RowSpan=\"2\">\n                                                    <ContentPresenter.RenderTransform>\n                                                        <TranslateTransform x:Name=\"ContentPresenterTranslateTransform\" />\n                                                    </ContentPresenter.RenderTransform>\n                                                </ContentPresenter>\n\n                                                <Rectangle Grid.Row=\"1\" Width=\"180\" Height=\"2\" Fill=\"{ThemeResource SystemControlHighlightAccentBrush}\" x:Name=\"SelectionHintBar\" Opacity=\"0\" />\n                                            </Grid>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n\n                            <Style x:Key=\"BaseContentControlStyle\" TargetType=\"ContentControl\">\n                                <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n                                <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\n                                <Setter Property=\"FontSize\" Value=\"15\"/>\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"ContentControl\">\n                                            <ContentPresenter Content=\"{TemplateBinding Content}\"\n                                                                ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                                                                Margin=\"{TemplateBinding Padding}\"\n                                                                ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n                                                                HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                                                VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                                                OpticalMarginAlignment=\"TrimSideBearings\"/>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n                            <Style x:Key=\"TitleContentControlStyle\" TargetType=\"ContentControl\" BasedOn=\"{StaticResource BaseContentControlStyle}\">\n                                <Setter Property=\"FontWeight\" Value=\"SemiLight\"/>\n                                <Setter Property=\"FontSize\" Value=\"24\"/>\n                            </Style>\n                        </Grid.Resources>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"Orientation\">\n                                <VisualState x:Name=\"Portrait\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotPortraitThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Landscape\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotLandscapeThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"NavigationButtonsVisibility\">\n                                <VisualState x:Name=\"NavigationButtonsHidden\" />\n                                <VisualState x:Name=\"NavigationButtonsVisible\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"HeaderStates\">\n                                <VisualState x:Name=\"HeaderDynamic\" />\n                                <VisualState x:Name=\"HeaderStatic\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Header\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"StaticHeader\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"*\" />\n                        </Grid.RowDefinitions>\n                        <ContentControl                                x:Name=\"TitleContentControl\"\n                            IsTabStop=\"False\"\n                            Margin=\"{StaticResource PivotPortraitThemePadding}\"\n                            Style=\"{StaticResource TitleContentControlStyle}\"\n                            Visibility=\"Collapsed\"\n                            Content=\"{TemplateBinding Title}\"\n                            ContentTemplate=\"{TemplateBinding TitleTemplate}\"/>\n                        <Grid Grid.Row=\"1\">\n                            <Grid.Resources>\n                                <ControlTemplate x:Key=\"NextTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E3;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                                <ControlTemplate x:Key=\"PreviousTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E2;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                            </Grid.Resources>\n                            <ScrollViewer\n                                x:Name=\"ScrollViewer\"\n                                Margin=\"{TemplateBinding Padding}\"\n                                HorizontalSnapPointsType=\"MandatorySingle\"\n                                HorizontalSnapPointsAlignment=\"Center\"\n                                HorizontalScrollBarVisibility=\"Hidden\"\n                                VerticalScrollMode=\"Disabled\"\n                                VerticalScrollBarVisibility=\"Disabled\"\n                                VerticalSnapPointsType=\"None\"\n                                VerticalContentAlignment=\"Stretch\"\n                                ZoomMode=\"Disabled\"\n                                Template=\"{StaticResource ScrollViewerScrollBarlessTemplate}\"\n                                BringIntoViewOnFocusChange=\"False\">\n\n                                <PivotPanel x:Name=\"Panel\" VerticalAlignment=\"Stretch\">\n                                    <Grid x:Name=\"PivotLayoutElement\">\n                                        <Grid.RowDefinitions>\n                                            <RowDefinition Height=\"Auto\" />\n                                            <RowDefinition Height=\"*\" />\n                                        </Grid.RowDefinitions>\n                                        <Grid.ColumnDefinitions>\n\n                                            <!-- By setting this to *,Auto,* the Header panel would be centered -->\n                                            <ColumnDefinition Width=\"8\" />\n                                            <ColumnDefinition Width=\"Auto\" />\n                                            <ColumnDefinition Width=\"*\" />\n                                        </Grid.ColumnDefinitions>\n                                        <Grid.RenderTransform>\n                                            <CompositeTransform x:Name=\"PivotLayoutElementTranslateTransform\" />\n                                        </Grid.RenderTransform>\n\n                                        <!-- Provides a background color behind the entire width of the header area -->\n                                        <Border Grid.ColumnSpan=\"3\" Background=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                        <ContentPresenter\n                                      x:Name=\"LeftHeaderPresenter\"\n                                      Content=\"{TemplateBinding LeftHeader}\"\n                                      ContentTemplate=\"{TemplateBinding LeftHeaderTemplate}\"\n                                      HorizontalAlignment=\"Stretch\"\n                                      VerticalAlignment=\"Stretch\" />\n                                        <ContentControl\n                                      x:Name=\"HeaderClipper\"\n                                      Grid.Column=\"1\"\n                                      UseSystemFocusVisuals=\"True\"\n                                      HorizontalContentAlignment=\"Stretch\">\n                                            <ContentControl.Clip>\n                                                <RectangleGeometry x:Name=\"HeaderClipperGeometry\" />\n                                            </ContentControl.Clip>\n                                            <Grid Background=\"Transparent\">\n                                                <PivotHeaderPanel x:Name=\"StaticHeader\" Visibility=\"Collapsed\" />\n                                                <PivotHeaderPanel x:Name=\"Header\">\n                                                    <PivotHeaderPanel.RenderTransform>\n                                                        <TransformGroup>\n                                                            <CompositeTransform x:Name=\"HeaderTranslateTransform\" />\n                                                            <CompositeTransform x:Name=\"HeaderOffsetTranslateTransform\" />\n                                                        </TransformGroup>\n                                                    </PivotHeaderPanel.RenderTransform>\n                                                </PivotHeaderPanel>\n                                            </Grid>\n                                        </ContentControl>\n                                        <Button\n                                        x:Name=\"PreviousButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource PreviousTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Left\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <Button\n                                        x:Name=\"NextButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource NextTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Right\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <ContentPresenter\n                                        x:Name=\"RightHeaderPresenter\"\n                                        Grid.Column=\"2\"\n                                        Content=\"{TemplateBinding RightHeader}\"\n                                        ContentTemplate=\"{TemplateBinding RightHeaderTemplate}\"\n                                        HorizontalAlignment=\"Stretch\"\n                                        VerticalAlignment=\"Stretch\" />\n                                        <ItemsPresenter x:Name=\"PivotItemPresenter\" Grid.Row=\"1\" Grid.ColumnSpan=\"3\">\n                                            <ItemsPresenter.RenderTransform>\n                                                <TransformGroup>\n                                                    <TranslateTransform x:Name=\"ItemsPresenterTranslateTransform\" />\n                                                    <CompositeTransform x:Name=\"ItemsPresenterCompositeTransform\" />\n                                                </TransformGroup>\n                                            </ItemsPresenter.RenderTransform>\n                                        </ItemsPresenter>\n                                    </Grid>\n                                </PivotPanel>\n                            </ScrollViewer>\n                        </Grid>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFilePickerSample.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/TODOFilePickerSample.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TODOFilePickerSample</RootNamespace>\n    <AssemblyName>TODOFilePickerSample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>TODO_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>1b8df4b3</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ToDoEditorContentDialog.xaml.cs\">\n      <DependentUpon>ToDoEditorContentDialog.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"TODO_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\DarkGray.png\" />\n    <Content Include=\"Assets\\LightGray.png\" />\n    <Content Include=\"Assets\\MediumGray.png\" />\n    <Content Include=\"Converters\\Converters.readme.htm\" />\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\PivotTabsStyle.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\ToDoEditorContentDialog.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"WindowsDesktop, Version=10.0.10069.0\">\n      <Name>Microsoft Desktop Extension SDK for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFilePickerSample.Mvvm;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOFilePickerSample.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                this.TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                this.TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(1000);\n                var data = _todoListRepository.Sample(2).Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    this.TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOFilePickerSample.Models;\nusing Windows.Foundation;\nusing Windows.Media.Capture;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\n\nnamespace TODOFilePickerSample.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        #region Commands\n\n        Mvvm.Command _SelectPictureCommand = default(Mvvm.Command);\n        public Mvvm.Command SelectPictureCommand { get { return _SelectPictureCommand ?? (_SelectPictureCommand = new Mvvm.Command(ExecuteSelectPictureCommand, CanExecuteSelectPictureCommand)); } }\n        private bool CanExecuteSelectPictureCommand() { return !Busy; }\n        private async void ExecuteSelectPictureCommand()\n        {\n            try\n            {\n                Busy = true;\n\n                \n                FileOpenPicker openPicker = new FileOpenPicker();\n                openPicker.ViewMode = PickerViewMode.Thumbnail;\n                openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;\n                openPicker.FileTypeFilter.Add(\".jpg\");\n                openPicker.FileTypeFilter.Add(\".jpeg\");\n                openPicker.FileTypeFilter.Add(\".png\");\n\n                StorageFile file = await openPicker.PickSingleFileAsync();\n\n                if (file != null)\n                {\n                    // Copy the file into local folder\n                    await file.CopyAsync(ApplicationData.Current.LocalFolder, file.Name, NameCollisionOption.ReplaceExisting);\n                    // Save in the ToDoItem\n                    TodoItem.ImageUri = new Uri(\"ms-appdata:///local/\" + file.Name);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n\n        Mvvm.Command _TakePictureCommand = default(Mvvm.Command);\n        public Mvvm.Command TakePictureCommand { get { return _TakePictureCommand ?? (_TakePictureCommand = new Mvvm.Command(ExecuteTakePictureCommand, CanExecuteSelectPictureCommand)); } }\n        private bool CanExecuteTakePictureCommand() { return !Busy && Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.Media.Capture.CameraCaptureUI\"); }\n        private async void ExecuteTakePictureCommand()\n        {\n            try\n            {\n                Busy = true;\n\n                StorageFile file = null;\n\n                if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.Media.Capture.CameraCaptureUI\"))\n                {\n                    // Using Windows.Media.Capture.CameraCaptureUI API to capture a photo\n                    CameraCaptureUI dialog = new CameraCaptureUI();\n                    Size aspectRatio = new Size(16, 9);\n                    dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;\n\n                    file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);\n                }\n\n                if (file != null)\n                {\n                    // Copy the file into local folder\n                    await file.CopyAsync(ApplicationData.Current.LocalFolder, file.Name, NameCollisionOption.ReplaceExisting);\n                    // Save in the ToDoItem\n                    TodoItem.ImageUri = new Uri(\"ms-appdata:///local/\" + file.Name);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace TODOFilePickerSample.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            this.TodoList = list;\n            foreach (var item in list.Items)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                this.TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                this.TodoList.Items.Remove(this.SelectedItem.TodoItem);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"TODOFilePickerSample.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFilePickerSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:TODOFilePickerSample.ViewModels\"\n    xmlns:models=\"using:TODOFilePickerSample.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n                <ResourceDictionary Source=\"ms-appx:///Styles/PivotTabsStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Icon=\"Edit\" Label=\"rename list\" Click=\"EditListButtonClicked\"/>\n            <AppBarButton Icon=\"Delete\" Label=\"delete list\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Bottom\">\n                        <Button Content=\"Are you sure?\" Click=\"DeleteListConfirmationButtonClicked\" />\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n        </CommandBar>\n    </Page.BottomAppBar>\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n        <Pivot x:Name=\"MainPivot\" ItemsSource=\"{Binding TodoLists}\" Style=\"{StaticResource TabsPivotWithLeftHeaders}\">\n            <Pivot.TitleTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                        <Grid HorizontalAlignment=\"Right\" Grid.Column=\"1\" Margin=\"0,-8,0,0\" RenderTransformOrigin=\"0.5,0.5\">\n                            <Grid.RenderTransform>\n                                <CompositeTransform ScaleY=\"0.75\" ScaleX=\"0.75\"/>\n                            </Grid.RenderTransform>\n                            <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                            <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                        </Grid>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.TitleTemplate>\n\n            <Pivot.HeaderTemplate>\n                <DataTemplate>\n                    <Grid >\n                        <!-- list title -->\n                        <TextBlock Text=\"{Binding TodoList.Title}\" Style=\"{StaticResource CaptionTextBlockStyle}\" FontSize=\"20\"/>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.HeaderTemplate>\n\n            <Pivot.ItemTemplate>\n                <DataTemplate>\n                    <ListView Padding=\"0,0,0,12\" Margin=\"0,8,0,0\" Grid.Row=\"2\"\n                                IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                        <ListView.Background>\n                            <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                        </ListView.Background>\n                        <ListView.ItemContainerTransitions>\n                            <TransitionCollection>\n                                <AddDeleteThemeTransition />\n                            </TransitionCollection>\n                        </ListView.ItemContainerTransitions>\n                        <ListView.ItemContainerStyle>\n                            <Style TargetType=\"ListViewItem\">\n                                <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            </Style>\n                        </ListView.ItemContainerStyle>\n                        <ListView.Header>\n                            <StackPanel Orientation=\"Horizontal\">\n                                <!-- create new item -->\n                                <TextBox KeyDown=\"TextBox_KeyDown\" Width=\"260\" PlaceholderText=\"Add a new task\" \n                                         Margin=\"24,0,0,12\" />\n                                <AppBarButton Icon=\"Accept\" Loaded=\"AddNewItemConfirmButton_Loaded\"\n                                              IsEnabled=\"False\" Click=\"AddNewItemConfirmButton_Click\" \n                                              RenderTransformOrigin=\"0.5,0.5\" Margin=\"0,-8,0,0\">\n                                    <AppBarButton.RenderTransform>\n                                        <CompositeTransform ScaleX=\"0.75\" ScaleY=\"0.75\"/>\n                                    </AppBarButton.RenderTransform>\n                                </AppBarButton>\n                            </StackPanel>\n                        </ListView.Header>\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Height=\"48\">\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"30\" />\n                                        <ColumnDefinition Width=\"50\" />\n                                        <ColumnDefinition Width=\"*\" />\n                                        <ColumnDefinition Width=\"48\" />\n                                    </Grid.ColumnDefinitions>\n\n                                    <!-- item checked -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                    <!-- item image -->\n                                    <Image Grid.Column=\"1\" Height=\"40\" Source=\"{Binding TodoItem.ImageSource}\" Stretch=\"Fill\" />\n                                    <!-- item title -->\n                                    <TextBlock Grid.Column=\"2\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" Margin=\"8,0,0,0\" />\n                                    <!-- item strikethrough -->\n                                    <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"2\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"8,0,24,0\" />\n                                    <!-- item star -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"3\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                </DataTemplate>\n            </Pivot.ItemTemplate>\n        </Pivot>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing TODOFilePickerSample.ViewModels;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace TODOFilePickerSample.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            var itemEditorDialog = new ToDoEditorContentDialog();\n            itemEditorDialog.DataContext = e.ClickedItem;\n            itemEditorDialog.SecondaryButtonCommand = toDoListVM.RemoveCommand;\n            itemEditorDialog.SecondaryButtonCommandParameter = ((TodoItemViewModel)(e.ClickedItem)).TodoItem;\n            await itemEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n            this.ListEditorDialog.DataContext = data.TodoList;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private TextBox NewToDoItemNameTextBox = null;\n\n        private AppBarButton AddNewItemConfirmButton = null;\n\n        private void AddNewItemConfirmButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            // This button is in a data template, so we can use the Loaded event to get a reference to it\n            // You can't get at controls in Data Templates in Item Templates using their name\n            AddNewItemConfirmButton = sender as AppBarButton;\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            NewToDoItemNameTextBox = textBox;\n\n            if (!string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = true;\n\n                if (e.Key == Windows.System.VirtualKey.Enter)\n                {\n                    // Handle 'Enter' key for keyboard users\n                    if (e.Key == Windows.System.VirtualKey.Enter)\n                    {\n                        e.Handled = true;\n                        CreateNewToDoItem(textBox);\n                    }\n                }\n            }\n            else\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = false;\n            }\n        }\n\n        private void CreateNewToDoItem(TextBox textBox)\n        {\n            var list = textBox.DataContext as ViewModels.TodoListViewModel;\n            list.AddCommand.Execute(textBox.Text);\n            textBox.Text = string.Empty;\n            textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n\n            if (AddNewItemConfirmButton != null)\n                AddNewItemConfirmButton.IsEnabled = false;\n        }\n\n        private void AddNewItemConfirmButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (NewToDoItemNameTextBox != null)\n            {\n                CreateNewToDoItem(NewToDoItemNameTextBox);\n            }\n        }\n\n        private async void EditListButtonClicked(object sender, RoutedEventArgs e)\n        {\n            this.ListEditorDialog.DataContext = ((TodoListViewModel)MainPivot.SelectedItem).TodoList;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void DeleteListConfirmationButtonClicked(object sender, RoutedEventArgs e)\n        {\n            var currentList = (TodoListViewModel)MainPivot.SelectedItem;\n            var vm = this.DataContext as ViewModels.MainPageViewModel;\n            if (vm.RemoveListCommand.CanExecute(currentList))\n            {\n                vm.RemoveListCommand.Execute(currentList);\n            }\n        }\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            var toDoItemVM = sender.DataContext as TodoItemViewModel;\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            if (toDoListVM.RemoveCommand.CanExecute(toDoItemVM.TodoItem))\n            {\n                toDoListVM.RemoveCommand.Execute(toDoItemVM.TodoItem);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Views/ToDoEditorContentDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"TODOFilePickerSample.Views.ToDoEditorContentDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOFilePickerSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    Title=\"Edit ToDo Item\" \n    PrimaryButtonText=\"Close\" \n    SecondaryButtonText=\"Delete\" \n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"360\">\n\n    <ContentDialog.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </ContentDialog.Resources>\n\n    <ContentDialog.Content>\n        <StackPanel Margin=\"12,0,0,0\">\n            <Grid>\n                <StackPanel>\n                    <Grid Width=\"300\">\n                        <!-- item checked -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Content=\"Is Complete?\" HorizontalAlignment=\"Left\"/>\n                        <!-- item star -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Style=\"{StaticResource StarCheckBoxStyle}\" HorizontalAlignment=\"Right\"/>\n                    </Grid>\n                    \n                    <!-- Image -->\n                    <Image  Source=\"{Binding TodoItem.ImageSource}\" Width=\"300\" Height=\"180\" Stretch=\"UniformToFill\"/>\n\n                    <CommandBar Margin=\"0,0,0,8\">\n                        <AppBarButton x:Name=\"TakePictureButton\" Icon=\"Camera\" Label=\"photo\" Command=\"{Binding TakePictureCommand}\"/>\n                        <AppBarButton x:Name=\"SelectPictureButton\" Icon=\"Pictures\" Label=\"select\" Command=\"{Binding SelectPictureCommand}\"/>\n                    </CommandBar>\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" \n                                     Margin=\"0,12,0,0\" />\n                    <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" \n                                     Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" \n                                        Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n\n            </Grid>\n        </StackPanel>\n    </ContentDialog.Content>\n</ContentDialog>\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/Views/ToDoEditorContentDialog.xaml.cs",
    "content": "﻿using System;\nusing TODOFilePickerSample.ViewModels;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace TODOFilePickerSample.Views\n{\n    public sealed partial class ToDoEditorContentDialog : ContentDialog\n    {\n        public ToDoEditorContentDialog()\n        {\n            this.InitializeComponent();\n        }\n\n        protected override void OnGotFocus(RoutedEventArgs e)\n        {\n            // NOte, in DP7 (BUILD tools drop), CameraCaptureUI is only in the Desktop extension SDK.\n            // At RTM, it is planned to be in Mobile extension SDK as well\n            if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent(\"Windows.Media.Capture.CameraCaptureUI\"))\n            {\n                TakePictureButton.Visibility = Visibility.Collapsed;\n            }\n            base.OnGotFocus(e);\n        }\n\n        public event EventHandler<TodoItemViewModel> DeleteTodoItemClicked;\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            if (DeleteTodoItemClicked != null)\n            {\n                DeleteTodoItemClicked(this, (TodoItemViewModel)this.DataContext);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "TODOFilePickerSample/TODOFilePickerSample.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TODOFilePickerSample\", \"TODOFilePickerSample\\TODOFilePickerSample.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "TODOPivot/TODOPivot/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"TODOPivot.App\" xmlns:common=\"using:TODOPivot.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:TODOPivot.Converters\"\n                     xmlns:local=\"using:TODOPivot\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "TODOPivot/TODOPivot/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOPivot\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOPivot.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODOPivot: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Converters/Converters.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Converters folder</h1>\n                <ul>Value Converters are used in XAML data binding to change the output of a property to a more-desiarable string.</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Converter?</h2>\n                <p>\n                    In XAML data binding, the default presentation of a property's value is the result of its [ToString] method.\n                    Since, in .Net, every [class] inherits from [object] and since [object] ensures the [ToString] method,\n                    it is the only reliable default XAML could use to present a value. In effect, XAML is using a default, built-in\n                    Value Converter unless it is provided an alternate, custom Value Converter.\n                </p>\n                <p>\n                    Sometimes a developer or designer wants a property's value presented in a way different than the default.\n                    For example, in the case of a DateTime property the default format is \"4/22/2015 4:09:39 PM\". This\n                    format may be accurate, but it is not friendly. What you might want is \"April 22, 2015\". To accomplish\n                    this format in C#, you could use <span style=\"font-family: 'Courier New';\">DateTime.ToString(\"m\");</span>.\n                    To accomplish it in XAML you use a Value Converter with the same C# logic inside.\n                </p>\n                <h2>IValueConverter</h2>\n                <p>\n                    A XAML Value Converter is just a C# class. It must implment [IValueConverter], which may be found in the\n                    [Windows.UI.Xaml.Data] namespace. This interface requires the [Convert] and the [ConvertBack] methods,\n                    though most converters do not implement the [ConvertBack] method. This is generally because they are\n                    [readonly] operations; the [ConvertBack] method is only used when writing back to a property which is\n                    an uncommon scenario for a value converter.\n                </p>\n                <p>\n                    When XAML binds a property, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Apply the default Value Converter</li>\n                        <li>Present the result</li>\n                    </ol>\n                    With a Custom Value Converter, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Pass the property value through the Custom Value Converter's [Convert] method</li>\n                        <li>Present the result</li>\n                    </ol>\n                    This ability to inject into the presentation pipeline gives the developer\n                    considerable control over the presentation of data.\n                </p>\n                <h2>Performance Caveat</h2>\n                <p>\n                    Value Converters, like any executing code, have a cost to process. As a result, it is generally not recommended\n                    to use Custom Value Converters in repeating data, especially when the quantity of data is quite high. The reason\n                    for this is that the Value Converter has to be instantiated for each item and creates a binding performance penalty.\n                </p>\n                <p>\n                    Sometimes a value in repeating data needs to be converted before it is displayed. If this is the case, creating\n                    a new property in the [Model] that handles the formatting is far more cost effective than using a Value Converter.\n                    For example, you might have the property <span style=\"font-family: 'Courier New';\">DateTime DueDate</span> but\n                    will also create a companion, [readonly] property called <span style=\"font-family: 'Courier New';\"> String DueDateFormatted</span>.\n                    The C# syntax is nearly the same as the Value Converter. The developer simply trades the reusability\n                    and declarability of a Value Converter for improved (or maintained) performance.\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOPivot functionality in this template.\n                    Each of the types in this folder are inside the [TODOPivot.Converters] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>DateTimeFormatConverter.cs</b></li>\n                </ol>\n                <p>\n                    [DateTimeFormatConverter] is a one-way converter that takes a [DateTime] value and applies the\n                    format string supplied in the [CommandParameter] argument. The incoming value must be\n                    a [DateTime] and cannot be a [DateTime?].\n                </p>\n                <ul>\n                    Format string <a href=\"https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx\" target=\"_blank\">reference</a>.\n                </ul>\n                <ol start=\"2\">\n                    <li><b>StateToStringConverter.cs</b></li>\n                </ol>\n                <p>\n                    Unique to this application is the States ENUM (defined in /Models/States.cs) that represents\n                    the current state of a TodoItem (defined in /Models/TodoItem.cs). One possible state, for example is\n                    NotStarted. Notice how it has no space. The [StateToStringConverter] is a one-way converter that\n                    takes a [State] value and returns a custom string, like \"Not Started\".\n                </p>\n                <ul>\n                    Note: this converter does not apply localization the returned string. It is hard coded.\n                </ul>\n                <ol start=\"3\">\n                    <li><b>ValueWhenConverter.cs</b></li>\n                </ol>\n                <p>\n                    The [ValueWhenConverter] is a powerful, reusable converter. It is a one-way converter that\n                    accepts some variable value, testing it against its own [When] property using the [Equals]\n                    method (which is defined on every object in .Net). If [Equals] returns true, it returns\n                    its own [When] property. If it returns false, it returns its own [Otherwise] property.\n                </p>\n                <p>\n                    Because the developer can define [Value], [When], and [Otherwise] this converter can be reused\n                    to meet the requirements of several common (90%) scenarios such as \"VisibleWhenFalse\" or \n                    \"VisibleWhenZero\" or any other values that can be declared in XAML. As a result, the\n                    [ValueWhenConverter] can resude the number of unique converters in a project. That being said,\n                    it cannot meet every need and custom converters may still be necessary. \n                </p>\n                Sample syntax\n<pre>\n&lt;c:valuewhenconverter \n        x:name=\"VisibleWhenZeroConverter\"&gt;\n\n    &lt;c:valuewhenconverter.when&gt;\n        &lt;x:int32&gt;0&lt;/x:int32&gt;\n    &lt;/c:valuewhenconverter.when&gt;\n\n    &lt;c:valuewhenconverter.value&gt;\n        &lt;visibility&gt;Visible&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.value&gt;\n\n    &lt;c:valuewhenconverter.otherwise&gt;\n        &lt;visibility&gt;Collapsed&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.otherwise&gt;\n\n&lt;/c:valuewhenconverter&gt;\n</pre>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOPivot/TODOPivot/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOPivot.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOPivot.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOPivot functionality in this template.\n                    Each of the types in this folder are inside the [TODOPivot.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A TODOPivot list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This TODOPivot application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" TODOPivot list and a \"vacation\" TODOPivot list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOPivot/TODOPivot/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace TODOPivot.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace TODOPivot.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace TODOPivot.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace TODOPivot.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "TODOPivot/TODOPivot/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3c03f095-6973-4437-805e-8c22aeaf1aba\"\n    Publisher=\"CN=jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3c03f095-6973-4437-805e-8c22aeaf1aba\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>TODO</DisplayName>\n    <PublisherDisplayName>jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"TODO.App\">\n      <uap:VisualElements\n        DisplayName=\"TODO\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"TODO\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "TODOPivot/TODOPivot/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TODOPivot\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TODOPivot\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "TODOPivot/TODOPivot/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "TODOPivot/TODOPivot/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOPivot.Models;\n\nnamespace TODOPivot.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOPivot.Models;\n\nnamespace TODOPivot.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await this.GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOPivot.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOPivot.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODOPivot: persist */ }\n        string LastNavigationType { get; set; /* TODOPivot: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODOPivot: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODOPivot */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Styles/PivotTabsStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOPivot.Styles\">\n\n    <!-- This pivot uses left-oriented Tabs-style headers -->\n    <Style TargetType=\"Pivot\" x:Key=\"TabsPivotWithLeftHeaders\">\n        <Setter Property=\"Margin\" Value=\"0\" />\n        <Setter Property=\"Padding\" Value=\"0\" />\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlHighlightBaseHighBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <Setter Property=\"ItemsPanel\">\n            <Setter.Value>\n                <ItemsPanelTemplate>\n                    <Grid />\n                </ItemsPanelTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Pivot\">\n                    <Grid\n                        x:Name=\"RootElement\"\n                        HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n                        VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n                        Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n\n                            <!-- This PivotHeaderItem is used to provide 'Tabs' style visuals and selection -->\n                            <Style TargetType=\"PivotHeaderItem\" >\n                                <Setter Property=\"Background\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"Height\" Value=\"60\" />\n                                <Setter Property=\"Width\" Value=\"180\" />\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"PivotHeaderItem\">\n                                            <Grid x:Name=\"Grid\" Background=\"{TemplateBinding Background}\">\n                                                <Grid.Resources>\n                                                    <Style x:Key=\"BaseContentPresenterStyle\" TargetType=\"ContentPresenter\">\n                                                        <Setter Property=\"FontFamily\" Value=\"Segoe UI\" />\n                                                        <Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n                                                        <Setter Property=\"FontSize\" Value=\"15\" />\n                                                        <Setter Property=\"TextWrapping\" Value=\"Wrap\" />\n                                                        <Setter Property=\"LineStackingStrategy\" Value=\"MaxHeight\" />\n                                                        <Setter Property=\"TextLineBounds\" Value=\"Full\" />\n                                                        <Setter Property=\"OpticalMarginAlignment\" Value=\"TrimSideBearings\" />\n                                                    </Style>\n                                                    <Style x:Key=\"BodyContentPresenterStyle\" TargetType=\"ContentPresenter\" BasedOn=\"{StaticResource BaseContentPresenterStyle}\">\n                                                    </Style>\n                                                </Grid.Resources>\n                                                <Grid.RowDefinitions>\n                                                    <RowDefinition Height=\"58\" />\n                                                    <RowDefinition Height=\"2\" />\n                                                </Grid.RowDefinitions>\n                                                <VisualStateManager.VisualStateGroups>\n                                                    <VisualStateGroup x:Name=\"SelectionStates\">\n                                                        <VisualStateGroup.Transitions>\n                                                            <VisualTransition From=\"Unselected\" To=\"UnselectedLocked\" GeneratedDuration=\"0:0:0.33\" />\n                                                            <VisualTransition From=\"UnselectedLocked\" To=\"Unselected\" GeneratedDuration=\"0:0:0.33\" />\n                                                        </VisualStateGroup.Transitions>\n                                                        <VisualState x:Name=\"Disabled\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlDisabledBaseLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Unselected\" />\n                                                        <VisualState x:Name=\"UnselectedLocked\">\n                                                            <Storyboard>\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenterTranslateTransform\" Storyboard.TargetProperty=\"X\" \n                                                                     Duration=\"0\" To=\"{ThemeResource PivotHeaderItemLockedTranslation}\" />\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                                     Duration=\"0\" To=\"0\" />\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Selected\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                    </VisualStateGroup>\n                                                </VisualStateManager.VisualStateGroups>\n\n                                                <ContentPresenter x:Name=\"ContentPresenter\" \n                                              Content=\"{TemplateBinding Content}\" \n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\" \n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" \n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" \n                                              Margin=\"0\" \n                                              Style=\"{StaticResource BodyContentPresenterStyle}\"\n                                              FontSize=\"12\"\n                                              LineHeight=\"14\"\n                                              Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\"\n                                              Grid.RowSpan=\"2\">\n                                                    <ContentPresenter.RenderTransform>\n                                                        <TranslateTransform x:Name=\"ContentPresenterTranslateTransform\" />\n                                                    </ContentPresenter.RenderTransform>\n                                                </ContentPresenter>\n\n                                                <Rectangle Grid.Row=\"1\" Width=\"180\" Height=\"2\" Fill=\"{ThemeResource SystemControlHighlightAccentBrush}\" x:Name=\"SelectionHintBar\" Opacity=\"0\" />\n                                            </Grid>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n\n                            <Style x:Key=\"BaseContentControlStyle\" TargetType=\"ContentControl\">\n                                <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n                                <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\n                                <Setter Property=\"FontSize\" Value=\"15\"/>\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"ContentControl\">\n                                            <ContentPresenter Content=\"{TemplateBinding Content}\"\n                                                                ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                                                                Margin=\"{TemplateBinding Padding}\"\n                                                                ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n                                                                HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                                                VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                                                OpticalMarginAlignment=\"TrimSideBearings\"/>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n                            <Style x:Key=\"TitleContentControlStyle\" TargetType=\"ContentControl\" BasedOn=\"{StaticResource BaseContentControlStyle}\">\n                                <Setter Property=\"FontWeight\" Value=\"SemiLight\"/>\n                                <Setter Property=\"FontSize\" Value=\"24\"/>\n                            </Style>\n                        </Grid.Resources>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"Orientation\">\n                                <VisualState x:Name=\"Portrait\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotPortraitThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Landscape\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotLandscapeThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"NavigationButtonsVisibility\">\n                                <VisualState x:Name=\"NavigationButtonsHidden\" />\n                                <VisualState x:Name=\"NavigationButtonsVisible\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"HeaderStates\">\n                                <VisualState x:Name=\"HeaderDynamic\" />\n                                <VisualState x:Name=\"HeaderStatic\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Header\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"StaticHeader\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"*\" />\n                        </Grid.RowDefinitions>\n                        <ContentControl                                x:Name=\"TitleContentControl\"\n                            IsTabStop=\"False\"\n                            Margin=\"{StaticResource PivotPortraitThemePadding}\"\n                            Style=\"{StaticResource TitleContentControlStyle}\"\n                            Visibility=\"Collapsed\"\n                            Content=\"{TemplateBinding Title}\"\n                            ContentTemplate=\"{TemplateBinding TitleTemplate}\"/>\n                        <Grid Grid.Row=\"1\">\n                            <Grid.Resources>\n                                <ControlTemplate x:Key=\"NextTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E3;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                                <ControlTemplate x:Key=\"PreviousTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E2;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                            </Grid.Resources>\n                            <ScrollViewer\n                                x:Name=\"ScrollViewer\"\n                                Margin=\"{TemplateBinding Padding}\"\n                                HorizontalSnapPointsType=\"MandatorySingle\"\n                                HorizontalSnapPointsAlignment=\"Center\"\n                                HorizontalScrollBarVisibility=\"Hidden\"\n                                VerticalScrollMode=\"Disabled\"\n                                VerticalScrollBarVisibility=\"Disabled\"\n                                VerticalSnapPointsType=\"None\"\n                                VerticalContentAlignment=\"Stretch\"\n                                ZoomMode=\"Disabled\"\n                                Template=\"{StaticResource ScrollViewerScrollBarlessTemplate}\"\n                                BringIntoViewOnFocusChange=\"False\">\n\n                                <PivotPanel x:Name=\"Panel\" VerticalAlignment=\"Stretch\">\n                                    <Grid x:Name=\"PivotLayoutElement\">\n                                        <Grid.RowDefinitions>\n                                            <RowDefinition Height=\"Auto\" />\n                                            <RowDefinition Height=\"*\" />\n                                        </Grid.RowDefinitions>\n                                        <Grid.ColumnDefinitions>\n\n                                            <!-- By setting this to *,Auto,* the Header panel would be centered -->\n                                            <ColumnDefinition Width=\"8\" />\n                                            <ColumnDefinition Width=\"Auto\" />\n                                            <ColumnDefinition Width=\"*\" />\n                                        </Grid.ColumnDefinitions>\n                                        <Grid.RenderTransform>\n                                            <CompositeTransform x:Name=\"PivotLayoutElementTranslateTransform\" />\n                                        </Grid.RenderTransform>\n\n                                        <!-- Provides a background color behind the entire width of the header area -->\n                                        <Border Grid.ColumnSpan=\"3\" Background=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                        <ContentPresenter\n                                      x:Name=\"LeftHeaderPresenter\"\n                                      Content=\"{TemplateBinding LeftHeader}\"\n                                      ContentTemplate=\"{TemplateBinding LeftHeaderTemplate}\"\n                                      HorizontalAlignment=\"Stretch\"\n                                      VerticalAlignment=\"Stretch\" />\n                                        <ContentControl\n                                      x:Name=\"HeaderClipper\"\n                                      Grid.Column=\"1\"\n                                      UseSystemFocusVisuals=\"True\"\n                                      HorizontalContentAlignment=\"Stretch\">\n                                            <ContentControl.Clip>\n                                                <RectangleGeometry x:Name=\"HeaderClipperGeometry\" />\n                                            </ContentControl.Clip>\n                                            <Grid Background=\"Transparent\">\n                                                <PivotHeaderPanel x:Name=\"StaticHeader\" Visibility=\"Collapsed\" />\n                                                <PivotHeaderPanel x:Name=\"Header\">\n                                                    <PivotHeaderPanel.RenderTransform>\n                                                        <TransformGroup>\n                                                            <CompositeTransform x:Name=\"HeaderTranslateTransform\" />\n                                                            <CompositeTransform x:Name=\"HeaderOffsetTranslateTransform\" />\n                                                        </TransformGroup>\n                                                    </PivotHeaderPanel.RenderTransform>\n                                                </PivotHeaderPanel>\n                                            </Grid>\n                                        </ContentControl>\n                                        <Button\n                                        x:Name=\"PreviousButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource PreviousTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Left\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <Button\n                                        x:Name=\"NextButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource NextTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Right\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <ContentPresenter\n                                        x:Name=\"RightHeaderPresenter\"\n                                        Grid.Column=\"2\"\n                                        Content=\"{TemplateBinding RightHeader}\"\n                                        ContentTemplate=\"{TemplateBinding RightHeaderTemplate}\"\n                                        HorizontalAlignment=\"Stretch\"\n                                        VerticalAlignment=\"Stretch\" />\n                                        <ItemsPresenter x:Name=\"PivotItemPresenter\" Grid.Row=\"1\" Grid.ColumnSpan=\"3\">\n                                            <ItemsPresenter.RenderTransform>\n                                                <TransformGroup>\n                                                    <TranslateTransform x:Name=\"ItemsPresenterTranslateTransform\" />\n                                                    <CompositeTransform x:Name=\"ItemsPresenterCompositeTransform\" />\n                                                </TransformGroup>\n                                            </ItemsPresenter.RenderTransform>\n                                        </ItemsPresenter>\n                                    </Grid>\n                                </PivotPanel>\n                            </ScrollViewer>\n                        </Grid>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOPivot.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOPivot/TODOPivot/TODOPivot.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TODOPivot</RootNamespace>\n    <AssemblyName>TODOPivot</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>TODO_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>1b8df4b3</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ToDoEditorContentDialog.xaml.cs\">\n      <DependentUpon>ToDoEditorContentDialog.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"TODO_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Converters\\Converters.readme.htm\" />\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\PivotTabsStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\ToDoEditorContentDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "TODOPivot/TODOPivot/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOPivot.Mvvm;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOPivot.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                this.TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                this.TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(1000);\n                var data = _todoListRepository.Sample(2).Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    this.TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing TODOPivot.Models;\n\nnamespace TODOPivot.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace TODOPivot.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            this.TodoList = list;\n            foreach (var item in list.Items)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                this.TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                this.TodoList.Items.Remove(this.SelectedItem.TodoItem);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"TODOPivot.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOPivot.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:TODOPivot.ViewModels\"\n    xmlns:models=\"using:TODOPivot.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n                <ResourceDictionary Source=\"ms-appx:///Styles/PivotTabsStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Icon=\"Edit\" Label=\"rename list\" Click=\"EditListButtonClicked\"/>\n            <AppBarButton Icon=\"Delete\" Label=\"delete list\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Bottom\">\n                        <Button Content=\"Are you sure?\" Click=\"DeleteListConfirmationButtonClicked\" />\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n\n        <Pivot x:Name=\"MainPivot\" ItemsSource=\"{Binding TodoLists}\" Style=\"{StaticResource TabsPivotWithLeftHeaders}\">\n            <Pivot.TitleTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                        <Grid HorizontalAlignment=\"Right\" Grid.Column=\"1\" Margin=\"0,-8,0,0\" RenderTransformOrigin=\"0.5,0.5\">\n                            <Grid.RenderTransform>\n                                <CompositeTransform ScaleY=\"0.75\" ScaleX=\"0.75\"/>\n                            </Grid.RenderTransform>\n                            <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                            <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                        </Grid>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.TitleTemplate>\n\n            <Pivot.HeaderTemplate>\n                <DataTemplate>\n                    <Grid >\n                        <!-- list title -->\n                        <TextBlock Text=\"{Binding TodoList.Title}\" Style=\"{StaticResource CaptionTextBlockStyle}\" FontSize=\"20\"/>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.HeaderTemplate>\n\n            <Pivot.ItemTemplate>\n                <DataTemplate>\n                    <ListView Padding=\"0,0,0,12\" Margin=\"0,8,0,0\" Grid.Row=\"2\"\n                                IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                        <ListView.Background>\n                            <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                        </ListView.Background>\n                        <ListView.ItemContainerTransitions>\n                            <TransitionCollection>\n                                <AddDeleteThemeTransition />\n                            </TransitionCollection>\n                        </ListView.ItemContainerTransitions>\n                        <ListView.ItemContainerStyle>\n                            <Style TargetType=\"ListViewItem\">\n                                <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            </Style>\n                        </ListView.ItemContainerStyle>\n                        <ListView.Header>\n                            <StackPanel Orientation=\"Horizontal\">\n                                <!-- create new item -->\n                                <TextBox KeyDown=\"TextBox_KeyDown\" Width=\"260\" PlaceholderText=\"Add a new task\" \n                                         Margin=\"24,0,0,12\" />\n                                <AppBarButton Icon=\"Accept\" Loaded=\"AddNewItemConfirmButton_Loaded\"\n                                              IsEnabled=\"False\" Click=\"AddNewItemConfirmButton_Click\" \n                                              RenderTransformOrigin=\"0.5,0.5\" Margin=\"0,-8,0,0\">\n                                    <AppBarButton.RenderTransform>\n                                        <CompositeTransform ScaleX=\"0.75\" ScaleY=\"0.75\"/>\n                                    </AppBarButton.RenderTransform>\n                                </AppBarButton>\n                            </StackPanel>\n                        </ListView.Header>\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Height=\"48\">\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"48\" />\n                                        <ColumnDefinition Width=\"*\" />\n                                        <ColumnDefinition Width=\"48\" />\n                                    </Grid.ColumnDefinitions>\n\n                                    <!-- item checked -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                    <!-- item title -->\n                                    <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                    <!-- item strikethrough -->\n                                    <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                    <!-- item star -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                </DataTemplate>\n            </Pivot.ItemTemplate>\n        </Pivot>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing TODOPivot.ViewModels;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace TODOPivot.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            //this.TodoEditorDialog.DataContext = e.ClickedItem;\n            //await this.TodoEditorDialog.ShowAsync();\n\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            var itemEditorDialog = new ToDoEditorContentDialog();\n            itemEditorDialog.DataContext = e.ClickedItem;\n            itemEditorDialog.SecondaryButtonCommand = toDoListVM.RemoveCommand;\n            itemEditorDialog.SecondaryButtonCommandParameter = ((TodoItemViewModel)(e.ClickedItem)).TodoItem;\n            await itemEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n\n            this.ListEditorDialog.DataContext = data.TodoList;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private TextBox NewToDoItemNameTextBox = null;\n\n        private AppBarButton AddNewItemConfirmButton = null;\n\n        private void AddNewItemConfirmButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            // This button is in a data template, so we can use the Loaded event to get a reference to it\n            // You can't get at controls in Data Templates in Item Templates using their name\n            AddNewItemConfirmButton = sender as AppBarButton;\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            NewToDoItemNameTextBox = textBox;\n\n            if (!string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = true;\n\n                if (e.Key == Windows.System.VirtualKey.Enter)\n                {\n                    // Handle 'Enter' key for keyboard users\n                    if (e.Key == Windows.System.VirtualKey.Enter)\n                    {\n                        e.Handled = true;\n                        CreateNewToDoItem(textBox);\n                    }\n                }\n            }\n            else\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = false;\n            }\n        }\n\n        private void CreateNewToDoItem(TextBox textBox)\n        {\n            var list = textBox.DataContext as ViewModels.TodoListViewModel;\n            list.AddCommand.Execute(textBox.Text);\n            textBox.Text = string.Empty;\n            textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n\n            if (AddNewItemConfirmButton != null)\n                AddNewItemConfirmButton.IsEnabled = false;\n        }\n\n        private void AddNewItemConfirmButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (NewToDoItemNameTextBox != null)\n            {\n                CreateNewToDoItem(NewToDoItemNameTextBox);\n            }\n        }\n\n        private async void EditListButtonClicked(object sender, RoutedEventArgs e)\n        {\n            this.ListEditorDialog.DataContext = ((TodoListViewModel)MainPivot.SelectedItem).TodoList;\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void DeleteListConfirmationButtonClicked(object sender, RoutedEventArgs e)\n        {\n            var currentList = (TodoListViewModel)MainPivot.SelectedItem;\n            var vm = this.DataContext as ViewModels.MainPageViewModel;\n            if (vm.RemoveListCommand.CanExecute(currentList))\n            {\n                vm.RemoveListCommand.Execute(currentList);\n            }\n        }\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            var toDoItemVM = sender.DataContext as TodoItemViewModel;\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            if (toDoListVM.RemoveCommand.CanExecute(toDoItemVM.TodoItem))\n            {\n                toDoListVM.RemoveCommand.Execute(toDoItemVM.TodoItem);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Views/ToDoEditorContentDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"TODOPivot.Views.ToDoEditorContentDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOPivot.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    Title=\"Edit ToDo Item\" \n    PrimaryButtonText=\"Close\" \n    SecondaryButtonText=\"Delete\" \n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"360\">\n\n    <ContentDialog.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </ContentDialog.Resources>\n\n    <ContentDialog.Content>\n        <StackPanel Margin=\"12,0,0,0\">\n            <Grid>\n                <StackPanel>\n                    <Grid Width=\"300\">\n                        <!-- item checked -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Content=\"Is Complete?\" HorizontalAlignment=\"Left\"/>\n                        <!-- item star -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Style=\"{StaticResource StarCheckBoxStyle}\" HorizontalAlignment=\"Right\"/>\n                    </Grid>\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" \n                                     Margin=\"0,12,0,0\" />\n                    <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" \n                                     Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" \n                                        Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n\n            </Grid>\n        </StackPanel>\n    </ContentDialog.Content>\n</ContentDialog>\n"
  },
  {
    "path": "TODOPivot/TODOPivot/Views/ToDoEditorContentDialog.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing TODOPivot.ViewModels;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace TODOPivot.Views\n{\n    public sealed partial class ToDoEditorContentDialog : ContentDialog\n    {\n        public ToDoEditorContentDialog()\n        {\n            this.InitializeComponent();\n        }\n\n        public event EventHandler<TodoItemViewModel> DeleteTodoItemClicked;\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            if (DeleteTodoItemClicked != null)\n            {\n                DeleteTodoItemClicked(this, (TodoItemViewModel)this.DataContext);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOPivot/TODOPivot/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "TODOPivot/TODOPivot.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TODOPivot\", \"TODOPivot\\TODOPivot.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"TODOSQLiteSample.App\" xmlns:common=\"using:TODOSQLiteSample.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:TODOSQLiteSample.Converters\"\n                     xmlns:local=\"using:TODOSQLiteSample\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing TODOSQLiteSample.Services.SQLiteService;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOSQLiteSample\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            this.InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            // Load the database\n            SQLiteService.LoadDatabase();\n\n            this.NavigationService.Navigate(typeof(Views.MainPage));\n\n            return Task.FromResult<object>(null);\n        }\n\n        protected async override Task OnSuspendingAsync(object s, SuspendingEventArgs e)\n        {\n            // Dirty hack until I can figure out how to fix OnNavigatedFrom behaviour\n            var deferral = e.SuspendingOperation.GetDeferral();\n            // Give enough time for the file storage to work when app is suspending\n            await Task.Delay(500);\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\n\nnamespace TODOSQLiteSample.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            this.Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            this.Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                this.NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await this.OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (this.SplashFactory != null)\n            {\n                splashScreen = this.SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            this.RootFrame = this.RootFrame ?? new Frame();\n            this.RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            this.NavigationService = new Services.NavigationService.NavigationService(this.RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODOSQLiteSample: restore state */ }\n                finally { await this.OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await this.OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = this.RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (this.RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Converters/Converters.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Converters folder</h1>\n                <ul>Value Converters are used in XAML data binding to change the output of a property to a more-desiarable string.</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Converter?</h2>\n                <p>\n                    In XAML data binding, the default presentation of a property's value is the result of its [ToString] method.\n                    Since, in .Net, every [class] inherits from [object] and since [object] ensures the [ToString] method,\n                    it is the only reliable default XAML could use to present a value. In effect, XAML is using a default, built-in\n                    Value Converter unless it is provided an alternate, custom Value Converter.\n                </p>\n                <p>\n                    Sometimes a developer or designer wants a property's value presented in a way different than the default.\n                    For example, in the case of a DateTime property the default format is \"4/22/2015 4:09:39 PM\". This\n                    format may be accurate, but it is not friendly. What you might want is \"April 22, 2015\". To accomplish\n                    this format in C#, you could use <span style=\"font-family: 'Courier New';\">DateTime.ToString(\"m\");</span>.\n                    To accomplish it in XAML you use a Value Converter with the same C# logic inside.\n                </p>\n                <h2>IValueConverter</h2>\n                <p>\n                    A XAML Value Converter is just a C# class. It must implment [IValueConverter], which may be found in the\n                    [Windows.UI.Xaml.Data] namespace. This interface requires the [Convert] and the [ConvertBack] methods,\n                    though most converters do not implement the [ConvertBack] method. This is generally because they are\n                    [readonly] operations; the [ConvertBack] method is only used when writing back to a property which is\n                    an uncommon scenario for a value converter.\n                </p>\n                <p>\n                    When XAML binds a property, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Apply the default Value Converter</li>\n                        <li>Present the result</li>\n                    </ol>\n                    With a Custom Value Converter, it follows this process:\n                    <ol>\n                        <li>Read the property</li>\n                        <li>Pass the property value through the Custom Value Converter's [Convert] method</li>\n                        <li>Present the result</li>\n                    </ol>\n                    This ability to inject into the presentation pipeline gives the developer\n                    considerable control over the presentation of data.\n                </p>\n                <h2>Performance Caveat</h2>\n                <p>\n                    Value Converters, like any executing code, have a cost to process. As a result, it is generally not recommended\n                    to use Custom Value Converters in repeating data, especially when the quantity of data is quite high. The reason\n                    for this is that the Value Converter has to be instantiated for each item and creates a binding performance penalty.\n                </p>\n                <p>\n                    Sometimes a value in repeating data needs to be converted before it is displayed. If this is the case, creating\n                    a new property in the [Model] that handles the formatting is far more cost effective than using a Value Converter.\n                    For example, you might have the property <span style=\"font-family: 'Courier New';\">DateTime DueDate</span> but\n                    will also create a companion, [readonly] property called <span style=\"font-family: 'Courier New';\"> String DueDateFormatted</span>.\n                    The C# syntax is nearly the same as the Value Converter. The developer simply trades the reusability\n                    and declarability of a Value Converter for improved (or maintained) performance.\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOSQLiteSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOSQLiteSample.Converters] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>DateTimeFormatConverter.cs</b></li>\n                </ol>\n                <p>\n                    [DateTimeFormatConverter] is a one-way converter that takes a [DateTime] value and applies the\n                    format string supplied in the [CommandParameter] argument. The incoming value must be\n                    a [DateTime] and cannot be a [DateTime?].\n                </p>\n                <ul>\n                    Format string <a href=\"https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx\" target=\"_blank\">reference</a>.\n                </ul>\n                <ol start=\"2\">\n                    <li><b>StateToStringConverter.cs</b></li>\n                </ol>\n                <p>\n                    Unique to this application is the States ENUM (defined in /Models/States.cs) that represents\n                    the current state of a TodoItem (defined in /Models/TodoItem.cs). One possible state, for example is\n                    NotStarted. Notice how it has no space. The [StateToStringConverter] is a one-way converter that\n                    takes a [State] value and returns a custom string, like \"Not Started\".\n                </p>\n                <ul>\n                    Note: this converter does not apply localization the returned string. It is hard coded.\n                </ul>\n                <ol start=\"3\">\n                    <li><b>ValueWhenConverter.cs</b></li>\n                </ol>\n                <p>\n                    The [ValueWhenConverter] is a powerful, reusable converter. It is a one-way converter that\n                    accepts some variable value, testing it against its own [When] property using the [Equals]\n                    method (which is defined on every object in .Net). If [Equals] returns true, it returns\n                    its own [When] property. If it returns false, it returns its own [Otherwise] property.\n                </p>\n                <p>\n                    Because the developer can define [Value], [When], and [Otherwise] this converter can be reused\n                    to meet the requirements of several common (90%) scenarios such as \"VisibleWhenFalse\" or \n                    \"VisibleWhenZero\" or any other values that can be declared in XAML. As a result, the\n                    [ValueWhenConverter] can resude the number of unique converters in a project. That being said,\n                    it cannot meet every need and custom converters may still be necessary. \n                </p>\n                Sample syntax\n<pre>\n&lt;c:valuewhenconverter \n        x:name=\"VisibleWhenZeroConverter\"&gt;\n\n    &lt;c:valuewhenconverter.when&gt;\n        &lt;x:int32&gt;0&lt;/x:int32&gt;\n    &lt;/c:valuewhenconverter.when&gt;\n\n    &lt;c:valuewhenconverter.value&gt;\n        &lt;visibility&gt;Visible&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.value&gt;\n\n    &lt;c:valuewhenconverter.otherwise&gt;\n        &lt;visibility&gt;Collapsed&lt;/visibility&gt;\n    &lt;/c:valuewhenconverter.otherwise&gt;\n\n&lt;/c:valuewhenconverter&gt;\n</pre>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOSQLiteSample.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace TODOSQLiteSample.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return this.Value;\n                return this.Otherwise;\n            }\n            catch\n            {\n                return this.Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Models/Models.readme.htm",
    "content": "﻿<!DOCTYPE html>\n\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Template 10 Help</title>\n</head>\n<body style=\"font-family: 'Segoe UI'; margin: 20px auto 20px auto; width: 800px;\">\n    <table cellpadding=\"10\">\n        <tr>\n            <td width=\"50%\" valign=\"top\">\n                <h3>Template 10 Help</h3>\n                <h1>The Models folder</h1>\n                <ul>Models are simple classes that hold data. It is very unusual that a Model has any other functionality (methods or events).</ul>\n            </td>\n            <td width=\"50%\"></td>\n        </tr>\n        <tr>\n            <td valign=\"top\">\n                <h2>What's a Model?</h2>\n                <p>\n                    Most applications use data. It could be a User profile or a Todo item. The record can be persisted in a database or\n                    a file - that is up to the developer. But software needs to represent data as a [class]. It could be in a User\n                    class or a Todo [class]. This [class] structure is the only way an application can use data. It is the only way it\n                    can be loaded into memory. It is up to the developer to figure out how to take the data from their database or\n                    file and fill the [class].\n                </p>\n                <p>\n                    Frameworks like Entity Framework can take a database record and put it in a [class]. Other technologies, like\n                    JSON deserialization can take the JSON emitted by a REST service (which is only a string) and populate a [class]\n                    with it. Whatever method a developer chooses does not matter, data just needs to be represented as a [class].\n                </p>\n                <h3>INotifyPropertyChanged</h3>\n                <p>\n                    In XAML data binding, developers can bind properties of a [UIElement] to a Model (which is a [class]).\n                    The data binding framework recognizes a [class] and knows how to read its properties and present their values\n                    in the user interface. For example, a developer might data bind the FirstName property of the User [class] to\n                    the [Text] property of a XAML [TextBlock]. This would present the FirstName to in the user interface.\n                </p>\n                <p>\n                    XAML can data bind in three ways, called modes. [OneTime] binding reads the value of the property when the\n                    interface is initially rendered, but never reads it again. The other two, [OneWay] and [TwoWay] binding both\n                    require the class implements [INotifyPropertyChanged] so the [PropertyChanged] event is raised when property\n                    values change.\n                </p>\n                <p>\n                    This event is not raised automatically. The developer must raise the event manually in the\n                    setter of the property. Because of this, bindable properties cannot leverage the automatic property\n                    implementation syntax in C#, which looks like: <span style=\"font-family: 'Courier New';\">public String FirstName { get; set; } = String.Empty</span>.\n                    There has been talk about extending the compiler to support [INotifyPropertyChange] with a simple\n                    property attribute, but it is not part of C# 6 or VS 2015.\n                </p>\n                <h3>One implementation</h3>\n                <p>\n                    The implementation of [INotifyPropertyChanged] is quite redundant because a developer would implement it\n                    about the same way in every Model. Because of this, the implementation is wrapped up in another class and\n                    used as the abstract based of every Model. This abstract base is called BindableBase and is located in\n                    the BindableBase.cs file in the project's Mvvm folder. This abstract base is the same in every project\n                    and many MVVM frameworks ship their own version (which is fundamentally identical).\n                </p>\n            </td>\n            <td valign=\"top\" style=\"background-color: palegoldenrod;\">\n                <h2>This folder</h2>\n                <p>\n                    The following files represent the types used to implement the TODOSQLiteSample functionality in this template.\n                    Each of the types in this folder are inside the [TODOSQLiteSample.Models] namespace.\n                </p>\n                <ol start=\"1\">\n                    <li><b>States.cs</b></li>\n                </ol>\n                <p>\n                    A TodoItem can be in one of thre states: NotStarted, InProcess, and Done. These states are defined in\n                    the States ENUM which resides in the [States.cs] file in this folder. Developers use an ENUM to constrain\n                    the possible values of a property to a set list.\n                </p>\n                <ol start=\"2\">\n                    <li><b>TodoItem.cs</b></li>\n                </ol>\n                <p>\n                    A TODOSQLiteSample list contains zero or more tasks. In this application, we call those TodoItems. This is a class\n                    that has the task's Title, as well as other properties like State and DueDate. A TodoItem is intended to\n                    be a member of a TodoList.\n                </p>\n                <ol start=\"3\">\n                    <li><b>TodoList.cs</b></li>\n                </ol>\n                <p>\n                    This TODOSQLiteSample application allows the user to create more than one TodoList. For example, the user might create\n                    a \"grocery\" TODOSQLiteSample list and a \"vacation\" TODOSQLiteSample list. A TodoItem can be the child of only one TodoList. And,\n                    A TodoList can have any number of TodoItems as children.\n                </p>\n            </td>\n        </tr>\n    </table>\n    <h3>//End</h3>\n</body>\n</html>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace TODOSQLiteSample.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Id = default(string);\n        public string Id { get { return _Id; } set { Set(ref _Id, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n\n        private string _ListId = default(string);\n        public string ListId { get { return _ListId; } set { Set(ref _ListId, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace TODOSQLiteSample.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Id = Guid.NewGuid().ToString();\n        public string Id { get { return _Id; } set { Set(ref _Id, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace TODOSQLiteSample.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace TODOSQLiteSample.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            return Task.FromResult<object>(null);\n        }\n\n        public virtual Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending)\n        {\n            return Task.FromResult<object>(null);\n        }\n\n    }\n}"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"3BA18331-402B-491A-A0AD-8C2484678CF6\"\n    Publisher=\"CN=andy\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"3BA18331-402B-491A-A0AD-8C2484678CF6\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>TODOSQLite</DisplayName>\n    <PublisherDisplayName>andy</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"TODO.App\">\n      <uap:VisualElements\n        DisplayName=\"TODOSQLite\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"TODOSQLite\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TODOSQLiteSample\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TODOSQLiteSample\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n\n  <!-- Enable dynamic access to types that Application Insights requires -->\n  <Library Name=\"*Microsoft.ApplicationInsights*\">\n    <Type Name=\"Windows.ApplicationModel.Core.CoreApplication\" Dynamic=\"Required Public\" />\n  </Library>\n</Directives>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Repositories/TableSQLiteRepoBase.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing TODOSQLiteSample.Services.SQLiteService;\n\nnamespace TODOSQLiteSample.Repositories\n{\n    public abstract class TableSQLiteRepoBase<TItemType, TKeyType>\n    {\n        protected abstract string GetSelectAllSql();\n        protected abstract void FillSelectAllStatement(ISQLiteStatement statement);\n\n        protected abstract TItemType CreateItem(ISQLiteStatement statement);\n\n        protected abstract string GetSelectItemSql();\n        protected abstract void FillSelectItemStatement(ISQLiteStatement statement, TKeyType key);\n\n        protected abstract string GetDeleteItemSql();\n        protected abstract void FillDeleteItemStatement(ISQLiteStatement statement, TKeyType key);\n\n        protected abstract string GetInsertItemSql();\n        protected abstract void FillInsertStatement(ISQLiteStatement statement, TItemType item);\n\n        protected abstract string GetUpdateItemSql();\n        protected abstract void FillUpdateStatement(ISQLiteStatement statement, TKeyType key, TItemType item);\n\n        protected DateTime lastModifiedTime = DateTime.MaxValue;\n        public virtual DateTime Timestamp\n        {\n            get { return lastModifiedTime; }\n            protected set { lastModifiedTime = value; }\n        }\n\n        private ISQLiteConnection sqlConnection\n        {\n            get\n            {\n                return SQLiteService.conn;\n            }\n        }\n\n        public ObservableCollection<TItemType> GetAllItems()\n        {\n            var items = new ObservableCollection<TItemType>();\n            using (var statement = sqlConnection.Prepare(GetSelectAllSql()))\n            {\n                FillSelectAllStatement(statement);\n                while (statement.Step() == SQLiteResult.ROW)\n                {\n                    var item = CreateItem(statement);\n                    items.Add(item);\n                }\n            }\n            Timestamp = DateTime.Now;\n\n            return items;\n        }\n\n        public TItemType GetItem(TKeyType key)\n        {\n            using (var statement = sqlConnection.Prepare(GetSelectItemSql()))\n            {\n                FillSelectItemStatement(statement, key);\n\n                if (statement.Step() == SQLiteResult.ROW)\n                {\n                    var item = CreateItem(statement);\n                    Timestamp = DateTime.Now;\n                    return item;\n                }\n            }\n\n            throw new ArgumentOutOfRangeException(\"key not found\");\n        }\n\n        public void InsertItem(TItemType item)\n        {\n            using (var statement = sqlConnection.Prepare(GetInsertItemSql()))\n            {\n                FillInsertStatement(statement, item);\n                statement.Step();\n            }\n            Timestamp = DateTime.Now;\n        }\n\n        public void UpdateItem(TKeyType key, TItemType item)\n        {\n            using (var statement = sqlConnection.Prepare(GetUpdateItemSql()))\n            {\n                FillUpdateStatement(statement, key, item);\n                statement.Step();\n            }\n            Timestamp = DateTime.Now;\n        }\n\n        public void DeleteItem(TKeyType key)\n        {\n            using (var statement = sqlConnection.Prepare(GetDeleteItemSql()))\n            {\n                FillDeleteItemStatement(statement, key);\n                statement.Step();\n            }\n            Timestamp = DateTime.Now;\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Repositories/TodoItemRepository.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOSQLiteSample.Models;\n\nnamespace TODOSQLiteSample.Repositories\n{\n    public class TodoItemRepository : TableSQLiteRepoBase<TodoItem, string>\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Id = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n\n        private TodoItemRepository(string todoListId)\n        {\n            ToDoListId = todoListId;\n        }\n\n        private TodoItemRepository()\n        {\n            ToDoListId = string.Empty;\n        }\n\n\n        static Dictionary<string, TodoItemRepository> instances = new Dictionary<string, TodoItemRepository>();\n        static TodoItemRepository defaultInstance;\n\n        public override DateTime Timestamp\n        {\n            get\n            {\n                if (this == defaultInstance || defaultInstance == null)\n                    return base.Timestamp;\n\n                return defaultInstance.Timestamp;\n            }\n            protected set\n            {\n                if (this == defaultInstance || defaultInstance == null)\n                    base.Timestamp = value;\n                else\n                    defaultInstance.Timestamp = value;\n            }\n        }\n\n        public static TodoItemRepository GetForToDoListId(string todoListId)\n        {\n            lock (typeof(TodoItemRepository))\n            {\n                if (instances.ContainsKey(todoListId) != true)\n                    instances[todoListId] = new TodoItemRepository(todoListId);\n            }\n\n            return instances[todoListId];\n        }\n\n        public static TodoItemRepository GetDefault()\n        {\n            lock (typeof(TodoItemRepository))\n            {\n                if (defaultInstance == null)\n                    defaultInstance = new TodoItemRepository();\n            }\n\n            return defaultInstance;\n        }\n\n        public string ToDoListId { get; private set; }\n\n        protected override string GetSelectAllSql()\n        {\n            if (string.IsNullOrEmpty(ToDoListId))\n                return @\"SELECT Id, Title, DueDate, Details, IsFavorite, IsComplete, ListId \n                           FROM ToDoItem\n                           ORDER BY DueDate\";\n            else\n                return @\"SELECT Id, Title, DueDate, Details, IsFavorite, IsComplete, ListId \n                           FROM ToDoItem\n                           WHERE ListId = ?\n                           ORDER BY DueDate\";\n        }\n\n        protected override void FillSelectAllStatement(ISQLiteStatement statement)\n        {\n            if (string.IsNullOrEmpty(ToDoListId))\n                return;\n\n            statement.Bind(1, ToDoListId);\n        }\n\n        protected override TodoItem CreateItem(ISQLiteStatement statement)\n        {\n            TodoItem todoItem = new TodoItem()\n            {\n                Id = (string)statement[0],\n                Title = (string)statement[1],\n                DueDate = DateTime.Parse((string)statement[2]),\n                Details = (string)statement[3],\n                IsFavorite = ((long)statement[4]) == 1 ? true : false,\n                IsComplete = ((long)statement[5]) == 1 ? true : false,\n                ListId = (string)statement[6],\n            };\n\n            Debug.WriteLine(\"Selected ToDoItem Title:\" + todoItem.Title);\n            return todoItem;\n        }\n\n        protected override string GetSelectItemSql()\n        {\n            return @\"SELECT Id, Title, DueDate, Details, IsFavorite, IsComplete, ListId \n                           FROM ToDoItem\n                           WHERE Id = ?\";\n        }\n\n        protected override void FillSelectItemStatement(ISQLiteStatement statement, string key)\n        {\n            statement.Bind(1, key);\n        }\n\n        protected override string GetDeleteItemSql()\n        {\n            return \"DELETE FROM ToDoItem WHERE Id = ?\";\n        }\n\n        protected override void FillDeleteItemStatement(ISQLiteStatement statement, string key)\n        {\n            statement.Bind(1, key);\n        }\n\n        protected override string GetInsertItemSql()\n        {\n            return \"INSERT INTO ToDoItem (Id, Title, DueDate, Details, IsFavorite, IsComplete, ListId) VALUES (?, ?, ?, ?, ?, ?, ?)\";\n        }\n\n        protected override void FillInsertStatement(ISQLiteStatement statement, TodoItem item)\n        {\n            statement.Bind(1, item.Id);\n            statement.Bind(2, item.Title);\n            statement.Bind(3, item.DueDate.ToString(\"yyyy-MM-dd HH:mm:ss\"));\n            statement.Bind(4, item.Details);\n            statement.Bind(5, item.IsFavorite ? 1 : 0);\n            statement.Bind(6, item.IsComplete ? 1 : 0);\n            statement.Bind(7, item.ListId);\n        }\n\n        protected override string GetUpdateItemSql()\n        {\n            return \"UPDATE ToDoItem SET Id = ?, Title = ?, DueDate = ?, Details = ?, IsFavorite = ?, IsComplete = ?, ListId = ? WHERE Id = ?\";\n        }\n\n        protected override void FillUpdateStatement(ISQLiteStatement statement, string key, TodoItem item)\n        {\n            FillInsertStatement(statement, item);\n            statement.Bind(8, key);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Repositories/TodoListRepository.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOSQLiteSample.Models;\nusing TODOSQLiteSample.ViewModels;\n\nnamespace TODOSQLiteSample.Repositories\n{\n    public class TodoListRepository : TableSQLiteRepoBase<TodoList, string>\n    {\n        //public async Task<List<Models.TodoList>> GetAsync()\n        //{\n        //    return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        //}\n\n        //public async Task<Models.TodoList> GetAsync(string key)\n        //{\n        //    return (await this.GetAsync()).FirstOrDefault(x => x.Id.Equals(key));\n        //}\n\n        //public async Task SaveAsync(List<Models.TodoList> list)\n        //{\n        //    await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        //}\n\n        private TodoListRepository()\n        {\n        }\n\n        static TodoListRepository defaultInstance;\n\n        public static TodoListRepository GetDefault()\n        {\n            lock (typeof(TodoItemRepository))\n            {\n                if (defaultInstance == null)\n                    defaultInstance = new TodoListRepository();\n            }\n\n            return defaultInstance;\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Id = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n//                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title\n//                    ,list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var _todoItemRepository = TodoItemRepository.GetDefault();\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n\n        #region SQL command configuration\n\n        protected override string GetSelectAllSql()\n        {\n            return \"SELECT Id, Title FROM ToDoList\";\n        }\n\n        protected override void FillSelectAllStatement(ISQLiteStatement statement)\n        {\n            // Nothing to do\n        }\n\n        protected override TodoList CreateItem(ISQLiteStatement statement)\n        {\n            var l = new TodoList()\n            {\n                Id = (string)statement[0],\n                Title = (string)statement[1],\n            };\n\n            Debug.WriteLine(\"Selected List title:\" + l.Title);\n            return l;\n        }\n\n        protected override string GetSelectItemSql()\n        {\n            return \"SELECT Id, Title FROM ToDoList WHERE Id = ?\";\n        }\n\n        protected override void FillSelectItemStatement(ISQLiteStatement statement, string key)\n        {\n            statement.Bind(1, key);\n        }\n\n        protected override string GetDeleteItemSql()\n        {\n            return \"DELETE FROM ToDoList WHERE Id = ?\";\n        }\n\n        protected override void FillDeleteItemStatement(ISQLiteStatement statement, string key)\n        {\n            statement.Bind(1, key);\n        }\n\n        protected override string GetInsertItemSql()\n        {\n            return \"INSERT INTO ToDoList (Id, Title) VALUES (@id, @title)\";\n        }\n\n        protected override void FillInsertStatement(ISQLiteStatement statement, TodoList item)\n        {\n            // NOTE that named parameters have a leading \"@\",\":\" or \"$\".\n            statement.Bind(\"@id\", item.Id);\n            statement.Bind(\"@title\", item.Title);\n        }\n\n        protected override string GetUpdateItemSql()\n        {\n            return \"UPDATE ToDoList SET Id = ?, Title = ? WHERE Id = ?\";\n        }\n\n        protected override void FillUpdateStatement(ISQLiteStatement statement, string key, TodoList item)\n        {\n            // NOTE that the first host parameter has an index of 1, not 0.\n            statement.Bind(1, item.Id);\n            statement.Bind(2, item.Title);\n            statement.Bind(3, key);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOSQLiteSample.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // convert to string\n            var _String = Serialize(value);\n            System.Diagnostics.Debug.WriteLine(_String);\n\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting).ConfigureAwait(false);\n            Debug.WriteLine(\"File created/replaced\");\n\n            try\n            {\n                // save string to file\n                await Windows.Storage.FileIO.WriteTextAsync(_File, _String).AsTask().ConfigureAwait(false);\n                Debug.WriteLine(\"Wrote data to file\");\n\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.WriteLine(ex.ToString());\n                throw ex;\n            }\n            Debug.WriteLine(\"Checking if File exists and returning\");\n\n            // result\n            return await FileExistsAsync(key, location).ConfigureAwait(false);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOSQLiteSample.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = this.CurrentPageType;\n            var param = this.CurrentPageParam;\n            this._frame.BackStack.Remove(this._frame.BackStack.Last());\n            this.Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            this.CurrentPageType = e.SourcePageType;\n            this.CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODOSQLiteSample: persist */ }\n        string LastNavigationType { get; set; /* TODOSQLiteSample: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        async void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedFromAsync(null, suspending);\n                }\n            }\n        }\n\n        async void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODOSQLiteSample: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    await dataContext.OnNavigatedToAsync(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODOSQLiteSample */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public async void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                await dataContext.OnNavigatedToAsync(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Services/SQLiteService/SQLiteService.cs",
    "content": "﻿using SQLitePCL;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace TODOSQLiteSample.Services.SQLiteService\n{\n    class SQLiteService\n    {\n        public static SQLiteConnection conn;\n\n        public static void LoadDatabase()\n        {\n            // Get a reference to the SQLite database\n            conn = new SQLiteConnection(\"SQLiteTODO.db\");\n\n            // NOTE - The Id character is actually a GUID which is 36 characters long.\n            // Here we speacify it as VARCHAR(36) - but actually SQLite does not impose a length\n            // limit on columns, nor rigidly enforce data types. \n            // Could have specified CHARACTER(10), VARCHAR(255), TEXT - all would work for a GUID.\n            // SQLite just stores these as 'TEXT' - see http://www.sqlite.org/datatype3.html#expraff\n            string sql = @\"CREATE TABLE IF NOT EXISTS\n                                ToDoList (Id      VARCHAR( 36 ) PRIMARY KEY NOT NULL,\n                                          Title   VARCHAR( 140 ) \n                            );\";\n            using (var statement = conn.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            sql = @\"CREATE TABLE IF NOT EXISTS\n                                ToDoItem (Id         VARCHAR( 36 ) PRIMARY KEY NOT NULL,\n                                         Title       VARCHAR( 140 ),\n                                         DueDate     DATETIME,\n                                         Details     VARCHAR( 140 ),\n                                         IsFavorite  BOOLEAN,\n                                         IsComplete  BOOLEAN,\n                                         ListId      CHAR( 36 ),\n                                         FOREIGN KEY(ListId) REFERENCES ToDoList(Id) ON DELETE CASCADE \n                            )\";\n            using (var statement = conn.Prepare(sql))\n            {\n                statement.Step();\n            }\n\n            // Turn on Foreign Key constraints\n            sql = @\"PRAGMA foreign_keys = ON\";\n            using (var statement = conn.Prepare(sql))\n            {\n                statement.Step();\n            }\n        }\n\n\n        //public async Task<List<T>> ReadAsync<T>(string key)\n        //{\n        //    try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n        //    catch { return new List<T>(); }\n        //}\n\n        //public async Task WriteAsync<T>(string key, List<T> items)\n        //{\n        //    await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        //}\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Styles/PivotTabsStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOSQLiteSample.Styles\">\n\n    <!-- This pivot uses left-oriented Tabs-style headers -->\n    <Style TargetType=\"Pivot\" x:Key=\"TabsPivotWithLeftHeaders\">\n        <Setter Property=\"Margin\" Value=\"0\" />\n        <Setter Property=\"Padding\" Value=\"0\" />\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlHighlightBaseHighBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <Setter Property=\"ItemsPanel\">\n            <Setter.Value>\n                <ItemsPanelTemplate>\n                    <Grid />\n                </ItemsPanelTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Pivot\">\n                    <Grid\n                        x:Name=\"RootElement\"\n                        HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n                        VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n                        Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n\n                            <!-- This PivotHeaderItem is used to provide 'Tabs' style visuals and selection -->\n                            <Style TargetType=\"PivotHeaderItem\" >\n                                <Setter Property=\"Background\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"Height\" Value=\"60\" />\n                                <Setter Property=\"Width\" Value=\"180\" />\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"PivotHeaderItem\">\n                                            <Grid x:Name=\"Grid\" Background=\"{TemplateBinding Background}\">\n                                                <Grid.Resources>\n                                                    <Style x:Key=\"BaseContentPresenterStyle\" TargetType=\"ContentPresenter\">\n                                                        <Setter Property=\"FontFamily\" Value=\"Segoe UI\" />\n                                                        <Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n                                                        <Setter Property=\"FontSize\" Value=\"15\" />\n                                                        <Setter Property=\"TextWrapping\" Value=\"Wrap\" />\n                                                        <Setter Property=\"LineStackingStrategy\" Value=\"MaxHeight\" />\n                                                        <Setter Property=\"TextLineBounds\" Value=\"Full\" />\n                                                        <Setter Property=\"OpticalMarginAlignment\" Value=\"TrimSideBearings\" />\n                                                    </Style>\n                                                    <Style x:Key=\"BodyContentPresenterStyle\" TargetType=\"ContentPresenter\" BasedOn=\"{StaticResource BaseContentPresenterStyle}\">\n                                                    </Style>\n                                                </Grid.Resources>\n                                                <Grid.RowDefinitions>\n                                                    <RowDefinition Height=\"58\" />\n                                                    <RowDefinition Height=\"2\" />\n                                                </Grid.RowDefinitions>\n                                                <VisualStateManager.VisualStateGroups>\n                                                    <VisualStateGroup x:Name=\"SelectionStates\">\n                                                        <VisualStateGroup.Transitions>\n                                                            <VisualTransition From=\"Unselected\" To=\"UnselectedLocked\" GeneratedDuration=\"0:0:0.33\" />\n                                                            <VisualTransition From=\"UnselectedLocked\" To=\"Unselected\" GeneratedDuration=\"0:0:0.33\" />\n                                                        </VisualStateGroup.Transitions>\n                                                        <VisualState x:Name=\"Disabled\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlDisabledBaseLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Unselected\" />\n                                                        <VisualState x:Name=\"UnselectedLocked\">\n                                                            <Storyboard>\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenterTranslateTransform\" Storyboard.TargetProperty=\"X\" \n                                                                     Duration=\"0\" To=\"{ThemeResource PivotHeaderItemLockedTranslation}\" />\n                                                                <DoubleAnimation Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                                     Duration=\"0\" To=\"0\" />\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"Selected\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPointerOver\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumLowBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"UnselectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                        <VisualState x:Name=\"SelectedPressed\">\n                                                            <Storyboard>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Grid\" Storyboard.TargetProperty=\"Background\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SelectionHintBar\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAccentBrush}\" />\n                                                                </ObjectAnimationUsingKeyFrames>\n                                                            </Storyboard>\n                                                        </VisualState>\n                                                    </VisualStateGroup>\n                                                </VisualStateManager.VisualStateGroups>\n\n                                                <ContentPresenter x:Name=\"ContentPresenter\" \n                                              Content=\"{TemplateBinding Content}\" \n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\" \n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" \n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" \n                                              Margin=\"0\" \n                                              Style=\"{StaticResource BodyContentPresenterStyle}\"\n                                              FontSize=\"12\"\n                                              LineHeight=\"14\"\n                                              Foreground=\"{ThemeResource SystemControlForegroundBaseMediumBrush}\"\n                                              Grid.RowSpan=\"2\">\n                                                    <ContentPresenter.RenderTransform>\n                                                        <TranslateTransform x:Name=\"ContentPresenterTranslateTransform\" />\n                                                    </ContentPresenter.RenderTransform>\n                                                </ContentPresenter>\n\n                                                <Rectangle Grid.Row=\"1\" Width=\"180\" Height=\"2\" Fill=\"{ThemeResource SystemControlHighlightAccentBrush}\" x:Name=\"SelectionHintBar\" Opacity=\"0\" />\n                                            </Grid>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n\n                            <Style x:Key=\"BaseContentControlStyle\" TargetType=\"ContentControl\">\n                                <Setter Property=\"FontFamily\" Value=\"Segoe UI\"/>\n                                <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\n                                <Setter Property=\"FontSize\" Value=\"15\"/>\n                                <Setter Property=\"Template\">\n                                    <Setter.Value>\n                                        <ControlTemplate TargetType=\"ContentControl\">\n                                            <ContentPresenter Content=\"{TemplateBinding Content}\"\n                                                                ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                                                                Margin=\"{TemplateBinding Padding}\"\n                                                                ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n                                                                HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                                                VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                                                OpticalMarginAlignment=\"TrimSideBearings\"/>\n                                        </ControlTemplate>\n                                    </Setter.Value>\n                                </Setter>\n                            </Style>\n                            <Style x:Key=\"TitleContentControlStyle\" TargetType=\"ContentControl\" BasedOn=\"{StaticResource BaseContentControlStyle}\">\n                                <Setter Property=\"FontWeight\" Value=\"SemiLight\"/>\n                                <Setter Property=\"FontSize\" Value=\"24\"/>\n                            </Style>\n                        </Grid.Resources>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"Orientation\">\n                                <VisualState x:Name=\"Portrait\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotPortraitThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Landscape\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"TitleContentControl\" Storyboard.TargetProperty=\"Margin\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource PivotLandscapeThemePadding}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"NavigationButtonsVisibility\">\n                                <VisualState x:Name=\"NavigationButtonsHidden\" />\n                                <VisualState x:Name=\"NavigationButtonsVisible\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"NextButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"Opacity\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PreviousButton\" Storyboard.TargetProperty=\"IsEnabled\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                            <VisualStateGroup x:Name=\"HeaderStates\">\n                                <VisualState x:Name=\"HeaderDynamic\" />\n                                <VisualState x:Name=\"HeaderStatic\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Header\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"StaticHeader\" Storyboard.TargetProperty=\"Visibility\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"*\" />\n                        </Grid.RowDefinitions>\n                        <ContentControl                                x:Name=\"TitleContentControl\"\n                            IsTabStop=\"False\"\n                            Margin=\"{StaticResource PivotPortraitThemePadding}\"\n                            Style=\"{StaticResource TitleContentControlStyle}\"\n                            Visibility=\"Collapsed\"\n                            Content=\"{TemplateBinding Title}\"\n                            ContentTemplate=\"{TemplateBinding TitleTemplate}\"/>\n                        <Grid Grid.Row=\"1\">\n                            <Grid.Resources>\n                                <ControlTemplate x:Key=\"NextTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E3;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                                <ControlTemplate x:Key=\"PreviousTemplate\" TargetType=\"Button\">\n                                    <Border\n                                        x:Name=\"Root\"\n                                        Background=\"{ThemeResource SystemControlBackgroundBaseMediumLowBrush}\"\n                                        BorderThickness=\"{ThemeResource PivotNavButtonBorderThemeThickness}\"\n                                        BorderBrush=\"{ThemeResource SystemControlForegroundTransparentBrush}\">\n                                        <VisualStateManager.VisualStateGroups>\n                                            <VisualStateGroup x:Name=\"CommonStates\">\n                                                <VisualState x:Name=\"Normal\" />\n                                                <VisualState x:Name=\"PointerOver\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                                <VisualState x:Name=\"Pressed\">\n                                                    <Storyboard>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Background\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightBaseMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"Arrow\" Storyboard.TargetProperty=\"Foreground\">\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlHighlightAltAltMediumHighBrush}\" />\n                                                        </ObjectAnimationUsingKeyFrames>\n                                                    </Storyboard>\n                                                </VisualState>\n                                            </VisualStateGroup>\n                                        </VisualStateManager.VisualStateGroups>\n                                        <FontIcon\n                                            x:Name=\"Arrow\"\n                                            FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n                                            FontSize=\"12\"\n                                            Foreground=\"{ThemeResource SystemControlForegroundAltMediumHighBrush}\"\n                                            Glyph=\"&#xE0E2;\"\n                                            HorizontalAlignment=\"Center\"\n                                            VerticalAlignment=\"Center\"\n                                            MirroredWhenRightToLeft=\"True\"\n                                            UseLayoutRounding=\"False\" />\n                                    </Border>\n                                </ControlTemplate>\n                            </Grid.Resources>\n                            <ScrollViewer\n                                x:Name=\"ScrollViewer\"\n                                Margin=\"{TemplateBinding Padding}\"\n                                HorizontalSnapPointsType=\"MandatorySingle\"\n                                HorizontalSnapPointsAlignment=\"Center\"\n                                HorizontalScrollBarVisibility=\"Hidden\"\n                                VerticalScrollMode=\"Disabled\"\n                                VerticalScrollBarVisibility=\"Disabled\"\n                                VerticalSnapPointsType=\"None\"\n                                VerticalContentAlignment=\"Stretch\"\n                                ZoomMode=\"Disabled\"\n                                Template=\"{StaticResource ScrollViewerScrollBarlessTemplate}\"\n                                BringIntoViewOnFocusChange=\"False\">\n\n                                <PivotPanel x:Name=\"Panel\" VerticalAlignment=\"Stretch\">\n                                    <Grid x:Name=\"PivotLayoutElement\">\n                                        <Grid.RowDefinitions>\n                                            <RowDefinition Height=\"Auto\" />\n                                            <RowDefinition Height=\"*\" />\n                                        </Grid.RowDefinitions>\n                                        <Grid.ColumnDefinitions>\n\n                                            <!-- By setting this to *,Auto,* the Header panel would be centered -->\n                                            <ColumnDefinition Width=\"8\" />\n                                            <ColumnDefinition Width=\"Auto\" />\n                                            <ColumnDefinition Width=\"*\" />\n                                        </Grid.ColumnDefinitions>\n                                        <Grid.RenderTransform>\n                                            <CompositeTransform x:Name=\"PivotLayoutElementTranslateTransform\" />\n                                        </Grid.RenderTransform>\n\n                                        <!-- Provides a background color behind the entire width of the header area -->\n                                        <Border Grid.ColumnSpan=\"3\" Background=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\" />\n                                        <ContentPresenter\n                                      x:Name=\"LeftHeaderPresenter\"\n                                      Content=\"{TemplateBinding LeftHeader}\"\n                                      ContentTemplate=\"{TemplateBinding LeftHeaderTemplate}\"\n                                      HorizontalAlignment=\"Stretch\"\n                                      VerticalAlignment=\"Stretch\" />\n                                        <ContentControl\n                                      x:Name=\"HeaderClipper\"\n                                      Grid.Column=\"1\"\n                                      UseSystemFocusVisuals=\"True\"\n                                      HorizontalContentAlignment=\"Stretch\">\n                                            <ContentControl.Clip>\n                                                <RectangleGeometry x:Name=\"HeaderClipperGeometry\" />\n                                            </ContentControl.Clip>\n                                            <Grid Background=\"Transparent\">\n                                                <PivotHeaderPanel x:Name=\"StaticHeader\" Visibility=\"Collapsed\" />\n                                                <PivotHeaderPanel x:Name=\"Header\">\n                                                    <PivotHeaderPanel.RenderTransform>\n                                                        <TransformGroup>\n                                                            <CompositeTransform x:Name=\"HeaderTranslateTransform\" />\n                                                            <CompositeTransform x:Name=\"HeaderOffsetTranslateTransform\" />\n                                                        </TransformGroup>\n                                                    </PivotHeaderPanel.RenderTransform>\n                                                </PivotHeaderPanel>\n                                            </Grid>\n                                        </ContentControl>\n                                        <Button\n                                        x:Name=\"PreviousButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource PreviousTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Left\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <Button\n                                        x:Name=\"NextButton\"\n                                        Grid.Column=\"1\"\n                                        Template=\"{StaticResource NextTemplate}\"\n                                        Width=\"20\"\n                                        Height=\"36\"\n                                        UseSystemFocusVisuals=\"False\"\n                                        Margin=\"{ThemeResource PivotNavButtonMargin}\"\n                                        IsTabStop=\"False\"\n                                        IsEnabled=\"False\"\n                                        HorizontalAlignment=\"Right\"\n                                        VerticalAlignment=\"Top\"\n                                        Opacity=\"0\"\n                                        Background=\"Transparent\" />\n                                        <ContentPresenter\n                                        x:Name=\"RightHeaderPresenter\"\n                                        Grid.Column=\"2\"\n                                        Content=\"{TemplateBinding RightHeader}\"\n                                        ContentTemplate=\"{TemplateBinding RightHeaderTemplate}\"\n                                        HorizontalAlignment=\"Stretch\"\n                                        VerticalAlignment=\"Stretch\" />\n                                        <ItemsPresenter x:Name=\"PivotItemPresenter\" Grid.Row=\"1\" Grid.ColumnSpan=\"3\">\n                                            <ItemsPresenter.RenderTransform>\n                                                <TransformGroup>\n                                                    <TranslateTransform x:Name=\"ItemsPresenterTranslateTransform\" />\n                                                    <CompositeTransform x:Name=\"ItemsPresenterCompositeTransform\" />\n                                                </TransformGroup>\n                                            </ItemsPresenter.RenderTransform>\n                                        </ItemsPresenter>\n                                    </Grid>\n                                </PivotPanel>\n                            </ScrollViewer>\n                        </Grid>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOSQLiteSample.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/TODOSQLiteSample.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props\" Condition=\"Exists('..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props')\" />\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>TODOSQLiteSample</RootNamespace>\n    <AssemblyName>TODOSQLiteSample</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>TODO_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"Services\\SQLiteService\\SQLiteService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"Repositories\\TableSQLiteRepoBase.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ToDoEditorContentDialog.xaml.cs\">\n      <DependentUpon>ToDoEditorContentDialog.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"packages.config\" />\n    <None Include=\"TODO_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Converters\\Converters.readme.htm\" />\n    <Content Include=\"Models\\Models.readme.htm\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Styles\\PivotTabsStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\ToDoEditorContentDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"SQLitePCL, Version=3.8.7.2, Culture=neutral, PublicKeyToken=bddade01e9c850c5, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\SQLitePCL.3.8.7.2\\lib\\netcore451\\SQLitePCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"Microsoft.VCLibs.AppLocal, version=14.0\">\n      <Name>Microsoft Visual C++  AppLocal Runtime Package for Windows UAP</Name>\n    </SDKReference>\n    <SDKReference Include=\"SQLite.UAP.2015, Version=3.8.10\">\n      <Name>SQLite for Universal App Platform</Name>\n    </SDKReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.props'))\" />\n    <Error Condition=\"!Exists('..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets\" Condition=\"Exists('..\\packages\\SQLitePCL.3.8.7.2\\build\\netcore451\\SQLitePCL.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TODOSQLiteSample.Mvvm;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace TODOSQLiteSample.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = Repositories.TodoListRepository.GetDefault();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                this.TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update commands\n                this.PropertyChanged += (s, e) =>\n                {\n                    this.AddListCommand.RaiseCanExecuteChanged();\n                    this.RemoveListCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override Task OnNavigatedToAsync(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n            return Task.FromResult<object>(null);\n        }\n\n        //public override async Task OnNavigatedFromAsync(Dictionary<string, object> state, bool suspending)\n        //{\n        //    throw new NotImplementedException();\n        //    //await _todoListRepository.SaveAsync(this.TodoLists.Select(x => x.TodoList).ToList());\n        //}\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                _todoListRepository.InsertItem(item.TodoList);\n                this.TodoLists.Insert(0, item);\n            }\n            catch { }\n        }\n\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _UpdateListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> UpdateListCommand { get { return _UpdateListCommand ?? (_UpdateListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteUpdateListCommand, CanExecuteUpdateListCommand)); } }\n        private bool CanExecuteUpdateListCommand(ViewModels.TodoListViewModel list) { return !Busy; }\n        private void ExecuteUpdateListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                _todoListRepository.UpdateItem(list.TodoList.Id, list.TodoList);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = this.TodoLists.IndexOf(list);\n                _todoListRepository.DeleteItem(list.TodoList.Id);\n                this.TodoLists.Remove(list);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n\n                var data = _todoListRepository.GetAllItems();\n                this.TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.Title))\n                {\n                    this.TodoLists.Add(new ViewModels.TodoListViewModel(item));\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing SQLitePCL;\nusing TODOSQLiteSample.Models;\nusing System.Diagnostics;\n\nnamespace TODOSQLiteSample.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(TodoItem todo)\n        {\n            this.TodoItem = todo;\n        }\n\n        private TodoItem _TodoItem = default(TodoItem);\n        public TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\nusing SQLitePCL;\nusing TODOSQLiteSample.Models;\nusing System.Diagnostics;\nusing TODOSQLiteSample.Repositories;\n\nnamespace TODOSQLiteSample.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        public TodoListViewModel(Models.TodoList list)\n        {\n            this.TodoList = list;\n\n            var repo = TodoItemRepository.GetForToDoListId(list.Id);\n            var todoItems = repo.GetAllItems();\n            foreach (var item in todoItems)\n            {\n                this.Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        #region Track Selected Item\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n#endregion\n\n#region Commands\n        /// <summary>\n        /// Creates a new ToDoItem and adds it to the current ToDoList\n        /// </summary>\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                var item = new TodoItemViewModel(TodoItemRepository.GetDefault().Factory(title: title));\n                // Set the ListId\n                item.TodoItem.ListId = TodoList.Id;\n\n                // Add to repo\n                TodoItemRepository.GetForToDoListId(TodoList.Id).InsertItem(item.TodoItem);\n\n                // Insert into ViewModel collection\n                this.Items.Insert((index > -1) ? index : 0, item);\n                this.SelectedItem = item;\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n\n        Mvvm.Command<ViewModels.TodoItemViewModel> _UpdateItemCommand = default(Mvvm.Command<ViewModels.TodoItemViewModel>);\n        public Mvvm.Command<ViewModels.TodoItemViewModel> UpdateItemCommand { get { return _UpdateItemCommand ?? (_UpdateItemCommand = new Mvvm.Command<ViewModels.TodoItemViewModel>(ExecuteUpdateItemCommand, CanExecuteUpdateItemCommand)); } }\n        private bool CanExecuteUpdateItemCommand(ViewModels.TodoItemViewModel item) { return true; }\n        private void ExecuteUpdateItemCommand(ViewModels.TodoItemViewModel item)\n        {\n            try\n            {\n                TodoItemRepository.GetForToDoListId(TodoList.Id).UpdateItem(item.TodoItem.Id, item.TodoItem);\n            }\n            catch { }\n        }\n\n        /// <summary>\n        /// Removes a ToDoItem from the current list\n        /// </summary>\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return this.SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = this.Items.IndexOf(this.SelectedItem);\n                // Delete from repo\n                TodoItemRepository.GetForToDoListId(TodoList.Id).DeleteItem(this.SelectedItem.TodoItem.Id);\n                this.Items.Remove(this.SelectedItem);\n                this.SelectedItem = this.Items[index];\n            }\n            catch { this.SelectedItem = null; }\n        }\n\n#endregion\n\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"TODOSQLiteSample.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOSQLiteSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:TODOSQLiteSample.ViewModels\"\n    xmlns:models=\"using:TODOSQLiteSample.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n                <ResourceDictionary Source=\"ms-appx:///Styles/PivotTabsStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Icon=\"Edit\" Label=\"rename list\" Click=\"EditListButtonClicked\"/>\n            <AppBarButton Icon=\"Delete\" Label=\"delete list\">\n                <AppBarButton.Flyout>\n                    <Flyout Placement=\"Bottom\">\n                        <Button Content=\"Are you sure?\" Click=\"DeleteListConfirmationButtonClicked\" />\n                    </Flyout>\n                </AppBarButton.Flyout>\n            </AppBarButton>\n        </CommandBar>\n    </Page.BottomAppBar>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Grid>\n\n        <Pivot x:Name=\"MainPivot\" ItemsSource=\"{Binding TodoLists}\" Style=\"{StaticResource TabsPivotWithLeftHeaders}\">\n            <Pivot.TitleTemplate>\n                <DataTemplate>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                        <Grid HorizontalAlignment=\"Right\" Grid.Column=\"1\" Margin=\"0,-8,0,0\" RenderTransformOrigin=\"0.5,0.5\">\n                            <Grid.RenderTransform>\n                                <CompositeTransform ScaleY=\"0.75\" ScaleX=\"0.75\"/>\n                            </Grid.RenderTransform>\n                            <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                            <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                        </Grid>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.TitleTemplate>\n\n            <Pivot.HeaderTemplate>\n                <DataTemplate>\n                    <Grid >\n                        <!-- list title -->\n                        <TextBlock Text=\"{Binding TodoList.Title}\" Style=\"{StaticResource CaptionTextBlockStyle}\" FontSize=\"20\"/>\n                    </Grid>\n                </DataTemplate>\n            </Pivot.HeaderTemplate>\n\n            <Pivot.ItemTemplate>\n                <DataTemplate>\n                    <ListView Padding=\"0,0,0,12\" Margin=\"0,8,0,0\" Grid.Row=\"2\"\n                                IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                        <ListView.Background>\n                            <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                        </ListView.Background>\n                        <ListView.ItemContainerTransitions>\n                            <TransitionCollection>\n                                <AddDeleteThemeTransition />\n                            </TransitionCollection>\n                        </ListView.ItemContainerTransitions>\n                        <ListView.ItemContainerStyle>\n                            <Style TargetType=\"ListViewItem\">\n                                <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            </Style>\n                        </ListView.ItemContainerStyle>\n                        <ListView.Header>\n                            <StackPanel Orientation=\"Horizontal\">\n                                <!-- create new item -->\n                                <TextBox KeyDown=\"TextBox_KeyDown\" Width=\"260\" PlaceholderText=\"Add a new task\" \n                                         Margin=\"24,0,0,12\" />\n                                <AppBarButton Icon=\"Accept\" Loaded=\"AddNewItemConfirmButton_Loaded\"\n                                              IsEnabled=\"False\" Click=\"AddNewItemConfirmButton_Click\" \n                                              RenderTransformOrigin=\"0.5,0.5\" Margin=\"0,-8,0,0\">\n                                    <AppBarButton.RenderTransform>\n                                        <CompositeTransform ScaleX=\"0.75\" ScaleY=\"0.75\"/>\n                                    </AppBarButton.RenderTransform>\n                                </AppBarButton>\n                            </StackPanel> \n                        </ListView.Header>\n                        <ListView.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Height=\"48\">\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"48\" />\n                                        <ColumnDefinition Width=\"*\" />\n                                        <ColumnDefinition Width=\"48\" />\n                                    </Grid.ColumnDefinitions>\n\n                                    <!-- item checked -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                    <!-- item title -->\n                                    <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                    <!-- item strikethrough -->\n                                    <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                    <!-- item star -->\n                                    <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                </Grid>\n                            </DataTemplate>\n                        </ListView.ItemTemplate>\n                    </ListView>\n                </DataTemplate>\n            </Pivot.ItemTemplate>\n        </Pivot>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding TodoList.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing TODOSQLiteSample.ViewModels;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace TODOSQLiteSample.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n            this.ViewModel = this.DataContext as ViewModels.MainPageViewModel;\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            var toDoListVM = MainPivot.SelectedItem as TodoListViewModel;\n\n            var itemEditorDialog = new ToDoEditorContentDialog();\n            itemEditorDialog.DataContext = e.ClickedItem;\n            itemEditorDialog.PrimaryButtonCommand = toDoListVM.UpdateItemCommand;\n            itemEditorDialog.PrimaryButtonCommandParameter = e.ClickedItem;\n            itemEditorDialog.SecondaryButtonCommand = toDoListVM.RemoveCommand;\n            itemEditorDialog.SecondaryButtonCommandParameter = ((TodoItemViewModel)(e.ClickedItem)).TodoItem;\n            await itemEditorDialog.ShowAsync();\n        }\n\n        private TextBox NewToDoItemNameTextBox = null;\n\n        private AppBarButton AddNewItemConfirmButton = null;\n\n        private void AddNewItemConfirmButton_Loaded(object sender, RoutedEventArgs e)\n        {\n            // This button is in a data template, so we can use the Loaded event to get a reference to it\n            // You can't get at controls in Data Templates in Item Templates using their name\n            AddNewItemConfirmButton = sender as AppBarButton;\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            NewToDoItemNameTextBox = textBox;\n\n            if (!string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = true;\n\n                if (e.Key == Windows.System.VirtualKey.Enter)\n                {\n                    // Handle 'Enter' key for keyboard users\n                    if (e.Key == Windows.System.VirtualKey.Enter)\n                    {\n                        e.Handled = true;\n                        CreateNewToDoItem(textBox);\n                    }\n                }\n            }\n            else\n            {\n                if (AddNewItemConfirmButton != null)\n                    AddNewItemConfirmButton.IsEnabled = false;\n            }\n        }\n\n        private void CreateNewToDoItem(TextBox textBox)\n        {\n            var list = textBox.DataContext as ViewModels.TodoListViewModel;\n            list.AddCommand.Execute(textBox.Text);\n            textBox.Text = string.Empty;\n            textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n\n            if (AddNewItemConfirmButton != null)\n                AddNewItemConfirmButton.IsEnabled = false;\n        }\n\n        private void AddNewItemConfirmButton_Click(object sender, RoutedEventArgs e)\n        {\n            if (NewToDoItemNameTextBox != null)\n            {\n                CreateNewToDoItem(NewToDoItemNameTextBox);\n            }\n        }\n\n        private async void EditListButtonClicked(object sender, RoutedEventArgs e)\n        {\n            var todoListVM = (TodoListViewModel)MainPivot.SelectedItem;\n            this.ListEditorDialog.DataContext = todoListVM;\n\n            this.ListEditorDialog.PrimaryButtonCommand = this.ViewModel.UpdateListCommand;\n            this.ListEditorDialog.PrimaryButtonCommandParameter = todoListVM;\n            this.ListEditorDialog.SecondaryButtonCommand = this.ViewModel.RemoveListCommand;\n            this.ListEditorDialog.SecondaryButtonCommandParameter = todoListVM;\n\n            await this.ListEditorDialog.ShowAsync();\n        }\n\n        private void DeleteListConfirmationButtonClicked(object sender, RoutedEventArgs e)\n        {\n            var currentList = (TodoListViewModel)MainPivot.SelectedItem;\n            var vm = this.DataContext as ViewModels.MainPageViewModel;\n            if (vm.RemoveListCommand.CanExecute(currentList))\n            {\n                vm.RemoveListCommand.Execute(currentList);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Views/ToDoEditorContentDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"TODOSQLiteSample.Views.ToDoEditorContentDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:TODOSQLiteSample.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    Title=\"Edit ToDo Item\" \n    PrimaryButtonText=\"Close\" \n    SecondaryButtonText=\"Delete\" \n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"360\">\n\n    <ContentDialog.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </ContentDialog.Resources>\n\n    <ContentDialog.Content>\n        <StackPanel Margin=\"12,0,0,0\">\n            <Grid>\n                <StackPanel>\n                    <Grid Width=\"300\">\n                        <!-- item checked -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Content=\"Is Complete?\" HorizontalAlignment=\"Left\"/>\n                        <!-- item star -->\n                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" \n                                          Style=\"{StaticResource StarCheckBoxStyle}\" HorizontalAlignment=\"Right\"/>\n                    </Grid>\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" \n                                     Margin=\"0,12,0,0\" />\n                    <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" \n                                     Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                    <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" \n                                        Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                </StackPanel>\n\n            </Grid>\n        </StackPanel>\n    </ContentDialog.Content>\n</ContentDialog>\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/Views/ToDoEditorContentDialog.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing TODOSQLiteSample.ViewModels;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236\n\nnamespace TODOSQLiteSample.Views\n{\n    public sealed partial class ToDoEditorContentDialog : ContentDialog\n    {\n        public ToDoEditorContentDialog()\n        {\n            this.InitializeComponent();\n        }\n\n        public event EventHandler<TodoItemViewModel> DeleteTodoItemClicked;\n\n        private void DeleteItemClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            if (DeleteTodoItemClicked != null)\n            {\n                DeleteTodoItemClicked(this, (TodoItemViewModel)this.DataContext);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n  <package id=\"SQLitePCL\" version=\"3.8.7.2\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "TODOSQLiteSample/TODOSQLiteSample.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"TODOSQLiteSample\", \"TODOSQLiteSample\\TODOSQLiteSample.csproj\", \"{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Build.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Build.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Build.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.ActiveCfg = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Build.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x64.Deploy.0 = Release|x64\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.ActiveCfg = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Build.0 = Release|x86\n\t\t{8BE1FC83-8AC2-41F0-BEDF-D4F4F53A1450}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/App.xaml",
    "content": "﻿<common:BootStrapper x:Class=\"Template10.App\" xmlns:common=\"using:Template10.Common\" \n                     xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n                     xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \n                     xmlns:c=\"using:Template10.Converters\"\n                     xmlns:local=\"using:Template10\" RequestedTheme=\"Light\">\n\n    <common:BootStrapper.Resources>\n\n        <c:DateTimeFormatConverter x:Name=\"DateTimeFormatConverter\" />\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenZeroConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Int32>0</x:Int32>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n        <c:ValueWhenConverter x:Name=\"VisibleWhenTrueConverter\">\n            <c:ValueWhenConverter.When>\n                <x:Boolean>true</x:Boolean>\n            </c:ValueWhenConverter.When>\n            <c:ValueWhenConverter.Value>\n                <Visibility>Visible</Visibility>\n            </c:ValueWhenConverter.Value>\n            <c:ValueWhenConverter.Otherwise>\n                <Visibility>Collapsed</Visibility>\n            </c:ValueWhenConverter.Otherwise>\n        </c:ValueWhenConverter>\n\n    </common:BootStrapper.Resources>\n\n</common:BootStrapper>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/App.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Activation;\n\nnamespace Template10\n{\n    sealed partial class App : Common.BootStrapper\n    {\n        public App() : base()\n        {\n            InitializeComponent();\n        }\n\n        public override Task OnLaunchedAsync(ILaunchActivatedEventArgs e)\n        {\n            NavigationService.Navigate(typeof(Views.MainPage));\n            return Task.FromResult<object>(null);\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/ApplicationInsights.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns=\"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n  <!-- \n    Learn more about Application Insights configuration with ApplicationInsights.config here: \n    http://go.microsoft.com/fwlink/?LinkID=513840\n    \n    Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.\n  -->\n  <TelemetryModules>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.SessionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.PageViewTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UnhandledExceptionTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryModules>\n  <TelemetryChannel Type=\"Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel\"/>\n  <ContextInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights\"/>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights\"/>\n  </ContextInitializers>\n  <TelemetryInitializers>\n    <Add Type=\"Microsoft.ApplicationInsights.Extensibility.Windows.UserContextInitializer, Microsoft.ApplicationInsights.Extensibility.Windows\"/>\n  </TelemetryInitializers>\n</ApplicationInsights>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Common/BootStrapper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.UI.Xaml.Controls;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Core;\n\nnamespace Template10.Common\n{\n    // BootStrapper is a drop-in replacement of Application\n    // - OnInitializeAsync is the first in the pipeline, if launching\n    // - OnLaunchedAsync is required, and second in the pipeline\n    // - OnActivatedAsync is first in the pipeline, if activating\n    // - NavigationService is an automatic property of this class\n    public abstract class BootStrapper : Application\n    {\n        /// <summary>\n        /// Event to allow views and viewmodels to intercept the Hardware/Shell Back request and \n        /// implement their own logic, such as closing a dialog. In your event handler, set the\n        /// Handled property of the BackRequestedEventArgs to true if you do not want a Page\n        /// Back navigation to occur.\n        /// </summary>\n        public event EventHandler<Windows.UI.Core.BackRequestedEventArgs> BackRequested;\n\n        public BootStrapper()\n        {\n            Resuming += (s, e) =>\n            {\n                OnResuming(s, e);\n            };\n            Suspending += async (s, e) =>\n            {\n                var deferral = e.SuspendingOperation.GetDeferral();\n                NavigationService.Suspending();\n                await OnSuspendingAsync(s, e);\n                deferral.Complete();\n            };\n            this.Dispatcher = Window.Current.Dispatcher;\n        }\n\n        #region properties\n\n        public Frame RootFrame { get; set; }\n        public CoreDispatcher Dispatcher { get; set; }\n        public Services.NavigationService.NavigationService NavigationService { get; private set; }\n        protected Func<SplashScreen, Page> SplashFactory { get; set; }\n\n        #endregion\n\n        #region activated\n\n        protected override async void OnActivated(IActivatedEventArgs e) { await InternalActivatedAsync(e); }\n        protected override async void OnCachedFileUpdaterActivated(CachedFileUpdaterActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileActivated(FileActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileOpenPickerActivated(FileOpenPickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnFileSavePickerActivated(FileSavePickerActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnSearchActivated(SearchActivatedEventArgs args) { await InternalActivatedAsync(args); }\n        protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await InternalActivatedAsync(args); }\n\n        private async Task InternalActivatedAsync(IActivatedEventArgs e)\n        {\n            await OnActivatedAsync(e);\n            Window.Current.Activate();\n        }\n\n        #endregion\n\n        protected override void OnLaunched(LaunchActivatedEventArgs e) { InternalLaunchAsync(e as ILaunchActivatedEventArgs); }\n\n        private async void InternalLaunchAsync(ILaunchActivatedEventArgs e)\n        {\n            UIElement splashScreen = default(UIElement);\n            if (SplashFactory != null)\n            {\n                splashScreen = SplashFactory(e.SplashScreen);\n                Window.Current.Content = splashScreen;\n            }\n\n            RootFrame = RootFrame ?? new Frame();\n            RootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];\n            NavigationService = new Services.NavigationService.NavigationService(RootFrame);\n\n            // the user may override to set custom content\n            await OnInitializeAsync();\n\n            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n            {\n                try { /* TODO: restore state */ }\n                finally { await OnLaunchedAsync(e); }\n            }\n            else\n            {\n                await OnLaunchedAsync(e);\n            }\n\n            // if the user didn't already set custom content use rootframe\n            if (Window.Current.Content == splashScreen)\n            {\n                Window.Current.Content = RootFrame;\n            }\n            if (Window.Current.Content == null)\n            {\n                Window.Current.Content = RootFrame;\n            }\n            Window.Current.Activate();\n\n            // Hook up the default Back handler\n            Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;\n        }\n\n        /// <summary>\n        /// Default Hardware/Shell Back handler overrides standard Back behavior that navigates to previous app\n        /// in the app stack to instead cause a backward page navigation.\n        /// Views or Viewodels can override this behavior by handling the BackRequested event and setting the\n        /// Handled property of the BackRequestedEventArgs to true.\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void OnBackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)\n        {\n            if (BackRequested != null)\n            {\n                BackRequested(this, e);\n            }\n\n            if (!e.Handled)\n            {\n                if (RootFrame.CanGoBack)\n                {\n                    RootFrame.GoBack();\n                    e.Handled = true;\n                }\n            }\n        }\n\n        #region overrides\n\n        public virtual Task OnInitializeAsync() { return Task.FromResult<object>(null); }\n        public virtual Task OnActivatedAsync(IActivatedEventArgs e) { return Task.FromResult<object>(null); }\n        public abstract Task OnLaunchedAsync(ILaunchActivatedEventArgs e);\n        protected virtual void OnResuming(object s, object e) { }\n        protected virtual Task OnSuspendingAsync(object s, SuspendingEventArgs e) { return Task.FromResult<object>(null); }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Converters/DateTimeFormatConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class DateTimeFormatConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                return System.Convert.ToDateTime(value).ToString(parameter.ToString());\n            }\n            catch { return value; }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Converters/ValueWhenConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace Template10.Converters\n{\n    class ValueWhenConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            try\n            {\n                if (value.Equals(When))\n                    return Value;\n                return Otherwise;\n            }\n            catch\n            {\n                return Otherwise;\n            }\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        public object Value { get; set; }\n        public object Otherwise { get; set; }\n        public object When { get; set; }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/HelloWorld.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{4D3E266B-E1AE-4BA0-8598-E95800370AA1}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Template10</RootNamespace>\n    <AssemblyName>Template10</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>HelloWorld_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Common\\BootStrapper.cs\" />\n    <Compile Include=\"Converters\\DateTimeFormatConverter.cs\" />\n    <Compile Include=\"Converters\\ValueWhenConverter.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Mvvm\\ViewModelBase.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Repositories\\TodoItemRepository.cs\" />\n    <Compile Include=\"Repositories\\TodoListRepository.cs\" />\n    <Compile Include=\"Services\\AdService\\AdService.cs\" />\n    <Compile Include=\"Services\\AdService\\AdHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileHelper.cs\" />\n    <Compile Include=\"Services\\FileService\\FileService.cs\" />\n    <Compile Include=\"Services\\InAppPurchaseService\\InAppPurchaseHelper.cs\" />\n    <Compile Include=\"Services\\InAppPurchaseService\\InAppPurchaseService.cs\" />\n    <Compile Include=\"Services\\NavigationService\\INavigatable.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationEventArgs.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationFacade.cs\" />\n    <Compile Include=\"Services\\NavigationService\\NavigationService.cs\" />\n    <Compile Include=\"ViewModels\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TodoListViewModel.cs\" />\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"HelloWorld_TemporaryKey.pfx\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\netcore45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"Microsoft.Advertising.Xaml, Version=10.0\">\n      <Name>Microsoft Advertising SDK for XAML</Name>\n    </SDKReference>\n    <SDKReference Include=\"Microsoft.VCLibs.AppLocal, Version=14.0\">\n      <Name>Microsoft Visual C++  AppLocal Runtime Package for Windows UAP</Name>\n    </SDKReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"Styles\\StarRadioButtonStyle.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace Template10.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace Template10.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Template10.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Template10.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Mvvm/ViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Mvvm\n{\n    public abstract class ViewModelBase : BindableBase, Services.NavigationService.INavigatable\n    {\n        public virtual void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state) { /* nothing by default */ }\n\n        public virtual void OnNavigatedFrom(Dictionary<string, object> state, bool suspending) { /* nothing by default */ }\n    }\n}"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"4cbe2ac6-85cd-499b-a5c9-2c038545c3fa\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"4cbe2ac6-85cd-499b-a5c9-2c038545c3fa\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>HelloWorld</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"HelloWorld.App\">\n      <uap:VisualElements\n        DisplayName=\"HelloWorld\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"HelloWorld\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"HelloWorld\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"HelloWorld\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Repositories/TodoItemRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Models;\n\nnamespace Template10.Repositories\n{\n    public class TodoItemRepository\n    {\n        public Models.TodoItem Factory(string key = null, bool? complete = null, string title = null, DateTime? dueDate = null)\n        {\n            return new Models.TodoItem\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                IsComplete = complete ?? false,\n                Title = title ?? string.Empty,\n            };\n        }\n\n        public Models.TodoItem Clone(Models.TodoItem item)\n        {\n            return Factory\n                (\n                    Guid.Empty.ToString(),\n                    false,\n                    item.Title,\n                    item.DueDate\n                );\n        }\n\n        public IEnumerable<Models.TodoItem> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var item in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        false,\n                        \"Task-\" + Guid.NewGuid().ToString(),\n                        DateTime.Now.AddHours(random.Next(1, 200))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Repositories/TodoListRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Models;\n\nnamespace Template10.Repositories\n{\n    public class TodoListRepository\n    {\n        List<Models.TodoList> _cache;\n        const string cachekey = \"cache-todolist\";\n        Services.FileService.FileService _fileService;\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListRepository()\n        {\n            _fileService = new Services.FileService.FileService();\n            _todoItemRepository = new TodoItemRepository();\n        }\n\n        public async Task<List<Models.TodoList>> GetAsync()\n        {\n            return _cache ?? (_cache = await _fileService.ReadAsync<Models.TodoList>(cachekey) ?? new List<TodoList>());\n        }\n\n        public async Task<Models.TodoList> GetAsync(string key)\n        {\n            return (await GetAsync()).FirstOrDefault(x => x.Key.Equals(key));\n        }\n\n        public async Task SaveAsync(List<Models.TodoList> list)\n        {\n            await _fileService.WriteAsync<Models.TodoList>(cachekey, list);\n        }\n\n        public Models.TodoList Factory(string key = null, string title = null, IEnumerable<Models.TodoItem> items = null)\n        {\n            return new Models.TodoList\n            {\n                Key = key ?? Guid.NewGuid().ToString(),\n                Title = title ?? Guid.NewGuid().ToString(),\n                Items = new System.Collections.ObjectModel.ObservableCollection<TodoItem>(items ?? new Models.TodoItem[] { }),\n            };\n        }\n\n        public Models.TodoList Clone(Models.TodoList list)\n        {\n            return Factory\n                (\n                    null,\n                    list.Title,\n                    list.Items.Select(x => _todoItemRepository.Clone(x))\n                );\n        }\n\n        public IEnumerable<Models.TodoList> Sample(int count = 5)\n        {\n            var random = new Random((int)DateTime.Now.Ticks);\n            foreach (var List in Enumerable.Range(1, count))\n            {\n                yield return Factory\n                    (\n                        Guid.NewGuid().ToString(),\n                        \"List-\" + Guid.NewGuid().ToString(),\n                        _todoItemRepository.Sample(random.Next(5, 30))\n                    );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/AdService/AdHelper.cs",
    "content": "﻿using Microsoft.Advertising.WinRT.UI;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.AdService\n{\n    public class AdHelper\n    {\n        private string _appId;\n        private string _unitId;\n        private bool _busy = false;\n        private static bool _shown = false;\n        private InterstitialAd _ad = new InterstitialAd();\n\n        public AdHelper(string appId, string unitId)\n        {\n            _appId = appId;\n            _unitId = unitId;\n        }\n\n        public enum Results { Complete, Canceled, Error };\n\n        public void Preload()\n        {\n            _ad.RequestAd(AdType.Video, _appId, _unitId);\n        }\n\n        public void Hide()\n        {\n            _ad.Close();\n        }\n\n        public void Show(Action<Results> callback, bool allowRepeat = false)\n        {\n            if (_busy) { return; }\n            else { _busy = true; }\n\n            // allow repeat\n            if (!allowRepeat && _shown)\n            {\n                callback(Results.Complete);\n                return;\n            }\n\n            // setup\n            _ad.Completed += (s, e) => { callback(Results.Complete); };\n            _ad.Cancelled += (s, e) => { callback(Results.Canceled); };\n            _ad.ErrorOccurred += (s, e) => { callback(Results.Error); };\n            _ad.AdReady += (s, e) => { _shown = true; _ad.Show(); };\n\n            // invoke\n            if (_ad.State == InterstitialAdState.Ready) { _shown = true; _ad.Show(); }\n            else { Preload(); }\n        }\n\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/AdService/AdService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.AdService\n{\n    class AdService\n    {\n        AdHelper _helper;\n        public AdService()\n        {\n            // for demo only\n            var adUnitId = \"11389925\";\n            var appId = \"d25517cb-12d4-4699-8bdc-52040c712cab\";\n            _helper = new AdHelper(appId, adUnitId);\n            _helper.Preload();\n        }\n\n        public void Show(Action<AdHelper.Results> callback)\n        {\n            _helper.Show(callback);\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/FileService/FileHelper.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileHelper\n    {\n        /// <summary>Returns if a file is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Boolean: true if found, false if not found</returns>\n        public async Task<bool> FileExistsAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            return (await GetIfFileExistsAsync(key, location)) != null;\n        }\n\n        public async Task<bool> FileExistsAsync(string key, Windows.Storage.StorageFolder folder)\n        {\n            return (await GetIfFileExistsAsync(key, folder)) != null;\n        }\n\n        /// <summary>Deletes a file in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> DeleteFileAsync(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            var _File = await GetIfFileExistsAsync(key, location);\n            if (_File != null)\n                await _File.DeleteAsync();\n            return !(await FileExistsAsync(key, location));\n        }\n\n        /// <summary>Reads and deserializes a file into specified type T</summary>\n        /// <typeparam name=\"T\">Specified type into which to deserialize file content</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>Specified type T</returns>\n        public async Task<T> ReadFileAsync<T>(string key, StorageStrategies location = StorageStrategies.Local)\n        {\n            try\n            {\n                // fetch file\n                var _File = await GetIfFileExistsAsync(key, location);\n                if (_File == null)\n                    return default(T);\n                // read content\n                var _String = await Windows.Storage.FileIO.ReadTextAsync(_File);\n                // convert to obj\n                var _Result = Deserialize<T>(_String);\n                return _Result;\n            }\n            catch (Exception)\n            {\n                throw;\n            }\n        }\n\n        /// <summary>Serializes an object and write to file in specified storage strategy</summary>\n        /// <typeparam name=\"T\">Specified type of object to serialize</typeparam>\n        /// <param name=\"key\">Path to the file in storage</param>\n        /// <param name=\"value\">Instance of object to be serialized and written</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        public async Task<bool> WriteFileAsync<T>(string key, T value, StorageStrategies location = StorageStrategies.Local)\n        {\n            // create file\n            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);\n            // convert to string\n            var _String = Serialize(value);\n            // save string to file\n            await Windows.Storage.FileIO.WriteTextAsync(_File, _String);\n            // result\n            return await FileExistsAsync(key, location);\n        }\n\n        private async Task<Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)\n        {\n            switch (location)\n            {\n                case StorageStrategies.Local:\n                    return await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Roaming:\n                    return await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option);\n                case StorageStrategies.Temporary:\n                    return await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option);\n                default:\n                    throw new NotSupportedException(location.ToString());\n            }\n        }\n\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                retval = await folder.GetFileAsync(key);\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n            return retval;\n        }\n\n        /// <summary>Returns a file if it is found in the specified storage strategy</summary>\n        /// <param name=\"key\">Path of the file in storage</param>\n        /// <param name=\"location\">Location storage strategy</param>\n        /// <returns>StorageFile</returns>\n        private async Task<Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,\n            StorageStrategies location = StorageStrategies.Local,\n            Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)\n        {\n            Windows.Storage.StorageFile retval;\n            try\n            {\n                switch (location)\n                {\n                    case StorageStrategies.Local:\n                        retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Roaming:\n                        retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);\n                        break;\n                    case StorageStrategies.Temporary:\n                        retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);\n                        break;\n                    default:\n                        throw new NotSupportedException(location.ToString());\n                }\n            }\n            catch (System.IO.FileNotFoundException)\n            {\n                System.Diagnostics.Debug.WriteLine(\"GetIfFileExistsAsync:FileNotFoundException\");\n                return null;\n            }\n\n            return retval;\n        }\n\n        private string Serialize<T>(T item)\n        {\n            return JsonConvert.SerializeObject(item,\n                Formatting.None, new JsonSerializerSettings()\n                {\n                    TypeNameHandling = TypeNameHandling.Objects,\n                    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple\n                });\n        }\n\n        private T Deserialize<T>(string json)\n        {\n            return JsonConvert.DeserializeObject<T>(json);\n        }\n\n        public enum StorageStrategies { Local, Roaming, Temporary }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/FileService/FileService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.FileService\n{\n    class FileService\n    {\n        FileHelper _helper = new FileHelper();\n\n        public async Task<List<T>> ReadAsync<T>(string key)\n        {\n            try { return await _helper.ReadFileAsync<List<T>>(key, FileHelper.StorageStrategies.Roaming); }\n            catch { return new List<T>(); }\n        }\n\n        public async Task WriteAsync<T>(string key, List<T> items)\n        {\n            await _helper.WriteFileAsync(key, items, FileHelper.StorageStrategies.Roaming);\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/InAppPurchaseService/InAppPurchaseHelper.cs",
    "content": "﻿namespace Template10.Services.InAppPurchaseService\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.IO;\n    using System.Linq;\n    using System.Threading.Tasks;\n    using System.Xml.Linq;\n    using Windows.ApplicationModel.Store;\n    using Windows.Networking.Connectivity;\n    using Windows.Storage;\n\n    public class InAppPurchaseHelper\n    {\n        private LicenseInformation license;\n        private ListingInformation listing;\n        private ProductListing product;\n\n        /// <param name=\"featureKey\">The key of the feature we are licensing, ex. NoAds</param>\n        /// <param name=\"simulate\">true to load from an xml file - ie simulate a fake license, false otherwise.</param>\n        public InAppPurchaseHelper(string featureKey, bool simulate = true)\n        {\n            Key = featureKey;\n            Simulate = simulate;\n            CanPurchase = false;\n            Debug.WriteLine(string.Format(\"InAppPurchaseHelper({0}, {1})\", featureKey, simulate));\n        }\n\n        #region properties\n\n        public bool Simulate { get; private set; }\n        public string Key { get; private set; }\n\n        /// <summary>\n        ///     The feature's descriptive name as it is seen by customers in the current market.\n        /// </summary>\n        public string Name\n        {\n            get\n            {\n                try { return product.Name; }\n                catch { return string.Empty; }\n            }\n        }\n\n        /// <summary>\n        ///     Returns true if the feature's license is active, and otherwise false. \n        ///     This property may return false if the license is missing, expired, or revoked.\n        /// </summary>\n        public bool IsPurchased\n        {\n            get\n            {\n                try { return license.ProductLicenses[Key].IsActive; }\n                catch (Exception e)\n                {\n                    Debug.WriteLine(string.Format(\"IsPurchased [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                    return false;\n                }\n            }\n        }\n\n        // indicates that there are no errors\n        public bool CanPurchase { get; private set; }\n\n        public bool IsExpired { get { return Expires < DateTime.Now; } }\n\n        /// <summary>\n        ///     The date and time that the product's license expires.\n        /// </summary>\n        /// <remarks>\n        ///     a valid date value == The license is active and expires on this date. \n        ///     This occurs during the product's lifetime (the time the product can be used).\n        ///     maxDate == The license is active and never expires. This occurs if the product's lifetime is forever.\n        ///     minDate == The license is not active.\n        /// </remarks>\n        public DateTime Expires\n        {\n            get\n            {\n                try { return license.ExpirationDate.DateTime; }\n                catch (Exception e)\n                {\n                    Debug.WriteLine(string.Format(\"Expires [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                    return DateTime.MinValue;\n                }\n            }\n        }\n        /// <summary>\n        ///     The Product ID is the string that the app uses to identify the in-app offer. \n        ///     The Product ID is entered in the Advance features page of the Dashboard where \n        ///     it is associated with the description, price tier and lifetime. \n        ///     The same Product ID is used in the app to get info about the product \n        ///     or feature that is enabled when the customer buys it through an in-app purchase.\n        /// </summary>\n        public string ProductId\n        {\n            get { return Key; }\n        }\n\n        /// <summary>\n        ///     The app's purchase price with the appropriate formatting for the current market.\n        /// </summary>\n        public string FormattedPrice\n        {\n            get\n            {\n                try { return product.FormattedPrice; }\n                catch (Exception e)\n                {\n                    Debug.WriteLine(string.Format(\"FormattedPrice [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                    return string.Empty;\n                }\n            }\n        }\n\n        public static bool HasInternetAccess\n        {\n            get\n            {\n                try\n                {\n                    var profile = NetworkInformation.GetInternetConnectionProfile();\n                    if (profile == null)\n                        return false;\n                    return profile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;\n                }\n                catch (Exception e)\n                {\n                    Debug.WriteLine(string.Format(\"HasInternetAccess [{0}]\", e.Message));\n                    return false;\n                }\n            }\n        }\n\n        #endregion\n\n        #region methods\n\n        public async Task<InAppPurchaseHelper> SetupAsync()\n        {\n            // license\n            if (Simulate)\n            {\n#if DEBUG\n                await SetupSimulation();\n                license = CurrentAppSimulator.LicenseInformation;\n                listing = await CurrentAppSimulator.LoadListingInformationAsync();\n                CanPurchase = true;\n#endif\n            }\n            else\n            {\n                try\n                {\n                    license = CurrentApp.LicenseInformation;\n                    listing = await CurrentApp.LoadListingInformationAsync();\n                    CanPurchase = true;\n                }\n                catch (Exception e)\n                {\n                    Debug.WriteLine(string.Format(\"Setup/License [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                    CanPurchase = false;\n                }\n            }\n\n            if (!CanPurchase)\n                return this; // :(\n\n            try\n            {\n                // test setup\n                license.LicenseChanged += () => { RaiseLicenseChanged(IsPurchased); };\n                IReadOnlyDictionary<string, ProductLicense> licenses = license.ProductLicenses;\n                if (!licenses.Any(x => x.Key.Equals(Key, StringComparison.CurrentCultureIgnoreCase)))\n                    throw new KeyNotFoundException(Key);\n\n                IReadOnlyDictionary<string, ProductListing> products = listing.ProductListings;\n                if (!products.Any(x => x.Key.Equals(Key, StringComparison.CurrentCultureIgnoreCase)))\n                    throw new KeyNotFoundException(Key);\n\n                // product\n                product = products[Key];\n            }\n            catch (Exception e)\n            {\n                Debug.WriteLine(string.Format(\"Setup/Tests [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                CanPurchase = false;\n            }\n            return this;\n        }\n\n        /// <summary>\n        ///     Proceeds with purchase\n        /// </summary>\n        /// <returns>Successfully purchased (no errors)</returns>\n        public async Task<bool> Purchase()\n        {\n            if (!CanPurchase)\n                return false;\n\n            //If this feature is already active, exit on out.\n            if (IsPurchased)\n            {\n                //Already showing as active\n                return RaiseLicenseChanged(true);\n            }\n            try\n            {\n                if (Simulate)\n                {\n#if DEBUG\n                    await CurrentAppSimulator.RequestProductPurchaseAsync(Key);\n#endif\n                }\n                else\n                {\n                    // http://msdn.microsoft.com/en-us/library/windows/apps/Hh967814.aspx\n                    // This method returns a success value even if:\n                    //  1. There's no network connection available.\n                    //  2. The user cancels out of the dialog.\n                    //  3. The user's authentication fails.\n                    //  4. Product purchase is success.\n                    await CurrentApp.RequestProductPurchaseAsync(Key);\n                }\n            }\n            catch (Exception e)\n            {\n                Debug.WriteLine(string.Format(\"Purchase [{0}, {1}, {2}]\", Key, Simulate, e.Message));\n                Debugger.Break();\n            }\n\n            return RaiseLicenseChanged(IsPurchased);\n        }\n\n        /// <summary>\n        /// This method generates the XML necessary to let the simulator work\n        /// </summary>\n        private async Task SetupSimulation()\n        {\n            var document = new XDocument(\n                new XDeclaration(\"1.0\", \"utf-16\", \"yes\"),\n                new XComment(\"SimulatedProduct\"),\n                new XElement(\"CurrentApp\",\n                        new XElement(\"ListingInformation\",\n                            new XElement(\"App\",\n                                new XElement(\"AppId\", Guid.Empty.ToString()),\n                                new XElement(\"LinkUri\", \"http://apps.microsoft.com/webpdp/app/\" + Guid.Empty.ToString()),\n                                new XElement(\"CurrentMarket\", \"en-us\"),\n                                new XElement(\"AgeRating\", \"3\"),\n                                new XElement(\"MarketData\",\n                                    new XAttribute(XNamespace.Xml + \"lang\", (XNamespace)\"en-us\"),\n                                    new XElement(\"Name\", \"App Name\"),\n                                    new XElement(\"Description\", \"App Description\"),\n                                    new XElement(\"Price\", \"5.99\"),\n                                    new XElement(\"CurrencySymbol\", \"$\"),\n                                    new XElement(\"CurrencyCode\", \"USD\")\n                            ) // App.MarketData\n                        ), // App\n                            new XElement(\"Product\",\n                                new XAttribute(\"ProductId\", Key),\n                                new XElement(\"MarketData\",\n                                    new XAttribute(XNamespace.Xml + \"lang\", (XNamespace)\"en-us\"),\n                                    new XElement(\"Name\", Key),\n                                    new XElement(\"Price\", \"1.49\"),\n                                    new XElement(\"CurrencySymbol\", \"$\"),\n                                    new XElement(\"CurrencyCode\", \"USD\")\n                            ) // Product.MarketData\n                        ) // Product\n                    ), // ListingInformation\n                        new XElement(\"LicenseInformation\",\n                            new XElement(\"App\",\n                                // would be true when:\n                                // 1. Is trial\n                                // 2. Is not free AND is purchased\n                                // 3. Is free\n                                new XElement(\"IsActive\", true),\n                                new XElement(\"IsTrial\", false)\n                        ), // App\n                            new XElement(\"Product\",\n                                new XAttribute(\"ProductId\", Key),\n                                new XElement(\"IsActive\", false),\n                                new XElement(\"ExpirationDate\", DateTimeOffset.Now.AddDays(1).ToString(\"o\"))\n                        ) // Product\n                    ) // LicenseInformation\n                ) // CurrentApp\n            );\n\n            // save to temporary folder\n            StorageFolder folder = ApplicationData.Current.TemporaryFolder;\n            var simulatedProduct = await folder.CreateFileAsync(System.IO.Path.GetRandomFileName());\n            // using System.IO;\n            using (Stream stream = await simulatedProduct.OpenStreamForWriteAsync())\n            {\n                document.Save(stream, SaveOptions.None);\n            }\n#if DEBUG\n            await CurrentAppSimulator.ReloadSimulatorAsync(simulatedProduct);\n#endif\n        }\n\n        #endregion\n\n        #region LicenseChanged event\n\n        public event EventHandler LicenseChanged;\n\n        protected bool RaiseLicenseChanged(bool value)\n        {\n            if (LicenseChanged != null)\n                LicenseChanged(this, new LicenseChangedEventArgs { NewValue = value });\n            return value;\n        }\n\n        public class LicenseChangedEventArgs : EventArgs\n        {\n            public bool NewValue { get; set; }\n        }\n\n        #endregion\n    }\n\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/InAppPurchaseService/InAppPurchaseService.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace Template10.Services.InAppPurchaseService\n{\n    class InAppPurchaseService\n    {\n        InAppPurchaseHelper _helper;\n\n        public InAppPurchaseService()\n        {\n            _helper = new InAppPurchaseHelper(\"RemoveAds\", true);\n        }\n\n        public bool IsPurchased()\n        {\n            return _helper?.IsPurchased ?? false;\n        }\n\n        public async Task<bool> PurchaseAsync()\n        {\n            await _helper.SetupAsync();\n            return await _helper.Purchase();\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/NavigationService/INavigatable.cs",
    "content": "﻿using System.Collections.Generic;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public interface INavigatable\n    {\n        void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state);\n        void OnNavigatedFrom(Dictionary<string, object> state, bool suspending);\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/NavigationService/NavigationEventArgs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationEventArgs : EventArgs\n    {\n        public NavigationMode NavigationMode { get; set; }\n\n        public string Parameter { get; set; }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/NavigationService/NavigationFacade.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media.Animation;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationFacade\n    {\n        public NavigationFacade(Frame frame)\n        {\n            _frame = frame;\n            _navigatedEventHandlers = new List<EventHandler<NavigationEventArgs>>();\n\n            // setup animations\n            var c = new TransitionCollection { };\n            var t = new NavigationThemeTransition { };\n            //var i = new EntranceNavigationTransitionInfo();\n            //t.DefaultNavigationTransitionInfo = i;\n            c.Add(t);\n            _frame.ContentTransitions = c;\n        }\n\n        #region frame facade\n\n        readonly Frame _frame;\n\n        public bool Navigate(Type page, string parameter) { return _frame.Navigate(page, parameter); }\n\n        public void SetNavigationState(string state) { _frame.SetNavigationState(state); }\n\n        public string GetNavigationState() { return _frame.GetNavigationState(); }\n\n        public int BackStackDepth { get { return _frame.BackStackDepth; } }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoBack() { _frame.GoBack(); }\n\n        public void Refresh()\n        {\n            var page = CurrentPageType;\n            var param = CurrentPageParam;\n            _frame.BackStack.Remove(_frame.BackStack.Last());\n            Navigate(page, param);\n        }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public object Content { get { return _frame.Content; } }\n\n        public Type CurrentPageType { get; internal set; }\n\n        public string CurrentPageParam { get; internal set; }\n\n        public object GetValue(DependencyProperty dp) { return _frame.GetValue(dp); }\n\n        public void SetValue(DependencyProperty dp, object value) { _frame.SetValue(dp, value); }\n\n        public void ClearValue(DependencyProperty dp) { _frame.ClearValue(dp); }\n\n        #endregion\n\n        readonly List<EventHandler<NavigationEventArgs>> _navigatedEventHandlers;\n        public event EventHandler<NavigationEventArgs> Navigated\n        {\n            add\n            {\n                if (!_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Add(value);\n                    if (_navigatedEventHandlers.Count == 1)\n                        _frame.Navigated += FacadeNavigatedEventHandler;\n                }\n            }\n\n            remove\n            {\n                if (_navigatedEventHandlers.Contains(value))\n                {\n                    _navigatedEventHandlers.Remove(value);\n                    if (_navigatedEventHandlers.Count == 0)\n                        _frame.Navigated -= FacadeNavigatedEventHandler;\n                }\n            }\n        }\n\n        void FacadeNavigatedEventHandler(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)\n        {\n            foreach (var handler in _navigatedEventHandlers)\n            {\n                var args = new NavigationEventArgs()\n                {\n                    NavigationMode = e.NavigationMode,\n                    Parameter = (e.Parameter == null) ? string.Empty : e.Parameter.ToString()\n                };\n                handler(this, args);\n            }\n            CurrentPageType = e.SourcePageType;\n            CurrentPageParam = e.Parameter as String;\n        }\n\n        readonly List<EventHandler> _navigatingEventHandlers = new List<EventHandler>();\n        public event EventHandler Navigating\n        {\n            add\n            {\n                if (!_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Add(value);\n                    if (_navigatingEventHandlers.Count == 1)\n                        _frame.Navigating += FacadeNavigatingCancelEventHandler;\n                }\n            }\n            remove\n            {\n                if (_navigatingEventHandlers.Contains(value))\n                {\n                    _navigatingEventHandlers.Remove(value);\n                    if (_navigatingEventHandlers.Count == 0)\n                        _frame.Navigating -= FacadeNavigatingCancelEventHandler;\n                }\n            }\n        }\n\n        private void FacadeNavigatingCancelEventHandler(object sender, NavigatingCancelEventArgs e)\n        {\n            foreach (var handler in _navigatingEventHandlers)\n            {\n                handler(this, new EventArgs());\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Services/NavigationService/NavigationService.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.Services.NavigationService\n{\n    public class NavigationService\n    {\n        private readonly NavigationFacade _frame;\n        private const string EmptyNavigation = \"1,0\";\n\n        string LastNavigationParameter { get; set; /* TODO: persist */ }\n        string LastNavigationType { get; set; /* TODO: persist */ }\n\n        public NavigationService(Frame frame)\n        {\n            _frame = new NavigationFacade(frame);\n            _frame.Navigating += (s, e) => NavigateFrom(false);\n            _frame.Navigated += (s, e) => NavigateTo(e.NavigationMode, e.Parameter);\n        }\n\n        void NavigateFrom(bool suspending)\n        {\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedFrom(null, suspending);\n                }\n            }\n        }\n\n        void NavigateTo(NavigationMode mode, string parameter)\n        {\n            LastNavigationParameter = parameter;\n            LastNavigationType = _frame.Content.GetType().FullName;\n\n            if (mode == NavigationMode.New)\n            {\n                // TODO: clear existing state\n            }\n\n            var page = _frame.Content as FrameworkElement;\n            if (page != null)\n            {\n                var dataContext = page.DataContext as INavigatable;\n                if (dataContext != null)\n                {\n                    dataContext.OnNavigatedTo(parameter, mode, null);\n                }\n            }\n        }\n\n        public bool Navigate(Type page, string parameter = null)\n        {\n            if (page == null)\n                throw new ArgumentNullException(nameof(page));\n            if (page.FullName.Equals(LastNavigationType)\n                && parameter == LastNavigationParameter)\n                return false;\n            return _frame.Navigate(page, parameter);\n        }\n\n        public void RestoreSavedNavigation() { /* TODO */ }\n\n        public void GoBack() { if (_frame.CanGoBack) _frame.GoBack(); }\n\n        public bool CanGoBack { get { return _frame.CanGoBack; } }\n\n        public void GoForward() { _frame.GoForward(); }\n\n        public bool CanGoForward { get { return _frame.CanGoForward; } }\n\n        public void ClearHistory() { _frame.SetNavigationState(EmptyNavigation); }\n\n        public void Suspending() { NavigateFrom(true); }\n\n        public void Show(SettingsFlyout flyout, string parameter = null)\n        {\n            if (flyout == null)\n                throw new ArgumentNullException(nameof(flyout));\n            var dataContext = flyout.DataContext as INavigatable;\n            if (dataContext != null)\n            {\n                dataContext.OnNavigatedTo(parameter, NavigationMode.New, null);\n            }\n            flyout.Show();\n        }\n\n        public Type CurrentPageType { get { return _frame.CurrentPageType; } }\n\n        public string CurrentPageParam { get { return _frame.CurrentPageParam; } }\n    }\n}\n\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Styles/StarRadioButtonStyle.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Styles\">\n    <SolidColorBrush x:Key=\"StarCheckColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n    <Style x:Key=\"StarCheckBoxStyle\" TargetType=\"CheckBox\">\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Foreground\" Value=\"{ThemeResource SystemControlForegroundBaseHighBrush}\"/>\n        <Setter Property=\"Padding\" Value=\"8,5,0,0\"/>\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\"/>\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\"/>\n        <Setter Property=\"MinWidth\" Value=\"120\"/>\n        <Setter Property=\"MinHeight\" Value=\"32\"/>\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"CheckBox\">\n                    <Grid BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\n                        <Grid.Resources>\n                            <SolidColorBrush x:Key=\"ColorBrush\" Color=\"{ThemeResource SystemBaseHighColor}\" />\n                        </Grid.Resources>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"20\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CombinedStates\">\n                                <VisualState x:Name=\"UncheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"UncheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(IconElement.Foreground)\" Storyboard.TargetName=\"EmptyStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ColorBrush}\"/>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedNormal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedPressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"CheckedDisabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"FullStar\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\n                                                <DiscreteObjectKeyFrame.Value>\n                                                    <Visibility>Visible</Visibility>\n                                                </DiscreteObjectKeyFrame.Value>\n                                            </DiscreteObjectKeyFrame>\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"IndeterminateNormal\"/>\n                                <VisualState x:Name=\"IndeterminatePointerOver\"/>\n                                <VisualState x:Name=\"IndeterminatePressed\"/>\n                                <VisualState x:Name=\"IndeterminateDisabled\"/>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CF;\" FontSize=\"20\" x:Name=\"FullStar\" Foreground=\"{StaticResource ColorBrush}\" />\n                        <FontIcon Visibility=\"Collapsed\" Glyph=\"&#xE1CE;\" FontSize=\"20\" x:Name=\"EmptyStar\" Foreground=\"{ThemeResource TextBoxForegroundThemeBrush}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/ViewModels/MainPageViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Template10.Mvvm;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Template10.ViewModels\n{\n    public class MainPageViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoListRepository _todoListRepository;\n\n        public MainPageViewModel()\n        {\n            _todoListRepository = new Repositories.TodoListRepository();\n\n            if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)\n            {\n                // designtime sample data\n                var data = _todoListRepository.Sample().Select(x => new ViewModels.TodoListViewModel(x));\n                TodoLists = new ObservableCollection<ViewModels.TodoListViewModel>(data);\n            }\n            else\n            {\n                // update Commands\n                PropertyChanged += (s, e) =>\n                {\n                    AddListCommand.RaiseCanExecuteChanged();\n                    RemoveListCommand.RaiseCanExecuteChanged();\n                    RemoveAdsCommand.RaiseCanExecuteChanged();\n                    ShowVideoAdCommand.RaiseCanExecuteChanged();\n                };\n            }\n        }\n\n        public override void OnNavigatedTo(string parameter, NavigationMode mode, Dictionary<string, object> state)\n        {\n            LoadCommand.Execute(null);\n        }\n\n        public override void OnNavigatedFrom(Dictionary<string, object> state, bool suspending)\n        {\n            SaveCommand.Execute(null);\n        }\n\n        bool _busy = false;\n        public bool Busy { get { return _busy; } set { Set(ref _busy, value); } }\n\n        bool _showAd = true;\n        public bool ShowAd { get { return _showAd; } set { Set(ref _showAd, value); } }\n\n        private ObservableCollection<ViewModels.TodoListViewModel> _TodoLists = new ObservableCollection<TodoListViewModel>();\n        public ObservableCollection<ViewModels.TodoListViewModel> TodoLists { get { return _TodoLists; } private set { Set(ref _TodoLists, value); } }\n\n        #region Commands\n\n        Mvvm.Command _AddListCommand = default(Mvvm.Command);\n        public Mvvm.Command AddListCommand { get { return _AddListCommand ?? (_AddListCommand = new Mvvm.Command(ExecuteAddListCommand, CanExecuteAddListCommand)); } }\n        private bool CanExecuteAddListCommand() { return !Busy; }\n        private void ExecuteAddListCommand()\n        {\n            try\n            {\n                var item = new ViewModels.TodoListViewModel(_todoListRepository.Factory(title: \"New List\"));\n                TodoLists.Insert(0, item);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command<ViewModels.TodoListViewModel> _RemoveListCommand = default(Mvvm.Command<ViewModels.TodoListViewModel>);\n        public Mvvm.Command<ViewModels.TodoListViewModel> RemoveListCommand { get { return _RemoveListCommand ?? (_RemoveListCommand = new Mvvm.Command<ViewModels.TodoListViewModel>(ExecuteRemoveListCommand, CanExecuteRemoveListCommand)); } }\n        private bool CanExecuteRemoveListCommand(ViewModels.TodoListViewModel list) { return !Busy && list != null; }\n        private void ExecuteRemoveListCommand(ViewModels.TodoListViewModel list)\n        {\n            try\n            {\n                var index = TodoLists.IndexOf(list);\n                TodoLists.Remove(list);\n                SaveCommand.Execute(null);\n            }\n            catch { }\n        }\n\n        Mvvm.Command _LoadCommand = default(Mvvm.Command);\n        public Mvvm.Command LoadCommand { get { return _LoadCommand ?? (_LoadCommand = new Mvvm.Command(ExecuteLoadCommand, CanExecuteLoadCommand)); } }\n        private bool CanExecuteLoadCommand() { return !Busy; }\n        private async void ExecuteLoadCommand()\n        {\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                var data = _todoListRepository.Sample(10).Select(x => new ViewModels.TodoListViewModel(x));\n                TodoLists.Clear();\n                foreach (var item in data.OrderBy(x => x.TodoList.Title))\n                {\n                    TodoLists.Add(item);\n                }\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _SaveCommand = default(Mvvm.Command);\n        public Mvvm.Command SaveCommand { get { return _SaveCommand ?? (_SaveCommand = new Mvvm.Command(ExecuteSaveCommand, CanExecuteSaveCommand)); } }\n        private bool CanExecuteSaveCommand() { return true; }\n        private async void ExecuteSaveCommand()\n        {\n            while (Busy)\n            {\n                await Task.Delay(100);\n            }\n            try\n            {\n                Busy = true;\n                await Task.Delay(2000);\n                await _todoListRepository.SaveAsync(TodoLists.Select(x => x.TodoList).ToList());\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _RemoveAdsCommand = default(Mvvm.Command);\n        public Mvvm.Command RemoveAdsCommand { get { return _RemoveAdsCommand ?? (_RemoveAdsCommand = new Mvvm.Command(ExecuteRemoveAdsCommand, CanExecuteRemoveAdsCommand)); } }\n        private bool CanExecuteRemoveAdsCommand() { return !Busy && ShowAd; }\n        private async void ExecuteRemoveAdsCommand()\n        {\n            try\n            {\n                Busy = true;\n                var iapService = new Services.InAppPurchaseService.InAppPurchaseService();\n                ShowAd = !(await iapService.PurchaseAsync());\n            }\n            finally { Busy = false; }\n        }\n\n        Mvvm.Command _ShowVideoAdCommand = default(Mvvm.Command);\n        public Mvvm.Command ShowVideoAdCommand { get { return _ShowVideoAdCommand ?? (_ShowVideoAdCommand = new Mvvm.Command(ExecuteShowVideoAdCommand, CanExecuteShowVideoAdCommand)); } }\n        private bool CanExecuteShowVideoAdCommand() { return !Busy; }\n        private void ExecuteShowVideoAdCommand()\n        {\n            var service = new Services.AdService.AdService();\n            service.Show(r =>\n            {\n                switch (r)\n                {\n                    case Services.AdService.AdHelper.Results.Complete:\n                    case Services.AdService.AdHelper.Results.Error:\n                        ShowAd = false;\n                        return;\n                    case Services.AdService.AdHelper.Results.Canceled:\n                        ShowAd = true;\n                        return;\n                }\n            });\n        }\n\n        #endregion  \n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/ViewModels/TodoItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Template10.Models;\n\nnamespace Template10.ViewModels\n{\n    public class TodoItemViewModel : Mvvm.ViewModelBase\n    {\n        public TodoItemViewModel(Models.TodoItem todo)\n        {\n            TodoItem = todo;\n        }\n\n        private Models.TodoItem _TodoItem = default(Models.TodoItem);\n        public Models.TodoItem TodoItem { get { return _TodoItem; } set { Set(ref _TodoItem, value); } }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/ViewModels/TodoListViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.ObjectModel;\n\nnamespace Template10.ViewModels\n{\n    public class TodoListViewModel : Mvvm.ViewModelBase\n    {\n        Repositories.TodoItemRepository _todoItemRepository;\n\n        public TodoListViewModel(Models.TodoList list)\n        {\n            _todoItemRepository = new Repositories.TodoItemRepository();\n\n            TodoList = list;\n            foreach (var item in list.Items)\n            {\n                Items.Add(new ViewModels.TodoItemViewModel(item));\n            }\n        }\n\n        private Models.TodoList _TodoList = default(Models.TodoList);\n        public Models.TodoList TodoList { get { return _TodoList; } set { Set(ref _TodoList, value); } }\n\n        private ObservableCollection<ViewModels.TodoItemViewModel> _Items = new ObservableCollection<TodoItemViewModel>();\n        public ObservableCollection<ViewModels.TodoItemViewModel> Items { get { return _Items; } private set { Set(ref _Items, value); } }\n\n        private ViewModels.TodoItemViewModel _SelectedItem = default(ViewModels.TodoItemViewModel);\n        public ViewModels.TodoItemViewModel SelectedItem { get { return _SelectedItem; } set { Set(ref _SelectedItem, value); SelectedItemIsSelected = (value != null); } }\n\n        private bool _SelectedItemIsSelected = default(bool);\n        public bool SelectedItemIsSelected { get { return _SelectedItemIsSelected; } set { Set(ref _SelectedItemIsSelected, value); } }\n\n        Mvvm.Command<string> _AddCommand = default(Mvvm.Command<string>);\n        public Mvvm.Command<string> AddCommand { get { return _AddCommand ?? (_AddCommand = new Mvvm.Command<string>(ExecuteAddCommand, CanExecuteAddCommand)); } }\n        private bool CanExecuteAddCommand(string title) { return true; }\n        private void ExecuteAddCommand(string title)\n        {\n            try\n            {\n                var index = Items.IndexOf(SelectedItem);\n                var item = new ViewModels.TodoItemViewModel(_todoItemRepository.Factory(title: title));\n                TodoList.Items.Insert((index > -1) ? index : 0, item.TodoItem);\n                Items.Insert((index > -1) ? index : 0, item);\n                SelectedItem = item;\n            }\n            catch { SelectedItem = null; }\n        }\n\n        Mvvm.Command<Models.TodoItem> _RemoveCommand = default(Mvvm.Command<Models.TodoItem>);\n        public Mvvm.Command<Models.TodoItem> RemoveCommand { get { return _RemoveCommand ?? (_RemoveCommand = new Mvvm.Command<Models.TodoItem>(ExecuteRemoveCommand, CanExecuteRemoveCommand)); } }\n        private bool CanExecuteRemoveCommand(Models.TodoItem param) { return SelectedItem != null; }\n        private void ExecuteRemoveCommand(Models.TodoItem param)\n        {\n            try\n            {\n                var index = Items.IndexOf(SelectedItem);\n                TodoList.Items.Remove(SelectedItem.TodoItem);\n                Items.Remove(SelectedItem);\n                SelectedItem = Items[index];\n            }\n            catch { SelectedItem = null; }\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Template10.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Template10.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:vm=\"using:Template10.ViewModels\"\n    xmlns:models=\"using:Template10.Models\"\n    x:Name=\"ThisPage\" \n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"ms-appx:///Styles/StarRadioButtonStyle.xaml\"/>\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n\n    <Page.DataContext>\n        <vm:MainPageViewModel />\n    </Page.DataContext>\n\n    <Page.BottomAppBar>\n        <CommandBar>\n            <AppBarButton Icon=\"Video\" Label=\"Watch Ad\" Command=\"{Binding ShowVideoAdCommand}\" />\n            <AppBarButton Icon=\"Shop\" Label=\"Remove Ads\" Command=\"{Binding RemoveAdsCommand}\" />\n        </CommandBar>\n    </Page.BottomAppBar>\n    \n    <Grid>\n\n        <Hub>\n\n            <Hub.Header>\n                <StackPanel Orientation=\"Horizontal\">\n                    <TextBlock Text=\"Contoso\" x:Name=\"AppTitle\" />\n                    <Grid>\n                        <Ellipse Stroke=\"Black\" StrokeThickness=\"1\" Margin=\"9\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"32\" />\n                        <AppBarButton Icon=\"Add\" Command=\"{Binding AddListCommand}\" Foreground=\"Black\" />\n                    </Grid>\n                </StackPanel>\n            </Hub.Header>\n\n            <HubSection Header=\"Advertising\" Visibility=\"{Binding ShowAd, Converter={StaticResource VisibleWhenTrueConverter}}\">\n                <DataTemplate>\n                    <Rectangle Height=\"400\" Width=\"150\" Fill=\"Blue\" />\n                </DataTemplate>\n            </HubSection>\n\n            <HubSection VerticalContentAlignment=\"Stretch\" x:Name=\"MainHubSection\">\n                <DataTemplate>\n                    <ItemsControl ItemsSource=\"{Binding TodoLists}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Horizontal\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <Grid Width=\"456\" Margin=\"0,0,12,12\">\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"*\" />\n                                    </Grid.RowDefinitions>\n                                    <CommandBar Grid.Row=\"0\" VerticalAlignment=\"Bottom\" ClosedDisplayMode=\"Minimal\" Background=\"DimGray\">\n                                        <CommandBar.SecondaryCommands>\n                                            <AppBarButton Label=\"Delete list\">\n                                                <AppBarButton.Flyout>\n                                                    <Flyout Placement=\"Bottom\">\n                                                        <Button Content=\"Are you sure?\" Command=\"{Binding DataContext.RemoveListCommand, ElementName=MainHubSection}\" CommandParameter=\"{Binding}\" />\n                                                    </Flyout>\n                                                </AppBarButton.Flyout>\n                                            </AppBarButton>\n                                        </CommandBar.SecondaryCommands>\n                                    </CommandBar>\n                                    <Rectangle Grid.Row=\"1\" Fill=\"Black\" Opacity=\".1\" />\n                                    \n                                    <!-- list title -->\n                                    <TextBlock Tapped=\"List_Tapped\" RequestedTheme=\"Light\" Margin=\"24,12\" FontSize=\"34\" FontWeight=\"Light\" Grid.Row=\"1\" Text=\"{Binding TodoList.Title}\" />\n                                    \n                                    <ScrollViewer Grid.Row=\"2\" VerticalAlignment=\"Stretch\">\n                                        <ListView Padding=\"0,0,0,12\" Margin=\"0\" Grid.Row=\"2\"\n                                                  IsItemClickEnabled=\"True\" ItemClick=\"TodoItem_ItemClicked\"\n                                                  ItemsSource=\"{Binding Items}\" VerticalAlignment=\"Top\" \n                                                  SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\"\n                                                  CanDrag=\"True\" CanDragItems=\"True\" CanReorderItems=\"True\">\n                                            <ListView.Background>\n                                                <SolidColorBrush Color=\"Black\" Opacity=\".1\" />\n                                            </ListView.Background>\n                                            <ListView.ItemContainerTransitions>\n                                                <TransitionCollection>\n                                                    <AddDeleteThemeTransition />\n                                                </TransitionCollection>\n                                            </ListView.ItemContainerTransitions>\n                                            <ListView.ItemContainerStyle>\n                                                <Style TargetType=\"ListViewItem\">\n                                                    <Setter Property=\"Padding\" Value=\"24,0,0,0\" />\n                                                    <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                                                </Style>\n                                            </ListView.ItemContainerStyle>\n                                            <ListView.Header>\n\n                                                <!-- create new item -->\n                                                <TextBox KeyDown=\"TextBox_KeyDown\" PlaceholderText=\"Add a new task\" Margin=\"24,0,24,12\" />\n\n                                            </ListView.Header>\n                                            <ListView.ItemTemplate>\n                                                <DataTemplate>\n                                                    <Grid Height=\"48\">\n                                                        <Grid.ColumnDefinitions>\n                                                            <ColumnDefinition Width=\"48\" />\n                                                            <ColumnDefinition Width=\"*\" />\n                                                            <ColumnDefinition Width=\"48\" />\n                                                        </Grid.ColumnDefinitions>\n\n                                                        <!-- item checked -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Grid.Column=\"0\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" />\n                                                        <!-- item title -->\n                                                        <TextBlock Grid.Column=\"1\" VerticalAlignment=\"Center\" Foreground=\"Black\" Text=\"{Binding TodoItem.Title}\" FontWeight=\"Normal\" LineHeight=\"20\" />\n                                                        <!-- item strikethrough -->\n                                                        <Line Visibility=\"{Binding TodoItem.IsComplete, Converter={StaticResource VisibleWhenTrueConverter}}\" Grid.Column=\"1\" Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"1\" X1=\"1\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Stretch\" Margin=\"0,0,24,0\" />\n                                                        <!-- item star -->\n                                                        <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Grid.Column=\"2\" VerticalAlignment=\"Center\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n\n                                                    </Grid>\n                                                </DataTemplate>\n                                            </ListView.ItemTemplate>\n                                        </ListView>\n                                    </ScrollViewer>\n                                </Grid>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n                </DataTemplate>\n            </HubSection>\n        </Hub>\n\n        <!-- list editor -->\n        <ContentDialog x:Name=\"ListEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\" MaxWidth=\"300\">\n\n                    <!-- item details -->\n                    <TextBox Width=\"300\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- task editor -->\n        <ContentDialog x:Name=\"TodoEditorDialog\" Title=\" \" PrimaryButtonText=\"Close\" d:IsHidden=\"True\"\n                       SecondaryButtonText=\"Delete\" SecondaryButtonCommand=\"{Binding RemoveCommand}\">\n            <ContentDialog.Content>\n                <StackPanel Margin=\"12,0,0,0\">\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"48\" />\n                            <ColumnDefinition Width=\"*\" />\n                        </Grid.ColumnDefinitions>\n\n                        <StackPanel Grid.Column=\"0\" VerticalAlignment=\"Top\">\n                            <!-- item checked -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsComplete, Mode=TwoWay}\" Height=\"32\" Width=\"32\" />\n                            <!-- item star -->\n                            <CheckBox IsChecked=\"{Binding TodoItem.IsFavorite, Mode=TwoWay}\" Height=\"32\" Width=\"32\" Style=\"{StaticResource StarCheckBoxStyle}\" />\n                        </StackPanel>\n\n                        <!-- item details -->\n                        <StackPanel Grid.Column=\"1\" MaxWidth=\"300\">\n                            <TextBox Width=\"300\" Text=\"{Binding TodoItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <TextBox Width=\"300\" Height=\"96\" Margin=\"0,12,0,0\" Header=\"Details\" Text=\"{Binding TodoItem.Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                            <DatePicker Width=\"300\" Margin=\"0,12,0,0\" Header=\"Due Date\" Date=\"{Binding TodoItem.DueDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                        </StackPanel>\n\n                    </Grid>\n                </StackPanel>\n            </ContentDialog.Content>\n        </ContentDialog>\n\n        <!-- busy indicator -->\n        <Popup IsOpen=\"{Binding Busy}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n            <Grid Background=\"{ThemeResource ContentDialogBorderThemeBrush}\" Height=\"100\" Width=\"200\">\n                <Grid.RenderTransform>\n                    <TranslateTransform X=\"-100\" Y=\"-50\" />\n                </Grid.RenderTransform>\n                <StackPanel Orientation=\"Horizontal\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                    <ProgressRing VerticalAlignment=\"Center\" IsActive=\"True\" Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" />\n                    <TextBlock Foreground=\"{ThemeResource ContentDialogDimmingThemeBrush}\" Text=\"Loading\" FontSize=\"22\" FontWeight=\"Light\" Margin=\"12,0,0,0\" />\n                </StackPanel>\n            </Grid>\n        </Popup>\n\n    </Grid>\n</Page>\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace Template10.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            InitializeComponent();\n            ViewModel = DataContext as ViewModels.MainPageViewModel;\n            CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar= true;\n            Window.Current.SetTitleBar(AppTitle);\n        }\n\n        ViewModels.MainPageViewModel ViewModel { get; set; }\n\n        private async void TodoItem_ItemClicked(object sender, ItemClickEventArgs e)\n        {\n            TodoEditorDialog.DataContext = e.ClickedItem;\n            await TodoEditorDialog.ShowAsync();\n        }\n\n        private async void List_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            var textBlock = sender as TextBlock;\n            var data = textBlock.DataContext as ViewModels.TodoListViewModel;\n            ListEditorDialog.DataContext = data.TodoList;\n            ListEditorDialog.SecondaryButtonCommand = ViewModel.RemoveListCommand;\n            ListEditorDialog.SecondaryButtonCommandParameter = data;\n            await ListEditorDialog.ShowAsync();\n        }\n\n        private void TextBox_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            var textBox = sender as TextBox;\n            if (e.Key == Windows.System.VirtualKey.Enter \n                && !string.IsNullOrEmpty(textBox.Text)\n                && textBox.Text.Length > 3)\n            {\n                e.Handled = true;\n                var list = textBox.DataContext as ViewModels.TodoListViewModel;\n                list.AddCommand.Execute(textBox.Text);\n                textBox.Text = string.Empty;\n                textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"win81\" userInstalled=\"true\" />\n</packages>"
  },
  {
    "path": "VideoInterstitialAd/HelloWorld.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"HelloWorld\", \"HelloWorld\\HelloWorld.csproj\", \"{4D3E266B-E1AE-4BA0-8598-E95800370AA1}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x64.Build.0 = Debug|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x86.Build.0 = Debug|x86\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|ARM.Build.0 = Release|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x64.ActiveCfg = Release|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x64.Build.0 = Release|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x64.Deploy.0 = Release|x64\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x86.ActiveCfg = Release|x86\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x86.Build.0 = Release|x86\n\t\t{4D3E266B-E1AE-4BA0-8598-E95800370AA1}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/App.xaml",
    "content": "﻿<Application\n    x:Class=\"Samples.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/App.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409\n\nnamespace Samples\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.\n        /// </summary>\n        public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;\n\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();\n\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(Views.MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Models/MenuItem.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Samples.Models\n{\n    class MenuItem\n    {\n        public int Key { get; set; }\n        public string Text { get; set; }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Models/TodoItem.cs",
    "content": "﻿using System;\n\nnamespace Samples.Models\n{\n    public class TodoItem : Mvvm.BindableBase\n    {\n        private string _Key = default(string);\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _Title = default(string);\n        public string Title { get { return _Title; } set { Set(ref _Title, value); } }\n\n        private DateTime _DueDate = default(DateTime);\n        public DateTime DueDate { get { return _DueDate; } set { Set(ref _DueDate, value); } }\n\n        private bool _IsComplete = default(bool);\n        public bool IsComplete { get { return _IsComplete; } set { Set(ref _IsComplete, value); } }\n\n        private string _Details = default(string);\n        public string Details { get { return _Details; } set { Set(ref _Details, value); } }\n\n        private bool _IsFavorite = default(bool);\n        public bool IsFavorite { get { return _IsFavorite; } set { Set(ref _IsFavorite, value); } }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Models/TodoList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace Samples.Models\n{\n    public class TodoList : Mvvm.BindableBase\n    {\n        private string _Key = Guid.NewGuid().ToString();\n        public string Key { get { return _Key; } set { Set(ref _Key, value); } }\n\n        private string _title;\n        public string Title { get { return _title; } set { Set(ref _title, value); } }\n\n        private ObservableCollection<Models.TodoItem> _Items = default(ObservableCollection<Models.TodoItem>);\n        public ObservableCollection<Models.TodoItem> Items { get { return _Items; } set { Set(ref _Items, value); } }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Mvvm/BindableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Samples.Mvvm\n{\n    public abstract class BindableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public void RaisePropertyChanged([CallerMemberName]string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n\n        public void Set<T>(ref T storage, T value, [CallerMemberName()]string propertyName = null)\n        {\n            if (!object.Equals(storage, value))\n            {\n                storage = value;\n                this.RaisePropertyChanged(propertyName);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Mvvm/Command.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace Samples.Mvvm\n{\n    // http://codepaste.net/jgxazh\n    using System.Diagnostics;\n\n    public class Command : System.Windows.Input.ICommand\n    {\n        private readonly Action m_Execute;\n        private readonly Func<bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action execute)\n            : this(execute, () => true)\n        { /* empty */ }\n\n        public Command(Action execute, Func<bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                return m_CanExecute == null ? true : m_CanExecute();\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    m_Execute();\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            if (CanExecuteChanged != null)\n                CanExecuteChanged(this, EventArgs.Empty);\n        }\n    }\n\n    public class Command<T> : System.Windows.Input.ICommand\n    {\n        private readonly Action<T> m_Execute;\n        private readonly Func<T, bool> m_CanExecute;\n        public event EventHandler CanExecuteChanged;\n\n        public Command(Action<T> execute)\n            : this(execute, (x) => true)\n        { /* empty */ }\n\n        public Command(Action<T> execute, Func<T, bool> canexecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n            m_Execute = execute;\n            m_CanExecute = canexecute;\n        }\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object p)\n        {\n            try\n            {\n                var _Value = (T)Convert.ChangeType(p, typeof(T));\n                return m_CanExecute == null ? true : m_CanExecute(_Value);\n            }\n            catch\n            {\n                Debugger.Break();\n                return false;\n            }\n        }\n\n        public void Execute(object p)\n        {\n            if (CanExecute(p))\n                try\n                {\n                    var _Value = (T)Convert.ChangeType(p, typeof(T));\n                    m_Execute(_Value);\n                }\n                catch { Debugger.Break(); }\n        }\n\n        public void RaiseCanExecuteChanged()\n        {\n            CanExecuteChanged?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  IgnorableNamespaces=\"uap mp\">\n\n  <Identity\n    Name=\"937417a1-1d11-4995-bcf2-29206ac26e40\"\n    Publisher=\"CN=Jerry\"\n    Version=\"1.0.0.0\" />\n\n  <mp:PhoneIdentity PhoneProductId=\"937417a1-1d11-4995-bcf2-29206ac26e40\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n\n  <Properties>\n    <DisplayName>XamlControls-Blank</DisplayName>\n    <PublisherDisplayName>Jerry</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.10069.0\" MaxVersionTested=\"10.0.10069.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\"\n      Executable=\"$targetnametoken$.exe\"\n      EntryPoint=\"XamlControls_Blank.App\">\n      <uap:VisualElements\n        DisplayName=\"XamlControls-Blank\"\n        Square150x150Logo=\"Assets\\Logo.png\"\n        Square44x44Logo=\"Assets\\SmallLogo.png\"\n        Description=\"XamlControls-Blank\"\n        BackgroundColor=\"#464646\">\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"XamlControls-Blank\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"XamlControls-Blank\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "XamlControls/XamlControls-Blank/ViewModels/SampleViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Samples.ViewModels\n{\n    class SampleViewModel\n    {\n        public SampleViewModel()\n        {\n            var items = Enumerable.Range(1, 10).Select(x => new Models.TodoItem\n            {\n                Title = string.Format(\"Sample Item {0}\", x),\n                DueDate = DateTime.Now,\n                Details = \"The quick brown fox jumps over the lazy dog. Now is the time for all good men to come to the aid of their country.\"\n            });\n            this.List = new Models.TodoList\n            {\n                Title = \"Sample List\",\n                Items = new ObservableCollection<Models.TodoItem>(items)\n            };\n            this.Item = items.First();\n        }\n\n        public Models.TodoItem Item { get; set; }\n        public Models.TodoList List { get; set; }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/GeometryControls.xaml",
    "content": "﻿<Page\r\n    x:Class=\"Samples.Views.GeometryControls\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:local=\"using:Samples.Views\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\">\r\n\r\n    <Page.DataContext>\r\n        <vm:SampleViewModel xmlns:vm=\"using:Samples.ViewModels\" />\r\n    </Page.DataContext>\r\n\r\n    <Pivot Title=\"Geometry Controls\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\r\n        <PivotItem Header=\"Rectangle\" DataContext=\"{Binding Item}\">\r\n            <Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" x:Name=\"Layer_1_69\" Width=\"200\" Height=\"200\" Canvas.Left=\"0\" Canvas.Top=\"0\">\r\n                <Rectangle Width=\"29\" Height=\"29\" Canvas.Left=\"9.5\" Canvas.Top=\"7.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"29\" Height=\"29\" Canvas.Left=\"37.6114\" Canvas.Top=\"7.37502\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Path Width=\"40.4656\" Height=\"40.4656\" Canvas.Left=\"31.8786\" Canvas.Top=\"32.764\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 53.7293,33.264L 71.8442,54.6146L 50.4935,72.7296L 32.3786,51.3789L 53.7293,33.264 Z \"/>\r\n                <Path Width=\"40.4655\" Height=\"40.4656\" Canvas.Left=\"85.416\" Canvas.Top=\"32.764\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 107.267,33.264L 125.382,54.6146L 104.031,72.7296L 85.916,51.3789L 107.267,33.264 Z \"/>\r\n                <Rectangle Width=\"29\" Height=\"29\" Canvas.Left=\"65.2033\" Canvas.Top=\"7.37502\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"29\" Height=\"29\" Canvas.Left=\"92.7441\" Canvas.Top=\"7.37502\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"151.75\" Height=\"18\" Canvas.Left=\"22\" Canvas.Top=\"84.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"23\" Height=\"116.5\" Canvas.Left=\"140.25\" Canvas.Top=\"70.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"57\" Height=\"57\" Canvas.Left=\"28.75\" Canvas.Top=\"107.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"8.75\" Height=\"182\" Canvas.Left=\"184\" Canvas.Top=\"6.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Rectangle Width=\"22.25\" Height=\"22.25\" Canvas.Left=\"140.5\" Canvas.Top=\"46.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n            </Canvas>\r        </PivotItem>\r\n        <PivotItem Header=\"Ellipse\" DataContext=\"{Binding Item}\">\r\n            <Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" x:Name=\"Layer_1_44\" Width=\"200\" Height=\"200\" Canvas.Left=\"0\" Canvas.Top=\"0\">\r\n                <Ellipse Width=\"102.25\" Height=\"41.75\" Canvas.Left=\"21.5\" Canvas.Top=\"21.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"58.75\" Height=\"58.75\" Canvas.Left=\"101.75\" Canvas.Top=\"44.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"39\" Height=\"39\" Canvas.Left=\"84.5\" Canvas.Top=\"65.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"30\" Height=\"30\" Canvas.Left=\"68.25\" Canvas.Top=\"74.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"27.25\" Height=\"27.25\" Canvas.Left=\"50.5\" Canvas.Top=\"76.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"64.5\" Height=\"76.75\" Canvas.Left=\"123.75\" Canvas.Top=\"118.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"41.5\" Height=\"72\" Canvas.Left=\"115\" Canvas.Top=\"121.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"30.75\" Height=\"71.75\" Canvas.Left=\"105.5\" Canvas.Top=\"124.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"25\" Height=\"68\" Canvas.Left=\"96.75\" Canvas.Top=\"126.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"71.75\" Height=\"71.75\" Canvas.Left=\"14.25\" Canvas.Top=\"114.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"11.25\" Height=\"11.25\" Canvas.Left=\"141.25\" Canvas.Top=\"8.62502\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"12.25\" Height=\"12.25\" Canvas.Left=\"161.5\" Canvas.Top=\"11.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"10.75\" Height=\"10.75\" Canvas.Left=\"153\" Canvas.Top=\"22.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"12\" Height=\"12\" Canvas.Left=\"171.25\" Canvas.Top=\"30.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"7.5\" Height=\"7.5\" Canvas.Left=\"181.75\" Canvas.Top=\"21.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Path Width=\"10.25\" Height=\"10.25\" Canvas.Left=\"176.5\" Canvas.Top=\"5.12502\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 181.625,5.62502C 184.179,5.62502 186.25,7.69572 186.25,10.25C 186.25,12.8043 184.179,14.875 181.625,14.875C 179.071,14.875 177,12.8043 177,10.25C 177,7.69572 179.071,5.62502 181.625,5.62502 Z \"/>\r\n                <Path Width=\"6\" Height=\"6\" Canvas.Left=\"161.5\" Canvas.Top=\"38.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 164.5,38.875C 165.881,38.875 167,39.9943 167,41.375C 167,42.7557 165.881,43.875 164.5,43.875C 163.119,43.875 162,42.7557 162,41.375C 162,39.9943 163.119,38.875 164.5,38.875 Z \"/>\r\n                <Ellipse Width=\"24.25\" Height=\"24.25\" Canvas.Left=\"176.25\" Canvas.Top=\"47.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"12.25\" Height=\"12.25\" Canvas.Left=\"188.25\" Canvas.Top=\"38.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Path Width=\"6.5\" Height=\"6.5\" Canvas.Left=\"168\" Canvas.Top=\"47.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 171.25,48.125C 172.769,48.125 174,49.3562 174,50.875C 174,52.3938 172.769,53.625 171.25,53.625C 169.731,53.625 168.5,52.3938 168.5,50.875C 168.5,49.3562 169.731,48.125 171.25,48.125 Z \"/>\r\n                <Ellipse Width=\"15.75\" Height=\"15.75\" Canvas.Left=\"145.5\" Canvas.Top=\"35.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"12.25\" Height=\"12.25\" Canvas.Left=\"133\" Canvas.Top=\"26.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Ellipse Width=\"13.25\" Height=\"13.25\" Canvas.Left=\"125.75\" Canvas.Top=\"11.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n                <Path Width=\"6.5\" Height=\"6.5\" Canvas.Left=\"141.25\" Canvas.Top=\"20.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 144.5,20.875C 146.019,20.875 147.25,22.1062 147.25,23.625C 147.25,25.1438 146.019,26.375 144.5,26.375C 142.981,26.375 141.75,25.1438 141.75,23.625C 141.75,22.1062 142.981,20.875 144.5,20.875 Z \"/>\r\n                <Ellipse Width=\"12.375\" Height=\"12.375\" Canvas.Left=\"155\" Canvas.Top=\"-0.499985\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\"/>\r\n            </Canvas>\r        </PivotItem>\r\n        <PivotItem Header=\"Line\" DataContext=\"{Binding Item}\">\r\n            <Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" x:Name=\"Layer_1_6\" Width=\"200\" Height=\"200\" Canvas.Left=\"0\" Canvas.Top=\"0\">\r\n                <Path Width=\"165.5\" Height=\"37\" Canvas.Left=\"18\" Canvas.Top=\"23.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 18.5,23.875L 183,59.875\"/>\r\n                <Path Width=\"161\" Height=\"46.75\" Canvas.Left=\"14.75\" Canvas.Top=\"41.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 175.25,42.125L 15.25,87.875\"/>\r\n                <Path Width=\"135.75\" Height=\"62.25\" Canvas.Left=\"36.5\" Canvas.Top=\"63.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 37,63.625L 171.75,124.875\"/>\r\n                <Path Width=\"103.5\" Height=\"49.5\" Canvas.Left=\"59\" Canvas.Top=\"60.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 59.5,60.875L 162,109.375\"/>\r\n                <Path Width=\"1.5\" Height=\"40.75\" Canvas.Left=\"48.75\" Canvas.Top=\"138.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 49.25,178.375L 49.75,138.625\"/>\r\n                <Path Width=\"32.5\" Height=\"33.5\" Canvas.Left=\"36\" Canvas.Top=\"111.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 36.5,144.625L 68,112.125\"/>\r\n                <Path Width=\"46\" Height=\"35.25\" Canvas.Left=\"61.5\" Canvas.Top=\"111.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 62,111.625L 107,145.875\"/>\r\n                <Path Width=\"3.5\" Height=\"47.5\" Canvas.Left=\"92.25\" Canvas.Top=\"130.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 95.25,131.375L 92.75,177.875\"/>\r\n                <Path Width=\"1.25\" Height=\"19.75\" Canvas.Left=\"60.75\" Canvas.Top=\"143.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 61.5,144.125L 61.25,162.875\"/>\r\n                <Path Width=\"18\" Height=\"1.25\" Canvas.Left=\"63.75\" Canvas.Top=\"162.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 64.25,162.875L 81.25,162.625\"/>\r\n                <Path Width=\"1.25\" Height=\"18.5\" Canvas.Left=\"81\" Canvas.Top=\"142.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 81.5,160.125L 81.75,142.625\"/>\r\n                <Path Width=\"21\" Height=\"1\" Canvas.Left=\"58.5\" Canvas.Top=\"142.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 79,142.625L 59,142.625\"/>\r\n                <Path Width=\"1\" Height=\"28\" Canvas.Left=\"70.5\" Canvas.Top=\"137.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 71,138.125L 71,165.125\"/>\r\n                <Path Width=\"28\" Height=\"1.25\" Canvas.Left=\"57\" Canvas.Top=\"151.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 57.5,152.375L 84.5,152.125\"/>\r\n                <Path Width=\"1.5\" Height=\"15.5\" Canvas.Left=\"78.25\" Canvas.Top=\"115.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 78.75,130.125L 79.25,115.625\"/>\r\n                <Path Width=\"12.5\" Height=\"2.75\" Canvas.Left=\"76.25\" Canvas.Top=\"114.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 76.75,114.875L 88.25,116.625\"/>\r\n                <Path Width=\"1.25\" Height=\"21.5\" Canvas.Left=\"85.5\" Canvas.Top=\"113.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 86.25,114.375L 86,134.875\"/>\r\n                <Path Width=\"46.5\" Height=\"21.5\" Canvas.Left=\"100.5\" Canvas.Top=\"137.375\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 101,158.375L 146.5,137.875\"/>\r\n                <Path Width=\"49.25\" Height=\"23\" Canvas.Left=\"137.25\" Canvas.Top=\"136.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 137.75,137.375L 186,159.375\"/>\r\n                <Path Width=\"35.75\" Height=\"18.75\" Canvas.Left=\"159.5\" Canvas.Top=\"134.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 160,152.375L 194.75,134.625\"/>\r\n                <Path Width=\"29.75\" Height=\"9.25\" Canvas.Left=\"13.5\" Canvas.Top=\"123.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Data=\"F1 M 14,124.125L 42.75,132.375\"/>\r\n            </Canvas>\r        </PivotItem>\r\n        <PivotItem Header=\"Path\" DataContext=\"{Binding Item}\">\r\n            <Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" x:Name=\"Layer_1_27\" Width=\"200\" Height=\"200\" Canvas.Left=\"0\" Canvas.Top=\"0\">\r\n                <Path Width=\"141.177\" Height=\"141.177\" Canvas.Left=\"20.352\" Canvas.Top=\"56.4996\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 147.308,183.455L 161.029,96.8211L 82.8754,56.9996L 20.852,119.023L 60.6735,197.177L 147.308,183.455 Z \"/>\r\n                <Path Width=\"124.522\" Height=\"124.522\" Canvas.Left=\"63.1844\" Canvas.Top=\"38.3094\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 187.207,162.332L 154.109,38.8094L 63.6844,129.234L 187.207,162.332 Z \"/>\r\n                <Path Width=\"64.4274\" Height=\"64.4274\" Canvas.Left=\"104.096\" Canvas.Top=\"77.9428\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 158.641,132.488L 150.248,114.504L 168.023,105.676L 148.729,101.024L 152.91,81.6233L 137.244,93.8077L 124.682,78.4428L 124.441,98.2878L 104.596,98.5292L 119.961,111.091L 107.776,126.757L 127.178,122.576L 131.829,141.87L 140.657,124.095L 158.641,132.488 Z \"/>\r\n                <Path Width=\"48.6246\" Height=\"48.6246\" Canvas.Left=\"89.6007\" Canvas.Top=\"13.2984\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 130.744,54.4421L 123.849,45.1319L 134.674,49.2598L 125.523,42.1552L 137.06,43.2095L 126.331,38.8374L 137.725,36.7397L 126.215,35.4245L 136.62,30.3305L 125.181,32.1696L 133.827,24.457L 123.309,29.3141L 129.553,19.555L 120.735,27.0698L 124.114,15.988L 117.651,25.6031L 117.915,14.0205L 114.285,25.0229L 111.415,13.7984L 110.888,25.3721L 105.096,15.3383L 107.712,26.6249L 99.4271,18.5259L 104.991,28.6883L 94.8282,23.1248L 102.927,31.4093L 91.6406,28.7939L 101.674,34.5862L 90.1007,35.1128L 101.325,37.9832L 90.3228,41.6129L 101.905,41.3484L 92.2903,47.8119L 103.372,44.4324L 95.8573,53.2503L 105.616,47.0063L 100.759,57.5247L 108.472,48.8792L 106.633,60.3179L 111.727,49.9122L 113.042,61.423L 115.14,50.0288L 119.512,60.7579L 118.458,49.2203L 125.562,58.3719L 121.434,47.5466L 130.744,54.4421 Z \"/>\r\n                <Path Width=\"40.9551\" Height=\"40.9551\" Canvas.Left=\"148.289\" Canvas.Top=\"40.237\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 188.744,80.6921L 177.97,62.1671L 178.038,40.737L 167.382,59.33L 148.789,69.9862L 170.219,69.9181L 188.744,80.6921 Z \"/>\r\n                <Path Width=\"47.2734\" Height=\"47.2734\" Canvas.Left=\"11.8157\" Canvas.Top=\"142.263\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 51.7444,182.192L 58.5891,162.631L 47.5633,145.084L 26.9697,142.763L 12.3157,157.417L 14.636,178.011L 32.1834,189.037L 51.7444,182.192 Z \"/>\r\n                <Path Width=\"48.0576\" Height=\"49.2348\" Canvas.Left=\"14.3422\" Canvas.Top=\"23.5988\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 52.6438,28.9383C 52.6866,29.8597 52.7295,30.7812 52.7056,31.6647C 52.6817,32.5482 52.5909,33.3937 52.4424,34.1926C 52.2939,34.9915 52.0876,35.7437 51.8335,36.4421C 51.5794,37.1405 51.2776,37.7851 50.939,38.3705C 50.6003,38.9558 50.2248,39.4819 49.8239,39.9451C 49.4229,40.4082 48.9966,40.8084 48.5566,41.1438C 48.1165,41.4791 47.6629,41.7496 47.2092,42.0202C 47.0308,40.9463 46.8524,39.8723 46.574,38.8098C 46.2955,37.7473 45.917,36.6963 45.4403,35.6723C 44.9637,34.6484 44.3889,33.6517 43.7202,32.6975C 43.0515,31.7433 42.2888,30.8316 41.4387,29.9772C 40.5886,29.1228 39.651,28.3256 38.6345,27.5995C 37.618,26.8733 36.5225,26.2182 35.3585,25.6466C 34.1946,25.075 32.9622,24.5869 31.7298,24.0988C 32.4769,24.6398 33.2241,25.1808 33.8999,25.7504C 34.5757,26.3199 35.1802,26.918 35.7122,27.5323C 36.2442,28.1465 36.7037,28.7768 37.0913,29.4109C 37.479,30.045 37.7948,30.6828 38.0413,31.3126C 38.2878,31.9423 38.4649,32.5639 38.5771,33.1662C 38.6892,33.7684 38.7362,34.3512 38.7241,34.9043C 38.7119,35.4574 38.6406,35.9809 38.5692,36.5042C 37.6184,35.9741 36.6675,35.444 35.6632,34.9992C 34.6589,34.5544 33.6011,34.1951 32.5034,33.9293C 31.4057,33.6636 30.268,33.4915 29.1051,33.4194C 27.9421,33.3473 26.7538,33.3751 25.5558,33.507C 24.3578,33.6389 23.1499,33.875 21.9484,34.217C 20.7469,34.559 19.5517,35.007 18.3791,35.5607C 17.2065,36.1143 16.0565,36.7735 14.9065,37.4327C 15.7953,37.1859 16.6841,36.939 17.5508,36.7657C 18.4174,36.5925 19.262,36.4928 20.0739,36.4598C 20.8858,36.4269 21.665,36.4606 22.4025,36.5529C 23.1399,36.6452 23.8355,36.796 24.4816,36.9959C 25.1276,37.1958 25.7241,37.4448 26.2648,37.7327C 26.8056,38.0205 27.2906,38.3471 27.7154,38.7015C 28.1403,39.0558 28.505,39.4379 28.8697,39.8201C 27.8624,40.2329 26.8551,40.6458 25.8812,41.1537C 24.9073,41.6616 23.9668,42.2645 23.0746,42.9571C 22.1825,43.6496 21.3386,44.4318 20.5571,45.2961C 19.7756,46.1604 19.0565,47.1067 18.4127,48.1256C 17.7689,49.1445 17.2003,50.236 16.7186,51.3887C 16.2369,52.5413 15.842,53.7551 15.5437,55.017C 15.2454,56.279 15.0438,57.5891 14.8422,58.8992C 15.2034,58.0504 15.5645,57.2016 15.9694,56.416C 16.3743,55.6304 16.8229,54.9079 17.3034,54.2526C 17.7838,53.5973 18.2961,53.0091 18.828,52.4901C 19.3599,51.971 19.9115,51.5212 20.4706,51.1408C 21.0297,50.7603 21.5963,50.4493 22.1585,50.2059C 22.7207,49.9626 23.2784,49.7871 23.8204,49.6758C 24.3624,49.5646 24.8885,49.5177 25.4146,49.4708C 25.1094,50.5158 24.8041,51.5607 24.594,52.6388C 24.3839,53.7169 24.2689,54.8282 24.2541,55.9575C 24.2393,57.0868 24.3247,58.2343 24.5131,59.3841C 24.7016,60.534 24.9931,61.6862 25.3883,62.8249C 25.7835,63.9635 26.2824,65.0885 26.8832,66.1838C 27.484,67.2791 28.1868,68.3447 28.9875,69.3647C 29.7881,70.3847 30.6867,71.3592 31.5853,72.3336C 31.1469,71.522 30.7084,70.7104 30.3467,69.9041C 29.9849,69.0977 29.6998,68.2965 29.487,67.5123C 29.2741,66.7281 29.1337,65.9609 29.0595,65.2214C 28.9854,64.4819 28.9776,63.7702 29.0288,63.0958C 29.0799,62.4215 29.19,61.7846 29.3503,61.1933C 29.5106,60.6021 29.721,60.0566 29.972,59.5635C 30.2229,59.0704 30.5143,58.6298 30.8057,58.1892C 31.4323,59.0794 32.059,59.9696 32.7709,60.8061C 33.4828,61.6426 34.2798,62.4253 35.1536,63.141C 36.0273,63.8567 36.9776,64.5054 37.9941,65.0749C 39.0106,65.6445 40.0933,66.135 41.2299,66.5359C 42.3666,66.9369 43.5572,67.2483 44.7881,67.4615C 46.019,67.6746 47.2903,67.7896 48.587,67.7995C 49.8836,67.8095 51.2058,67.7146 52.5279,67.6196C 51.62,67.4563 50.7121,67.2931 49.8561,67.0732C 49.0001,66.8533 48.1959,66.5766 47.4501,66.2541C 46.7043,65.9315 46.0169,65.563 45.3925,65.1599C 44.7681,64.7568 44.2068,64.3191 43.7115,63.8587C 43.2162,63.3983 42.7869,62.9151 42.4246,62.4211C 42.0622,61.9272 41.767,61.4225 41.5379,60.9189C 41.3089,60.4153 41.1461,59.9128 40.9833,59.4102C 42.07,59.4753 43.1567,59.5404 44.2545,59.5054C 45.3523,59.4703 46.4613,59.3352 47.5656,59.0983C 48.6699,58.8614 49.7696,58.5228 50.8486,58.0832C 51.9277,57.6436 52.9862,57.103 54.0084,56.4643C 55.0306,55.8256 56.0164,55.0889 56.9505,54.2595C 57.8846,53.43 58.7671,52.5078 59.5834,51.5002C 60.3996,50.4926 61.1497,49.3997 61.8998,48.3068C 61.2061,48.9149 60.5124,49.5229 59.8068,50.055C 59.1011,50.5872 58.3835,51.0434 57.6663,51.4254C 56.9491,51.8074 56.2323,52.1151 55.5279,52.3519C 54.8234,52.5887 54.1313,52.7547 53.4625,52.8549C 52.7937,52.955 52.1482,52.9895 51.5362,52.9648C 50.9241,52.94 50.3454,52.8562 49.8088,52.7213C 49.2723,52.5864 48.7779,52.4004 48.2835,52.2143C 49.0119,51.4053 49.7404,50.5963 50.3975,49.7161C 51.0546,48.8359 51.6403,47.8846 52.1436,46.8736C 52.647,45.8625 53.0679,44.7916 53.397,43.6739C 53.7261,42.5561 53.9634,41.3915 54.1013,40.1941C 54.2393,38.9968 54.278,37.7667 54.2119,36.5192C 54.1458,35.2717 53.975,34.0068 53.6962,32.7404C 53.4173,31.474 53.0306,30.2061 52.6438,28.9383 Z \"/>\r\n                <Path Width=\"12.8785\" Height=\"11.8587\" Canvas.Left=\"76.56\" Canvas.Top=\"146.843\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 85.5,147.625C 84.0833,147.625 82.5171,146.991 81.25,147.625C 79.2653,148.617 78.0382,150.972 77.5,153.125C 77.2566,154.099 76.8012,155.227 77.25,156.125C 77.7875,157.2 79.0555,157.992 80.25,158.125C 82.0206,158.322 84.0748,158.194 85.5,157.125C 87.3785,155.716 88.4587,153.205 88.75,150.875C 88.8745,149.879 89.2096,148.585 88.5,147.875C 87.7904,147.165 86.5035,147.625 85.5,147.625 Z \"/>\r\n                <Path Width=\"11.4042\" Height=\"19.5\" Canvas.Left=\"72\" Canvas.Top=\"157.625\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 82.5,158.125C 82.5,161.875 83.4095,165.737 82.5,169.375C 82.1139,170.92 80.3501,171.781 79,172.625C 76.8426,173.973 74.9681,176.008 72.5,176.625\"/>\r\n                <Path Width=\"5.75\" Height=\"11.25\" Canvas.Left=\"81\" Canvas.Top=\"169.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 81.5,170.375C 82.4133,174.028 84.5659,177.257 86.25,180.625\"/>\r\n                <Path Width=\"15.75\" Height=\"2.06586\" Canvas.Left=\"75.5\" Canvas.Top=\"163.559\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 76,165.125C 80.5709,163.297 85.827,164.375 90.75,164.375\"/>\r\n                <Path Width=\"2.75059\" Height=\"10\" Canvas.Left=\"38.75\" Canvas.Top=\"133.125\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 39.25,142.625C 41.0837,140.18 41,136.681 41,133.625\"/>\r\n                <Path Width=\"4.19717\" Height=\"10.25\" Canvas.Left=\"43.3028\" Canvas.Top=\"133.875\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 44.75,143.625C 42.8461,141.086 43.9215,135.145 47,134.375\"/>\r\n                <Path Width=\"29.9385\" Height=\"27.8764\" Canvas.Left=\"32.0697\" Canvas.Top=\"107.106\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 38.5,130.875C 38.8012,131.04 38.6294,131.553 38.75,131.875C 38.8809,132.224 38.9865,132.611 39.25,132.875C 40.4804,134.105 42.5514,134.752 44.25,134.375C 44.6881,134.278 45.1152,134.106 45.5,133.875C 45.9576,133.6 46.3955,133.274 46.75,132.875C 47.0728,132.512 47.0141,131.625 47.5,131.625C 47.9859,131.625 47.93,132.509 48.25,132.875C 48.5244,133.189 48.8858,133.423 49.25,133.625C 50.5693,134.358 52.3708,134.738 53.75,134.125C 55.1479,133.504 55.1108,131.37 56,130.125C 56.2422,129.786 56.6864,129.649 57,129.375C 57.3548,129.065 57.7106,128.747 58,128.375C 58.2983,127.991 58.5963,127.586 58.75,127.125C 58.8554,126.809 58.6146,126.43 58.75,126.125C 59.464,124.519 61.6592,123.376 61.5,121.625C 61.2991,119.415 57.995,118.33 57.75,116.125C 57.629,115.036 58.9517,113.717 58.25,112.875C 57.0511,111.436 55.2534,110.533 53.5,109.875C 53.1879,109.758 52.8308,109.916 52.5,109.875C 52.1591,109.832 51.5674,109.962 51.5,109.625C 51.4183,109.216 52.3089,109.037 52.25,108.625C 52.1911,108.213 51.6491,107.995 51.25,107.875C 49.8931,107.468 48.3829,107.568 47,107.875C 46.6362,107.956 46.2067,108.065 46,108.375C 45.8151,108.652 46.2082,109.115 46,109.375C 45.7854,109.643 45.326,109.516 45,109.625C 44.3245,109.85 43.6572,110.101 43,110.375C 41.3828,111.049 39.4888,111.386 38.25,112.625C 37.9865,112.889 37.75,113.252 37.75,113.625C 37.75,113.998 38.4167,114.292 38.25,114.625C 38.1009,114.923 37.5833,114.625 37.25,114.625C 36.9167,114.625 36.5817,114.592 36.25,114.625C 34.913,114.759 33.1749,115.35 32.75,116.625C 32.191,118.302 33.0713,120.16 33.5,121.875C 33.7635,122.929 32.7641,124.153 33.25,125.125C 33.809,126.243 35.691,126.257 36.25,127.375C 36.4037,127.682 35.9574,128.034 36,128.375C 36.0462,128.745 36.2575,129.092 36.5,129.375C 36.7712,129.691 37.2578,129.786 37.5,130.125C 37.6997,130.405 37.4751,130.919 37.75,131.125C 37.9608,131.283 38.269,130.748 38.5,130.875 Z \"/>\r\n                <Path Width=\"14.0907\" Height=\"10.0087\" Canvas.Left=\"38.9534\" Canvas.Top=\"114.866\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 42.75,124.375C 41.7472,123.874 41.1219,122.808 40.5,121.875C 40.2305,121.471 39.9473,121.069 39.75,120.625C 39.6105,120.311 39.3463,119.932 39.5,119.625C 40.0191,118.587 42.1062,119.341 42.75,118.375C 42.9811,118.028 42.5292,117.478 42.75,117.125C 43.6942,115.614 46.2258,116.286 48,116.125C 48.4469,116.084 48.8243,115.767 49.25,115.625C 49.576,115.516 49.9091,115.418 50.25,115.375C 51.4903,115.22 52.8032,117.162 52.5,118.375\"/>\r\n                <Path Width=\"5\" Height=\"3.18241\" Canvas.Left=\"49\" Canvas.Top=\"118.193\" Stretch=\"Fill\" StrokeLineJoin=\"Round\" Stroke=\"#FF000000\" Fill=\"#FFFFFFFF\" Data=\"F1 M 49.5,119.875C 50.0852,119.095 51.4384,118.334 52.25,118.875C 52.5601,119.082 52.5525,119.559 52.75,119.875C 52.9708,120.228 53.25,120.542 53.5,120.875\"/>\r\n            </Canvas>\r        </PivotItem>\r\n    </Pivot>\r\n</Page>\r\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/GeometryControls.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Samples.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class GeometryControls : Page\n    {\n        public GeometryControls()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/InputControls.xaml",
    "content": "﻿<Page\n    x:Class=\"Samples.Views.InputControls\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    \n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:SampleViewModel xmlns:vm=\"using:Samples.ViewModels\" />\n    </Page.DataContext>\n\n    <Pivot Title=\"Input Controls\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <PivotItem Header=\"TextBox\" DataContext=\"{Binding Item}\">\n            <StackPanel VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Width=\"300\">\n                <TextBox Header=\"Header Text\" PlaceholderText=\"Placeholder Text\" Margin=\"0,6\" />\n                <TextBox Header=\"TextBox\" Text=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Margin=\"0,6\" />\n                <TextBox Height=\"96\" TextWrapping=\"Wrap\" Header=\"Multiline TextBox\" AcceptsReturn=\"True\" Text=\"{Binding Details, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Margin=\"0,6\" />\n                <PasswordBox Header=\"PasswordBox\" Password=\"{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" Margin=\"0,6\" IsPasswordRevealButtonEnabled=\"{Binding IsChecked, ElementName=IsPasswordRevealButtonEnabledCheckBox}\" />\n                <CheckBox Content=\"IsPasswordRevealButtonEnabled\" Margin=\"0,6\" IsChecked=\"{Binding IsPasswordRevealButtonEnabled, Mode=TwoWay, ElementName=passwordBox}\" x:Name=\"IsPasswordRevealButtonEnabledCheckBox\" />\n            </StackPanel>\n        </PivotItem>\n        <PivotItem Header=\"RichTextBox\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Button\" DataContext=\"{Binding Item}\" />\n        <!-- CommandBar -->\n        <!-- RepeatButton -->\n        <!-- ToggleButton -->\n        <!-- ToggleSwitch -->\n        <PivotItem Header=\"DatePicker\" DataContext=\"{Binding Item}\" />\n        <!-- DatePickerFlyout -->\n        <!-- TimePicker -->\n        <!-- TimePickerFlyout -->\n        <PivotItem Header=\"Flyout\" DataContext=\"{Binding Item}\">\n            <!-- Tooltip -->\n            <Button VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Content=\"Click me\">\n                <Button.Flyout>\n                    <Flyout Placement=\"Bottom\">\n                        <Button Content=\"Are you sure?\" />\n                    </Flyout>\n                </Button.Flyout>\n            </Button>\n        </PivotItem>\n        <PivotItem Header=\"HyperlinkButton\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Image\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"MapControl\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"MediaElement\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"ProgressBar\" DataContext=\"{Binding Item}\">\n            <StackPanel VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\n                <ProgressBar x:Name=\"MyProgressBar\" Minimum=\"0\" Maximum=\"100\" Value=\"25\" />\n                <Slider Minimum=\"0\" Maximum=\"100\" Value=\"{Binding Value, ElementName=MyProgressBar, Mode=TwoWay}\" />\n            </StackPanel>\n        </PivotItem>\n        <PivotItem Header=\"ProgressRing\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"RadioButton\" DataContext=\"{Binding Item}\" />\n        <!-- CheckBox -->\n        <PivotItem Header=\"ViewBox\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"WebView\" DataContext=\"{Binding Item}\" />\n    </Pivot>\n\n</Page>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/InputControls.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Samples.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class InputControls : Page\n    {\n        public InputControls()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/ItemsControls.xaml",
    "content": "﻿<Page\n    x:Class=\"Samples.Views.ItemsControls\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:SampleViewModel xmlns:vm=\"using:Samples.ViewModels\" />\n    </Page.DataContext>\n\n    <Pivot Title=\"Input Controls\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <PivotItem Header=\"ComboBox\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"FlipView\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"GridView\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Hub\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"ListBox\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"ListView\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Pivot\" DataContext=\"{Binding Item}\" />\n    </Pivot>\n</Page>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/ItemsControls.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Samples.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class ItemsControls : Page\n    {\n        public ItemsControls()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/LayoutControls.xaml",
    "content": "﻿<Page\n    x:Class=\"Samples.Views.LayoutControls\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n    <Page.DataContext>\n        <vm:SampleViewModel xmlns:vm=\"using:Samples.ViewModels\" />\n    </Page.DataContext>\n\n    <Pivot Title=\"Input Controls\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <PivotItem Header=\"Canvas\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Flyout\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"Grid\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"StackPanel\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"ViewBox\" DataContext=\"{Binding Item}\" />\n        <PivotItem Header=\"WebView\" DataContext=\"{Binding Item}\" />\n    </Pivot>\n</Page>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/LayoutControls.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Samples.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class LayoutControls : Page\n    {\n        public LayoutControls()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"Samples.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:models=\"using:Samples.Models\"\n    mc:Ignorable=\"d\">\n\n    <Hub Header=\"XAML Control Demos\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <HubSection Width=\"600\">\n            <DataTemplate>\n                <GridView IsItemClickEnabled=\"True\" ItemClick=\"GridView_ItemClick\">\n                    <ItemsControl.ItemContainerStyle>\n                        <Style TargetType=\"GridViewItem\">\n                            <Setter Property=\"Height\" Value=\"100\" />\n                            <Setter Property=\"Width\" Value=\"200\" />\n                            <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                            <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\" />\n                        </Style>\n                    </ItemsControl.ItemContainerStyle>\n                    <ItemsControl.ItemTemplate>\n                        <DataTemplate>\n                            <Grid Background=\"SteelBlue\">\n                                <Grid.RowDefinitions>\n                                    <RowDefinition />\n                                    <RowDefinition Height=\"Auto\" />\n                                </Grid.RowDefinitions>\n                                <Rectangle Grid.Row=\"1\">\n                                    <Rectangle.Fill>\n                                        <SolidColorBrush Color=\"White\" Opacity=\".5\" />\n                                    </Rectangle.Fill>\n                                </Rectangle>\n                                <TextBlock Grid.Row=\"1\" Text=\"{Binding Text}\" Margin=\"5\" />\n                            </Grid>\n                        </DataTemplate>\n                    </ItemsControl.ItemTemplate>\n                    <ItemsControl.Items>\n                        <models:MenuItem Key=\"1\" Text=\"Layout Controls\" />\n                        <models:MenuItem Key=\"2\" Text=\"Input Controls\" />\n                        <models:MenuItem Key=\"3\" Text=\"Items Controls\" />\n                        <models:MenuItem Key=\"4\" Text=\"Geometry Controls\" />\n                        <models:MenuItem Key=\"5\" Text=\"Transforms\" />\n                    </ItemsControl.Items>\n                </GridView>\n            </DataTemplate>\n        </HubSection>\n    </Hub>\n</Page>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace Samples.Views\n{\n    public sealed partial class MainPage : Page\n    {\n        public MainPage()\n        {\n            this.InitializeComponent();\n        }\n\n        private void GridView_ItemClick(object sender, ItemClickEventArgs e)\n        {\n            var item = e.ClickedItem as Models.MenuItem;\n            if (item.Key == 1)\n                this.Frame.Navigate(typeof(Views.LayoutControls));\n            else if (item.Key == 2)\n                this.Frame.Navigate(typeof(Views.InputControls));\n            else if (item.Key == 3)\n                this.Frame.Navigate(typeof(Views.ItemsControls));\n            else if (item.Key == 4)\n                this.Frame.Navigate(typeof(Views.GeometryControls));\n            else if (item.Key == 4)\n                this.Frame.Navigate(typeof(Views.Transforms));\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/Transforms.xaml",
    "content": "﻿<Page\n    x:Class=\"Samples.Views.Transforms\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:Samples.Views\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.DataContext>\n        <vm:SampleViewModel xmlns:vm=\"using:Samples.ViewModels\" />\n    </Page.DataContext>\n\n    <Pivot Title=\"Render Transforms\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <PivotItem Header=\"Translate\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Scale\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Skew\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Rotate\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Projection\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Transform3d\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Clipping\" DataContext=\"{Binding Item}\"/>\n        <PivotItem Header=\"Brushes\" DataContext=\"{Binding Item}\"/>\n    </Pivot>\n</Page>\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/Views/Transforms.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices.WindowsRuntime;\nusing Windows.Foundation;\nusing Windows.Foundation.Collections;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Navigation;\n\n// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace Samples.Views\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class Transforms : Page\n    {\n        public Transforms()\n        {\n            this.InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "XamlControls/XamlControls-Blank/XamlControls-Blank.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{F5757ADA-2336-4744-B072-19FBFE5B9AC2}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Samples</RootNamespace>\n    <AssemblyName>Samples</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>XamlControls-Blank_TemporaryKey.pfx</PackageCertificateKeyFile>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UAP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Models\\MenuItem.cs\" />\n    <Compile Include=\"Models\\TodoItem.cs\" />\n    <Compile Include=\"Models\\TodoList.cs\" />\n    <Compile Include=\"Mvvm\\BindableBase.cs\" />\n    <Compile Include=\"Mvvm\\Command.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ViewModels\\SampleViewModel.cs\" />\n    <Compile Include=\"Views\\GeometryControls.xaml.cs\">\n      <DependentUpon>GeometryControls.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\InputControls.xaml.cs\">\n      <DependentUpon>InputControls.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\ItemsControls.xaml.cs\">\n      <DependentUpon>ItemsControls.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\LayoutControls.xaml.cs\">\n      <DependentUpon>LayoutControls.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\Transforms.xaml.cs\">\n      <DependentUpon>Transforms.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"ApplicationInsights.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"XamlControls-Blank_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\Logo.scale-100.png\" />\n    <Content Include=\"Assets\\SmallLogo.scale-100.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Assets\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Assets\\WideLogo.scale-100.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Views\\GeometryControls.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\InputControls.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\ItemsControls.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\LayoutControls.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\Transforms.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.ApplicationInsights, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.Extensibility.Windows, Version=0.14.3.177, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\\lib\\win81\\Microsoft.ApplicationInsights.Extensibility.Windows.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ApplicationInsights.PersistenceChannel, Version=0.14.3.186, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\\lib\\portable-win81+wpa81\\Microsoft.ApplicationInsights.PersistenceChannel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Numerics.Vectors.4.0.0\\lib\\win8\\System.Numerics.Vectors.WindowsRuntime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup />\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <Import Project=\"..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets\" Condition=\"Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.16-beta\\build\\portable-net45+win8+wpa81\\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))\" />\n    <Error Condition=\"!Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets'))\" />\n  </Target>\n  <Import Project=\"..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets\" Condition=\"Exists('..\\packages\\Microsoft.ApplicationInsights.0.14.3-build00177\\build\\portable-win81+wpa81\\Microsoft.ApplicationInsights.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "XamlControls/XamlControls.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.22823.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"XamlControls-Blank\", \"XamlControls-Blank\\XamlControls-Blank.csproj\", \"{F5757ADA-2336-4744-B072-19FBFE5B9AC2}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x64.Build.0 = Debug|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x86.Build.0 = Debug|x86\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|ARM.Build.0 = Release|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x64.ActiveCfg = Release|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x64.Build.0 = Release|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x64.Deploy.0 = Release|x64\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x86.ActiveCfg = Release|x86\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x86.Build.0 = Release|x86\n\t\t{F5757ADA-2336-4744-B072-19FBFE5B9AC2}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  }
]