diff --git a/.gitignore b/.gitignore index 963bee262..75d3a4bd2 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,7 @@ bld/ # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ +**/wwwroot/lib/ # MSTest test Results [Tt]est[Rr]esult*/ @@ -256,4 +256,5 @@ pub/ /src/Services/Identity/eShopOnContainers.Identity/Properties/launchSettings.json #Ignore marker-file used to know which docker files we have. -.eshopdocker_* \ No newline at end of file +.eshopdocker_* +/src/Web/WebMVC/wwwroot/lib diff --git a/README.md b/README.md index ae3b7f54b..f670627aa 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,15 @@ Sample .NET Core reference application, powered by Microsoft, based on a simplif **Architecture overview**: This reference application is cross-platform either at the server and client side, thanks to .NET Core services capable of running on Linux or Windows containers depending on your Docker host, and to Xamarin for mobile apps running on Android, iOS or Windows/UWP plus any browser for the client web apps. The architecture proposes a simplified microservice oriented architecture implementation with multiple autonomous microservices (each one owning its own data/db) and implementing different approaches within each microservice (simple CRUD vs. DDD/CQRS patterns) using Http as the current communication protocol.
-The plan is to add asynchronous communication for data updates propagation across multiple services based on integration events and an event bus plus other features defined at the roadmap. +It also supports asynchronous communication for data updates propagation across multiple services based on Integration Events and an Event Bus plus other features defined at the roadmap.
+The microservices are different in type, meaning different internal architecture patterns approaches depending on it purpose, as shown in the image below. +
+ +
Additional miroservice styles with other frameworks and No-SQL databases will be added, eventually. This is a great opportunity for pull requests from the community, like a new microservice using Nancy, or even other languages like Node, Go, Python or data containers with MongoDB with Azure DocDB compatibility, PostgreSQL, RavenDB, Event Store, MySql, etc. You name it! :) @@ -30,15 +34,14 @@ Additional miroservice styles with other frameworks and No-SQL databases will be ## Related documentation and guidance While developing this reference application, we are creating a reference Guide/eBook named "Architecting and Developing Containerized and Microservice based .NET Applications" which explains in detail how to develop this kind of architectural style (microservices, Docker containers, Domain-Driven Design for certain microservices) plus other simpler architectural styles, like monolithic apps that can also live as Docker containers.
-There's also an additional eBook focusing on Containers/Docker lifecycle (DevOps, CI/CD, etc.) with Microsoft Tools, already published. -You can start reviewing these Guides/eBooks here: +There are also additional eBooks focusing on Containers/Docker lifecycle (DevOps, CI/CD, etc.) with Microsoft Tools, already published plus an additional eBook focusing on Enterprise Apps Patterns with Xamarin.Forms. +You can download them and start reviewing these Guides/eBooks here:
-You can download both eBooks from here: -| Architecting & Developing | Containers Lifecycle & CI/CD | -| ------------ | ------------| -| | | -| **Download** (Early DRAFT, still work in progress) | **Download** - First Edition from late 2016 | +| Architecting & Developing | Containers Lifecycle & CI/CD | App patterns with Xamarin.Forms | +| ------------ | ------------| ------------| +| | | | +| **Download** (Early DRAFT, still work in progress) | **Download** (First Edition from late 2016) | **Download** (Early DRAFT, still work in progress) | Send feedback to [cesardl@microsoft.com](cesardl@microsoft.com)
@@ -109,7 +112,7 @@ The script will build the code and corresponding Docker images, push the latter
## Sending feedback and pull requests
As mentioned, we'd appreciate to your feedback, improvements and ideas.
-You can create new issues at the issues section, do pull requests and/or send emails to eshop_feedback@service.microsoft.com
+You can create new issues at the issues section, do pull requests and/or send emails to **eshop_feedback@service.microsoft.com**
## Questions
[QUESTION] Answer +1 if the solution is working for you (Through VS2017 or CLI environment):
diff --git a/_docker/rabbitmq/Dockerfile.nanowin b/_docker/rabbitmq/Dockerfile.nanowin
new file mode 100644
index 000000000..26474c235
--- /dev/null
+++ b/_docker/rabbitmq/Dockerfile.nanowin
@@ -0,0 +1,29 @@
+#https://github.com/spring2/dockerfiles/tree/master/rabbitmq
+
+FROM microsoft/windowsservercore
+
+SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
+
+ENV chocolateyUseWindowsCompression false
+
+RUN iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')); \
+ choco install -y curl;
+
+RUN choco install -y erlang
+ENV ERLANG_SERVICE_MANAGER_PATH="C:\Program Files\erl8.2\erts-8.2\bin"
+RUN choco install -y rabbitmq
+ENV RABBITMQ_SERVER="C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5"
+
+ENV RABBITMQ_CONFIG_FILE="c:\rabbitmq"
+COPY rabbitmq.config C:/
+COPY rabbitmq.config C:/Users/ContainerAdministrator/AppData/Roaming/RabbitMQ/
+COPY enabled_plugins C:/Users/ContainerAdministrator/AppData/Roaming/RabbitMQ/
+
+
+EXPOSE 4369
+EXPOSE 5672
+EXPOSE 5671
+EXPOSE 15672
+
+WORKDIR C:/Program\ Files/RabbitMQ\ Server/rabbitmq_server-3.6.5/sbin
+CMD .\rabbitmq-server.bat
\ No newline at end of file
diff --git a/_docker/rabbitmq/enabled_plugins b/_docker/rabbitmq/enabled_plugins
new file mode 100644
index 000000000..9eafc419b
--- /dev/null
+++ b/_docker/rabbitmq/enabled_plugins
@@ -0,0 +1 @@
+[rabbitmq_amqp1_0,rabbitmq_management].
diff --git a/_docker/rabbitmq/rabbitmq.config b/_docker/rabbitmq/rabbitmq.config
new file mode 100644
index 000000000..f7837f213
--- /dev/null
+++ b/_docker/rabbitmq/rabbitmq.config
@@ -0,0 +1 @@
+[{rabbit, [{loopback_users, []}]}].
\ No newline at end of file
diff --git a/_docker/redis/Dockerfile.nanowin b/_docker/redis/Dockerfile.nanowin
new file mode 100644
index 000000000..a08bcb0b6
--- /dev/null
+++ b/_docker/redis/Dockerfile.nanowin
@@ -0,0 +1,30 @@
+# The MSI installs a service which is hard to override, so let's use a zip file.
+
+FROM microsoft/windowsservercore
+MAINTAINER alexellis2@gmail.com
+
+SHELL ["powershell"]
+RUN $ErrorActionPreference = 'Stop'; \
+ wget https://github.com/MSOpenTech/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip -OutFile Redis-x64-3.2.100.zip ; \
+ Expand-Archive Redis-x64-3.2.100.zip -dest 'C:\\Program Files\\Redis\\' ; \
+ Remove-Item Redis-x64-3.2.100.zip -Force
+
+RUN setx PATH '%PATH%;C:\\Program Files\\Redis\\'
+WORKDIR 'C:\\Program Files\\Redis\\'
+
+
+
+RUN Get-Content redis.windows.conf | Where { $_ -notmatch 'bind 127.0.0.1' } | Set-Content redis.openport.conf ; \
+ Get-Content redis.openport.conf | Where { $_ -notmatch 'protected-mode yes' } | Set-Content redis.unprotected.conf ; \
+ Add-Content redis.unprotected.conf 'protected-mode no' ; \
+ Add-Content redis.unprotected.conf 'bind 0.0.0.0' ; \
+ Get-Content redis.unprotected.conf
+
+EXPOSE 6379
+
+RUN set-itemproperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name ServerPriorityTimeLimit -Value 0 -Type DWord
+
+# Define our command to be run when launching the container
+CMD .\\redis-server.exe .\\redis.unprotected.conf --port 6379 ; \
+ Write-Host Redis Started... ; \
+ while ($true) { Start-Sleep -Seconds 3600 }
diff --git a/cli-linux/build-bits-linux.sh b/cli-linux/build-bits-linux.sh
index 27f120214..e99df361b 100644
--- a/cli-linux/build-bits-linux.sh
+++ b/cli-linux/build-bits-linux.sh
@@ -6,6 +6,7 @@ projectList=(
"/src/Services/Identity/Identity.API"
"/src/Web/WebMVC"
"/src/Web/WebSPA"
+ "/src/Web/WebStatus
)
# Build SPA app
@@ -36,4 +37,4 @@ done
#fi
# No need to build the images, docker build or docker compose will
-# do that using the images and containers defined in the docker-compose.yml file.
\ No newline at end of file
+# do that using the images and containers defined in the docker-compose.yml file.
diff --git a/cli-mac/build-bits.sh b/cli-mac/build-bits.sh
index caf246e95..f8ad2e2f9 100644
--- a/cli-mac/build-bits.sh
+++ b/cli-mac/build-bits.sh
@@ -7,6 +7,7 @@ projectList=(
"../src/Services/Identity/Identity.API"
"../src/Web/WebMVC"
"../src/Web/WebSPA"
+ "../src/Web/WebStatus"
)
for project in "${projectList[@]}"
diff --git a/cli-windows/build-bits-expanded.ps1 b/cli-windows/build-bits-expanded.ps1
deleted file mode 100644
index 155739d7d..000000000
--- a/cli-windows/build-bits-expanded.ps1
+++ /dev/null
@@ -1,160 +0,0 @@
-
-#########################################################################################################
-# This "expanded Script" can be used when debugging issues when building the .NET Core bits
-# as it is easier to follow and debug than when using a loop (like in the optimized build-bits.ps1)
-#########################################################################################################
-
-Param([string] $rootPath)
-$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path
-
-Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow
-
-if ([string]::IsNullOrEmpty($rootPath)) {
- $rootPath = "$scriptPath\.."
-}
-Write-Host "Root path used is $rootPath" -ForegroundColor Yellow
-
-# *** WebMVC paths ***
-$webMVCPath = $rootPath + "\src\Web\WebMVC"
-$webMVCPathToProject = $webMVCPath + "\WebMVC.csproj"
-Write-Host "webMVCPathToProject is $webMVCPathToProject" -ForegroundColor Yellow
-$webMVCPathToPub = $webMVCPath + "\obj\Docker\publish"
-Write-Host "webMVCPathToPub is $webMVCPathToPub" -ForegroundColor Yellow
-
-
-# *** WebSPA paths ***
-$webSPAPath = $rootPath + "\src\Web\WebSPA"
-$webSPAPathToProject = $webSPAPath + "\WebSPA.csproj"
-Write-Host "webSPAPathToProject is $webSPAPathToProject" -ForegroundColor Yellow
-$webSPAPathToPub = $webSPAPath + "\obj\Docker\publish"
-Write-Host "webSPAPathToPub is $webSPAPathToPub" -ForegroundColor Yellow
-
-
-# *** IdentitySvc paths ***
-$identitySvcPath = $rootPath + "\src\Services\Identity\Identity.API"
-$identitySvcToProject = $identitySvcPath + "\Identity.API.csproj"
-Write-Host "identitySvcToProject is $identitySvcToProject" -ForegroundColor Yellow
-$identitySvcPathToPub = $identitySvcPath + "\obj\Docker\publish"
-Write-Host "identitySvcPathToPub is $identitySvcPathToPub" -ForegroundColor Yellow
-
-
-# *** Catalog paths ***
-$catalogPath = $rootPath + "\src\Services\Catalog\Catalog.API"
-$catalogPathToProject = $catalogPath + "\Catalog.API.csproj"
-Write-Host "catalogPathToProject is $catalogPathToProject" -ForegroundColor Yellow
-$catalogPathToPub = $catalogPath + "\obj\Docker\publish"
-Write-Host "catalogPathToPub is $catalogPathToPub" -ForegroundColor Yellow
-
-
-# *** Ordering paths ***
-$orderingPath = $rootPath + "\src\Services\Ordering\Ordering.API"
-$orderingPathToProject = $orderingPath + "\Ordering.API.csproj"
-Write-Host "orderingPathToProject is $orderingPathToProject" -ForegroundColor Yellow
-$orderingPathToPub = $orderingPath + "\obj\Docker\publish"
-Write-Host "orderingPathToPub is $orderingPathToPub" -ForegroundColor Yellow
-
-# *** Basket paths ***
-$basketPath = $rootPath + "\src\Services\Basket\Basket.API"
-$basketPathToProject = $basketPath + "\Basket.API.csproj"
-Write-Host "basketPathToProject is $basketPathToProject" -ForegroundColor Yellow
-$basketPathToPub = $basketPath + "\obj\Docker\publish"
-Write-Host "basketPathToPub is $basketPathToPub" -ForegroundColor Yellow
-
-
-########################################################################################
-# Delete old eShop dotnet publish bits
-########################################################################################
-# Write-Host "Deleting previous dotnet publish bits from all projects" -ForegroundColor Blue
-
-remove-item -path $WebMVCPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-remove-item -path $webSPAPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-remove-item -path $identitySvcPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-remove-item -path $catalogPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-remove-item -path $orderingPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-remove-item -path $basketPathToPub -Force -Recurse -ErrorAction SilentlyContinue
-
-
-
-########################################################################################
-# Building DotNet bits
-########################################################################################
-
-# WebMVC: Build dotnet bits
-Write-Host "WebMVC: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $WebMVCPathToProject
-dotnet build $WebMVCPathToProject
-dotnet publish $WebMVCPathToProject -o $WebMVCPathToPub
-
-
-# WebSPA: Build dotnet bits
-Write-Host "WebSPA: Installing npm dependencies"
-#TEMP COMMENT--- Start-Process -WorkingDirectory $webSPAPath -NoNewWindow -Wait npm i
-
-Write-Host "WebSPA: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $webSPAPathToProject
-dotnet build $webSPAPathToProject
-dotnet publish $webSPAPathToProject -o $webSPAPathToPub
-
-
-# Identity Service: Build dotnet bits
-Write-Host "Identity Service: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $identitySvcToProject
-dotnet build $identitySvcToProject
-dotnet publish $identitySvcToProject -o $identitySvcPathToPub
-
-
-# Catalog Service: Build dotnet bits
-Write-Host "Catalog Service: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $catalogPathToProject
-dotnet build $catalogPathToProject
-dotnet publish $catalogPathToProject -o $catalogPathToPub
-
-
-# Ordering Service: Build dotnet bits
-Write-Host "Ordering Service: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $orderingPathToProject
-dotnet build $orderingPathToProject
-dotnet publish $orderingPathToProject -o $orderingPathToPub
-
-
-# Basket Service: Build dotnet bits
-Write-Host "Basket Service: Restore Dependencies, dotnet build and dotnet publish" -ForegroundColor Blue
-dotnet restore $basketPathToProject
-dotnet build $basketPathToProject
-dotnet publish $basketPathToProject -o $basketPathToPub
-
-
-
-########################################################################################
-# Delete old eShop Docker images
-########################################################################################
-
-$imagesToDelete = docker images --filter=reference="eshop/*" -q
-
-If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."}
-Else
-{
- # Delete all containers
- Write-Host "Deleting all containers in local Docker Host"
- docker rm $(docker ps -a -q) -f
-
- # Delete all eshop images
- Write-Host "Deleting eShop images in local Docker repo"
- Write-Host $imagesToDelete
- docker rmi $(docker images --filter=reference="eshop/*" -q) -f
-}
-
-
-########################################################################################
-# Build new eShop images
-########################################################################################
-
-# WE DON'T NEED DOCKER BUILD AS WE CAN RUN "DOCKER-COMPOSE BUILD" OR "DOCKER-COMPOSE UP" AND IT WILL BUILD ALL THE IMAGES IN THE .YML FOR US
-
-#*** build docker images ***
-# docker build -t eshop/web $webPathToPub
-# docker build -t eshop/catalog.api $catalogPathToPub
-# docker build -t eshop/ordering.api $orderingApiPathToPub
-# docker build -t eshop/basket.api $basketPathToPub
-# docker build -t eshop/webspa $webSPAPathToPub
-# docker build -t eshop/identity $identitySvcPathToPub
\ No newline at end of file
diff --git a/cli-windows/build-bits.ps1 b/cli-windows/build-bits.ps1
index 21a1b6e34..26651da5b 100644
--- a/cli-windows/build-bits.ps1
+++ b/cli-windows/build-bits.ps1
@@ -15,13 +15,14 @@ $projectPaths =
@{Path="$rootPath\src\Services\Catalog\Catalog.API";Prj="Catalog.API.csproj"},
@{Path="$rootPath\src\Services\Ordering\Ordering.API";Prj="Ordering.API.csproj"},
@{Path="$rootPath\src\Services\Basket\Basket.API";Prj="Basket.API.csproj"}
+ @{Path="$rootPath\src\Web\WebStatus";Prj="WebStatus.csproj"}
$projectPaths | foreach {
$projectPath = $_.Path
$projectFile = $_.Prj
$outPath = $_.Path + "\obj\Docker\publish"
$projectPathAndFile = "$projectPath\$projectFile"
- Write-Host "Deleting $outPath" -ForegroundColor Yellow
+ Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow
remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue
Write-Host "Publishing $projectPathAndFile to $outPath" -ForegroundColor Yellow
dotnet restore $projectPathAndFile
diff --git a/docker-compose-external.yml b/docker-compose-external.yml
index 6bce32a3e..ff1641cdd 100644
--- a/docker-compose-external.yml
+++ b/docker-compose-external.yml
@@ -8,3 +8,8 @@ services:
image: redis
ports:
- "6379:6379"
+
+ rabbitmq:
+ image: rabbitmq
+ ports:
+ - "5672:5672"
diff --git a/docker-compose-windows.override.yml b/docker-compose-windows.override.yml
new file mode 100644
index 000000000..c85864d72
--- /dev/null
+++ b/docker-compose-windows.override.yml
@@ -0,0 +1,79 @@
+version: '2.1'
+
+# The default docker-compose.override file can use the "localhost" as the external name for testing web apps within the same dev machine.
+# The ESHOP_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like:
+# ESHOP_EXTERNAL_DNS_NAME_OR_IP=localhost
+# but values present in the environment vars at runtime will always override those defined inside the .env file
+# An external IP or DNS name has to be used (instead localhost and the 10.0.75.1 IP) when testing the Web apps and the Xamarin apps from remote machines/devices using the same WiFi, for instance.
+
+services:
+
+ basket.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5103
+ - ConnectionString=basket.data
+ - identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
+ ports:
+ - "5103:5103"
+
+ catalog.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5101
+ - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word
+ - ExternalCatalogBaseUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5101 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
+ ports:
+ - "5101:5101"
+
+ identity.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5105
+ - SpaClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5104
+ - ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word
+ - MvcClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your local dev-machine firewall at range 5100-5105.
+ ports:
+ - "5105:5105"
+
+ ordering.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5102
+ - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
+ - identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
+ ports:
+ - "5102:5102"
+
+ webspa:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5104
+ - CatalogUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5101
+ - OrderingUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5102
+ - IdentityUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - BasketUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5103
+ ports:
+ - "5104:5104"
+
+ webmvc:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5100
+ - CatalogUrl=http://catalog.api:5101
+ - OrderingUrl=http://ordering.api:5102
+ - BasketUrl=http://basket.api:5103
+ - IdentityUrl=http://10.0.75.1:5105 #Local: Use 10.0.75.1 in a "Docker for Windows" environment, if using "localhost" from browser.
+ #Remote: Use ${ESHOP_EXTERNAL_DNS_NAME_OR_IP} if using external IP or DNS name from browser.
+ ports:
+ - "5100:5100"
+
+ sql.data:
+ environment:
+ - SA_PASSWORD=Pass@word
+ - ACCEPT_EULA=Y
+ ports:
+ - "5433:1433"
\ No newline at end of file
diff --git a/docker-compose-windows.prod.yml b/docker-compose-windows.prod.yml
new file mode 100644
index 000000000..8d00df4ca
--- /dev/null
+++ b/docker-compose-windows.prod.yml
@@ -0,0 +1,80 @@
+version: '2.1'
+
+# The Production docker-compose file has to have the external/real IPs or DNS names for the services
+# The ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like:
+# ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=192.168.88.248
+# but values present in the environment vars at runtime will always override those defined inside the .env file
+# An external IP or DNS name has to be used when testing the Web apps and the Xamarin apps from remote machines/devices using the same WiFi, for instance.
+#
+# Set ASPNETCORE_ENVIRONMENT=Development to get errors while testing.
+#
+# You need to start it with the following CLI command:
+# docker-compose -f docker-compose-windows.yml -f docker-compose-windows.prod.yml up -d
+
+services:
+
+ basket.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5103
+ - ConnectionString=basket.data
+ - identityUrl=http://identity.api:5105 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ ports:
+ - "5103:5103"
+
+ catalog.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5101
+ - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word
+ - ExternalCatalogBaseUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5101 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ ports:
+ - "5101:5101"
+
+ identity.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5105
+ - SpaClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5104
+ - ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word
+ - MvcClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your host's firewall at range 5100-5105.
+ ports:
+ - "5105:5105"
+
+ ordering.api:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5102
+ - ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
+ - identityUrl=http://identity.api:5105 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ ports:
+ - "5102:5102"
+
+ webspa:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5104
+ - CatalogUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5101
+ - OrderingUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5102
+ - IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ - BasketUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5103
+ ports:
+ - "5104:5104"
+
+ webmvc:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5100
+ - CatalogUrl=http://catalog.api:5101
+ - OrderingUrl=http://ordering.api:5102
+ - IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser.
+ - BasketUrl=http://basket.api:5103
+ ports:
+ - "5100:5100"
+
+ sql.data:
+ environment:
+ - SA_PASSWORD=Pass@word
+ - ACCEPT_EULA=Y
+ ports:
+ - "5433:1433"
\ No newline at end of file
diff --git a/docker-compose-windows.yml b/docker-compose-windows.yml
new file mode 100644
index 000000000..b8eaabfc8
--- /dev/null
+++ b/docker-compose-windows.yml
@@ -0,0 +1,80 @@
+version: '2.1'
+
+services:
+ basket.api:
+ image: eshop/basket.api
+ build:
+ context: ./src/Services/Basket/Basket.API
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - basket.data
+ - identity.api
+
+ catalog.api:
+ image: eshop/catalog.api
+ build:
+ context: ./src/Services/Catalog/Catalog.API
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - sql.data
+
+ identity.api:
+ image: eshop/identity.api
+ build:
+ context: ./src/Services/Identity/Identity.API
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - sql.data
+
+ ordering.api:
+ image: eshop/ordering.api
+ build:
+ context: ./src/Services/Ordering/Ordering.API
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - sql.data
+
+ webspa:
+ image: eshop/webspa
+ build:
+ context: ./src/Web/WebSPA
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - identity.api
+ - basket.api
+
+ webmvc:
+ image: eshop/webmvc
+ build:
+ context: ./src/Web/WebMVC
+ dockerfile: Dockerfile.nanowin
+ depends_on:
+ - catalog.api
+ - ordering.api
+ - identity.api
+ - basket.api
+
+ sql.data:
+ image: microsoft/mssql-server-windows
+
+ basket.data:
+ image: redis
+ build:
+ context: ./_docker/redis
+ dockerfile: Dockerfile.nanowin
+ ports:
+ - "6379:6379"
+
+ rabbitmq:
+ image: rabbitmq
+ build:
+ context: ./_docker/rabbitmq
+ dockerfile: Dockerfile.nanowin
+ ports:
+ - "5672:5672"
+
+networks:
+ default:
+ external:
+ name: nat
+
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
index f51115a0f..8b0b4602b 100644
--- a/docker-compose.override.yml
+++ b/docker-compose.override.yml
@@ -14,6 +14,7 @@ services:
- ASPNETCORE_URLS=http://0.0.0.0:5103
- ConnectionString=basket.data
- identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
ports:
- "5103:5103"
@@ -22,7 +23,8 @@ services:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:5101
- ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word
- - ExternalCatalogBaseUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5101 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - ExternalCatalogBaseUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5101 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
ports:
- "5101:5101"
@@ -31,6 +33,7 @@ services:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:5105
- SpaClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5104
+ - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback #localhost do not work for UWP login, so we have to use "external" IP always
- ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word
- MvcClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your local dev-machine firewall at range 5100-5105.
ports:
@@ -42,6 +45,8 @@ services:
- ASPNETCORE_URLS=http://0.0.0.0:5102
- ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
- identityUrl=http://identity.api:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
+ - BasketUrl=http://basket.api:5103
+ - EventBusConnection=rabbitmq
ports:
- "5102:5102"
@@ -73,4 +78,17 @@ services:
- SA_PASSWORD=Pass@word
- ACCEPT_EULA=Y
ports:
- - "5433:1433"
\ No newline at end of file
+ - "5433:1433"
+
+ webstatus:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ - ASPNETCORE_URLS=http://0.0.0.0:5107
+ - CatalogUrl=http://catalog.api:5101/hc
+ - OrderingUrl=http://ordering.api:5102/hc
+ - BasketUrl=http://basket.api:5103/hc
+ - IdentityUrl=http://identity.api:5105/hc
+ - mvc=http://webmvc:5100/hc
+ - spa=http://webspa:5104/hc
+ ports:
+ - "5107:5107"
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 14d8114ea..5a88f2c6c 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -8,7 +8,7 @@ version: '2'
#
# Set ASPNETCORE_ENVIRONMENT=Development to get errors while testing.
#
-# You need to start it with the following CLI command:
+# You need to start it with the following CLI command:
# docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
services:
@@ -19,6 +19,7 @@ services:
- ASPNETCORE_URLS=http://0.0.0.0:5103
- ConnectionString=basket.data
- identityUrl=http://identity.api:5105 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
ports:
- "5103:5103"
@@ -28,6 +29,7 @@ services:
- ASPNETCORE_URLS=http://0.0.0.0:5101
- ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word
- ExternalCatalogBaseUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5101 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ - EventBusConnection=rabbitmq
ports:
- "5101:5101"
@@ -38,6 +40,7 @@ services:
- SpaClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5104
- ConnectionStrings__DefaultConnection=Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word
- MvcClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your host's firewall at range 5100-5105.
+ - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback
ports:
- "5105:5105"
@@ -47,6 +50,8 @@ services:
- ASPNETCORE_URLS=http://0.0.0.0:5102
- ConnectionString=Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
- identityUrl=http://identity.api:5105 #Local: You need to open your host's firewall at range 5100-5105. at range 5100-5105.
+ - BasketUrl=http://basket.api:5103
+ - EventBusConnection=rabbitmq
ports:
- "5102:5102"
@@ -77,4 +82,17 @@ services:
- SA_PASSWORD=Pass@word
- ACCEPT_EULA=Y
ports:
- - "5433:1433"
\ No newline at end of file
+ - "5433:1433"
+
+ webstatus:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Production
+ - ASPNETCORE_URLS=http://0.0.0.0:5107
+ - CatalogUrl=http://catalog.api:5101/hc
+ - OrderingUrl=http://ordering.api:5102/hc
+ - BasketUrl=http://basket.api:5103/hc
+ - mvc=http://webmvc:5100/hc
+ - spa=http://webspa:5104/hc
+ - IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser.
+ ports:
+ - "5107:5107"
\ No newline at end of file
diff --git a/docker-compose.vs.debug.yml b/docker-compose.vs.debug.yml
index 2446fdb2c..2e7145637 100644
--- a/docker-compose.vs.debug.yml
+++ b/docker-compose.vs.debug.yml
@@ -90,3 +90,18 @@ services:
entrypoint: tail -f /dev/null
labels:
- "com.microsoft.visualstudio.targetoperatingsystem=linux"
+
+ webstatus:
+ image: eshop/webstatus:dev
+ build:
+ args:
+ source: ${DOCKER_BUILD_SOURCE}
+ environment:
+ - DOTNET_USE_POLLING_FILE_WATCHER=1
+ volumes:
+ - ./src/Web/WebStatus:/app
+ - ~/.nuget/packages:/root/.nuget/packages:ro
+ - ~/clrdbg:/clrdbg:ro
+ entrypoint: tail -f /dev/null
+ labels:
+ - "com.microsoft.visualstudio.targetoperatingsystem=linux"
diff --git a/docker-compose.vs.release.yml b/docker-compose.vs.release.yml
index 4ea31f8ca..d1ca5b2c6 100644
--- a/docker-compose.vs.release.yml
+++ b/docker-compose.vs.release.yml
@@ -60,3 +60,13 @@ services:
entrypoint: tail -f /dev/null
labels:
- "com.microsoft.visualstudio.targetoperatingsystem=linux"
+
+ webstatus:
+ build:
+ args:
+ source: ${DOCKER_BUILD_SOURCE}
+ volumes:
+ - ~/clrdbg:/clrdbg:ro
+ entrypoint: tail -f /dev/null
+ labels:
+ - "com.microsoft.visualstudio.targetoperatingsystem=linux"
diff --git a/docker-compose.yml b/docker-compose.yml
index f3baeb346..09212da8e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -9,6 +9,7 @@ services:
depends_on:
- basket.data
- identity.api
+ - rabbitmq
catalog.api:
image: eshop/catalog.api
@@ -17,6 +18,7 @@ services:
dockerfile: Dockerfile
depends_on:
- sql.data
+ - rabbitmq
identity.api:
image: eshop/identity.api
@@ -61,3 +63,14 @@ services:
image: redis
ports:
- "6379:6379"
+
+ rabbitmq:
+ image: rabbitmq
+ ports:
+ - "5672:5672"
+
+ webstatus:
+ image: eshop/webstatus
+ build:
+ context: ./src/Web/WebStatus
+ dockerfile: Dockerfile
diff --git a/docs/Enterprise-Application-Patterns-using-XamarinForms.pdf b/docs/Enterprise-Application-Patterns-using-XamarinForms.pdf
new file mode 100644
index 000000000..dcd8d36d8
Binary files /dev/null and b/docs/Enterprise-Application-Patterns-using-XamarinForms.pdf differ
diff --git a/docs/architecting-and-developing-containerized-and-microservice-based-net-applications-ebook-early-draft.pdf b/docs/architecting-and-developing-containerized-and-microservice-based-net-applications-ebook-early-draft.pdf
index 948d628e5..46f571b73 100644
Binary files a/docs/architecting-and-developing-containerized-and-microservice-based-net-applications-ebook-early-draft.pdf and b/docs/architecting-and-developing-containerized-and-microservice-based-net-applications-ebook-early-draft.pdf differ
diff --git a/eShopOnContainers-ServicesAndWebApps.sln b/eShopOnContainers-ServicesAndWebApps.sln
index 183e75710..d4d39437c 100644
--- a/eShopOnContainers-ServicesAndWebApps.sln
+++ b/eShopOnContainers-ServicesAndWebApps.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26228.0
+VisualStudioVersion = 15.0.26228.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{932D8224-11F6-4D07-B109-DA28AD288A63}"
EndProject
@@ -39,10 +39,24 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.Infrastructure", "src\Services\Ordering\Ordering.Infrastructure\Ordering.Infrastructure.csproj", "{95F1F07C-4D92-4742-BD07-E5B805AAB651}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTest", "test\Services\UnitTest\UnitTest.csproj", "{7796F5D8-31FC-45A4-B673-19DE5BA194CF}"
+ ProjectSection(ProjectDependencies) = postProject
+ {A579E108-5445-403D-A407-339AC4D1611B} = {A579E108-5445-403D-A407-339AC4D1611B}
+ {F16E3C6A-1C94-4EAB-BE91-099618060B68} = {F16E3C6A-1C94-4EAB-BE91-099618060B68}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Identity.API", "src\Services\Identity\Identity.API\Identity.API.csproj", "{A579E108-5445-403D-A407-339AC4D1611B}"
EndProject
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{FEA0C318-FFED-4D39-8781-265718CA43DD}"
+ ProjectSection(ProjectDependencies) = postProject
+ {A579E108-5445-403D-A407-339AC4D1611B} = {A579E108-5445-403D-A407-339AC4D1611B}
+ {5B810E3D-112E-4857-B197-F09D2FD41E27} = {5B810E3D-112E-4857-B197-F09D2FD41E27}
+ {F16E3C6A-1C94-4EAB-BE91-099618060B68} = {F16E3C6A-1C94-4EAB-BE91-099618060B68}
+ {F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {F0333D8E-0B27-42B7-B2C6-78F3657624E2}
+ {42681D9D-750A-4DF7-BD9F-9292CFD5C253} = {42681D9D-750A-4DF7-BD9F-9292CFD5C253}
+ {2110CBB0-3B38-4EE4-A743-DF6968D80D90} = {2110CBB0-3B38-4EE4-A743-DF6968D80D90}
+ {CFE2FACB-4538-4B99-8A10-306F3882952D} = {CFE2FACB-4538-4B99-8A10-306F3882952D}
+ {231226CE-690B-4979-8870-9A79D80928E2} = {231226CE-690B-4979-8870-9A79D80928E2}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "src\Web\WebSPA\WebSPA.csproj", "{F16E3C6A-1C94-4EAB-BE91-099618060B68}"
EndProject
@@ -50,6 +64,30 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTests", "test\Se
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "test\Services\FunctionalTests\FunctionalTests.csproj", "{CFE2FACB-4538-4B99-8A10-306F3882952D}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildingBlocks", "BuildingBlocks", "{DB0EFB20-B024-4E5E-A75C-52143C131D25}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EventBus", "EventBus", "{807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBus", "src\BuildingBlocks\EventBus\EventBus\EventBus.csproj", "{0044B293-1DCC-4224-B948-00CF6DC7F510}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusRabbitMQ", "src\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj", "{8088F3FC-6787-45FA-A924-816EC81CBFAC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationEventLogEF", "src\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj", "{9EE28E45-1533-472B-8267-56C48855BA0E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HealthChecks", "HealthChecks", "{A81ECBC2-6B00-4DCD-8388-469174033379}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.AspNetCore.HealthChecks\Microsoft.AspNetCore.HealthChecks.csproj", "{DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks\Microsoft.Extensions.HealthChecks.csproj", "{942ED6E8-0050-495F-A0EA-01E97F63760C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks.Data", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks.Data\Microsoft.Extensions.HealthChecks.Data.csproj", "{7804FC60-23E6-490C-8E08-F9FEF829F184}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Resilience", "Resilience", "{FBF43D93-F2E7-4FF8-B4AB-186895949B88}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Resilience.Http", "src\BuildingBlocks\Resilience\Resilience.Http\Resilience.Http.csproj", "{D1C47FF1-91F1-4CAF-9ABB-AD642B821502}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -544,6 +582,390 @@ Global
{CFE2FACB-4538-4B99-8A10-306F3882952D}.Release|x64.Build.0 = Release|Any CPU
{CFE2FACB-4538-4B99-8A10-306F3882952D}.Release|x86.ActiveCfg = Release|Any CPU
{CFE2FACB-4538-4B99-8A10-306F3882952D}.Release|x86.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x64.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x86.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|ARM.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x64.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x86.Build.0 = Debug|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|ARM.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|ARM.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhone.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x64.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x64.Build.0 = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x86.ActiveCfg = Release|Any CPU
+ {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x86.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x64.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x86.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|ARM.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x64.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x86.Build.0 = Debug|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|ARM.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|ARM.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhone.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x64.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x64.Build.0 = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x86.ActiveCfg = Release|Any CPU
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x86.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x64.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x86.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|ARM.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x64.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x86.Build.0 = Debug|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|ARM.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|ARM.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhone.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.Build.0 = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.ActiveCfg = Release|Any CPU
+ {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|x64.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.AppStore|x86.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|ARM.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|x64.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Debug|x86.Build.0 = Debug|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|ARM.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|ARM.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|iPhone.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|x64.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|x64.Build.0 = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|x86.ActiveCfg = Release|Any CPU
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E}.Release|x86.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x64.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x86.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|ARM.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x64.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x86.Build.0 = Debug|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|ARM.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|ARM.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhone.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x64.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x64.Build.0 = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x86.ActiveCfg = Release|Any CPU
+ {942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x86.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|x64.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.AppStore|x86.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|ARM.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|x64.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Debug|x86.Build.0 = Debug|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|ARM.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|ARM.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|iPhone.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|x64.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|x64.Build.0 = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|x86.ActiveCfg = Release|Any CPU
+ {7804FC60-23E6-490C-8E08-F9FEF829F184}.Release|x86.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x64.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x86.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|ARM.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x64.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x86.Build.0 = Debug|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|ARM.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|ARM.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhone.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.Build.0 = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.ActiveCfg = Release|Any CPU
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x64.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x86.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|ARM.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x64.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x86.Build.0 = Debug|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|ARM.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|ARM.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhone.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x64.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x64.Build.0 = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x86.ActiveCfg = Release|Any CPU
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -567,5 +989,17 @@ Global
{F16E3C6A-1C94-4EAB-BE91-099618060B68} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}
{5B810E3D-112E-4857-B197-F09D2FD41E27} = {EF0337F2-ED00-4643-89FD-EE10863F1870}
{CFE2FACB-4538-4B99-8A10-306F3882952D} = {EF0337F2-ED00-4643-89FD-EE10863F1870}
+ {DB0EFB20-B024-4E5E-A75C-52143C131D25} = {932D8224-11F6-4D07-B109-DA28AD288A63}
+ {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25}
+ {0044B293-1DCC-4224-B948-00CF6DC7F510} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}
+ {8088F3FC-6787-45FA-A924-816EC81CBFAC} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}
+ {9EE28E45-1533-472B-8267-56C48855BA0E} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}
+ {A81ECBC2-6B00-4DCD-8388-469174033379} = {DB0EFB20-B024-4E5E-A75C-52143C131D25}
+ {DF8367F8-E6BD-4D07-99D2-E416BF8AB01E} = {A81ECBC2-6B00-4DCD-8388-469174033379}
+ {942ED6E8-0050-495F-A0EA-01E97F63760C} = {A81ECBC2-6B00-4DCD-8388-469174033379}
+ {7804FC60-23E6-490C-8E08-F9FEF829F184} = {A81ECBC2-6B00-4DCD-8388-469174033379}
+ {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}
+ {FBF43D93-F2E7-4FF8-B4AB-186895949B88} = {DB0EFB20-B024-4E5E-A75C-52143C131D25}
+ {D1C47FF1-91F1-4CAF-9ABB-AD642B821502} = {FBF43D93-F2E7-4FF8-B4AB-186895949B88}
EndGlobalSection
EndGlobal
diff --git a/eShopOnContainers.sln b/eShopOnContainers.sln
index 33d6e2812..06572bf95 100644
--- a/eShopOnContainers.sln
+++ b/eShopOnContainers.sln
@@ -1,18 +1,10 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26213.1
+VisualStudioVersion = 15.0.26228.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{932D8224-11F6-4D07-B109-DA28AD288A63}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3AF739CD-81D8-428D-A08A-0A58372DEBF6}"
- ProjectSection(SolutionItems) = preProject
- docker-compose.override.yml = docker-compose.override.yml
- docker-compose.yml = docker-compose.yml
- global.json = global.json
- NuGet.config = NuGet.config
- EndProjectSection
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{91CF7717-08AB-4E65-B10E-0B426F01E2E8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web Apps", "Web Apps", "{E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}"
@@ -49,7 +41,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7814B-72A6-465B-A61C-57B512DEE303}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "src\Web\WebSPA\WebSPA.csproj"", "{9842DB3A-1391-48C7-A49C-2FABD0A18AC2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "src\Web\WebSPA\WebSPA.csproj", "{9842DB3A-1391-48C7-A49C-2FABD0A18AC2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}"
EndProject
@@ -75,6 +67,44 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTest", "test\Services\U
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Identity.API", "src\Services\Identity\Identity.API\Identity.API.csproj", "{A579E108-5445-403D-A407-339AC4D1611B}"
EndProject
+Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{FEA0C318-FFED-4D39-8781-265718CA43DD}"
+ ProjectSection(ProjectDependencies) = postProject
+ {A579E108-5445-403D-A407-339AC4D1611B} = {A579E108-5445-403D-A407-339AC4D1611B}
+ {9842DB3A-1391-48C7-A49C-2FABD0A18AC2} = {9842DB3A-1391-48C7-A49C-2FABD0A18AC2}
+ {23FB706A-2701-41E9-8BF9-28936001CA41} = {23FB706A-2701-41E9-8BF9-28936001CA41}
+ {F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {F0333D8E-0B27-42B7-B2C6-78F3657624E2}
+ {42681D9D-750A-4DF7-BD9F-9292CFD5C253} = {42681D9D-750A-4DF7-BD9F-9292CFD5C253}
+ {2110CBB0-3B38-4EE4-A743-DF6968D80D90} = {2110CBB0-3B38-4EE4-A743-DF6968D80D90}
+ {231226CE-690B-4979-8870-9A79D80928E2} = {231226CE-690B-4979-8870-9A79D80928E2}
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357} = {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildingBlocks", "BuildingBlocks", "{1EF3AC0F-F27C-46DD-AC53-D762D2C11C45}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EventBus", "EventBus", "{B473B70F-0796-4862-B1AD-BB742D93B868}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBus", "src\BuildingBlocks\EventBus\EventBus\EventBus.csproj", "{3D6B7A87-162E-4479-B256-1291BEB503B6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusRabbitMQ", "src\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj", "{52AF222A-258C-4032-ACDD-857D7251BC1E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationEventLogEF", "src\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj", "{438B774F-5569-4DE2-AA62-3F8BAEB31C55}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "test\Services\FunctionalTests\FunctionalTests.csproj", "{2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HealthChecks", "HealthChecks", "{96CE8CE7-BC97-4A53-899F-5EB63D7BBF7B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.AspNetCore.HealthChecks\Microsoft.AspNetCore.HealthChecks.csproj", "{FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks\Microsoft.Extensions.HealthChecks.csproj", "{EE65FA8B-1D87-4050-BC21-F305F2F8AE45}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks.Data", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks.Data\Microsoft.Extensions.HealthChecks.Data.csproj", "{0E7AEB45-80F2-42B9-96BB-3414669E58AA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Resilience", "Resilience", "{D13768ED-5AF1-4E09-96DD-FF6E7A2E5E06}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Resilience.Http", "src\BuildingBlocks\Resilience\Resilience.Http\Resilience.Http.csproj", "{D92EB452-7A72-4B26-A8ED-0204CD376BC4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{23FB706A-2701-41E9-8BF9-28936001CA41}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -1004,6 +1034,438 @@ Global
{FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x64.Build.0 = Release|Any CPU
{FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x86.ActiveCfg = Release|Any CPU
{FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x86.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|x64.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.AppStore|x86.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|ARM.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|x64.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Debug|x86.Build.0 = Debug|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|ARM.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|ARM.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|iPhone.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|x64.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|x64.Build.0 = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|x86.ActiveCfg = Release|Any CPU
+ {3D6B7A87-162E-4479-B256-1291BEB503B6}.Release|x86.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|x64.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.AppStore|x86.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|ARM.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|x64.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Debug|x86.Build.0 = Debug|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|ARM.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|ARM.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|iPhone.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|x64.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|x64.Build.0 = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|x86.ActiveCfg = Release|Any CPU
+ {52AF222A-258C-4032-ACDD-857D7251BC1E}.Release|x86.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|x64.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.AppStore|x86.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|ARM.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|x64.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Debug|x86.Build.0 = Debug|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|Any CPU.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|ARM.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|ARM.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|iPhone.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|x64.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|x64.Build.0 = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|x86.ActiveCfg = Release|Any CPU
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55}.Release|x86.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|x64.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.AppStore|x86.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|ARM.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|x64.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Debug|x86.Build.0 = Debug|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|ARM.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|ARM.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|iPhone.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|x64.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|x64.Build.0 = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|x86.ActiveCfg = Release|Any CPU
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357}.Release|x86.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|x64.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.AppStore|x86.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|ARM.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|x64.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Debug|x86.Build.0 = Debug|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|ARM.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|ARM.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|iPhone.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|x64.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|x64.Build.0 = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|x86.ActiveCfg = Release|Any CPU
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3}.Release|x86.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|x64.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.AppStore|x86.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|ARM.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|x64.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Debug|x86.Build.0 = Debug|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|ARM.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|ARM.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|iPhone.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|x64.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|x64.Build.0 = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|x86.ActiveCfg = Release|Any CPU
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45}.Release|x86.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|x64.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.AppStore|x86.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|ARM.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|x64.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Debug|x86.Build.0 = Debug|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|ARM.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|ARM.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|iPhone.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|x64.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|x64.Build.0 = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|x86.ActiveCfg = Release|Any CPU
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA}.Release|x86.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|x64.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.AppStore|x86.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|ARM.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|x64.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Debug|x86.Build.0 = Debug|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|ARM.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|ARM.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|iPhone.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|x64.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|x64.Build.0 = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|x86.ActiveCfg = Release|Any CPU
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4}.Release|x86.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|x64.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.AppStore|x86.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|ARM.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|x64.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Debug|x86.Build.0 = Debug|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|Any CPU.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|ARM.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|ARM.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|iPhone.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|x64.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|x64.Build.0 = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|x86.ActiveCfg = Release|Any CPU
+ {23FB706A-2701-41E9-8BF9-28936001CA41}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1039,5 +1501,18 @@ Global
{67F9D3A8-F71E-4428-913F-C37AE82CDB24} = {778289CA-31F7-4464-8C2A-612EE846F8A7}
{7796F5D8-31FC-45A4-B673-19DE5BA194CF} = {EF0337F2-ED00-4643-89FD-EE10863F1870}
{A579E108-5445-403D-A407-339AC4D1611B} = {02DF7FEE-C302-433D-A6CD-237A2569F236}
+ {1EF3AC0F-F27C-46DD-AC53-D762D2C11C45} = {932D8224-11F6-4D07-B109-DA28AD288A63}
+ {B473B70F-0796-4862-B1AD-BB742D93B868} = {1EF3AC0F-F27C-46DD-AC53-D762D2C11C45}
+ {3D6B7A87-162E-4479-B256-1291BEB503B6} = {B473B70F-0796-4862-B1AD-BB742D93B868}
+ {52AF222A-258C-4032-ACDD-857D7251BC1E} = {B473B70F-0796-4862-B1AD-BB742D93B868}
+ {438B774F-5569-4DE2-AA62-3F8BAEB31C55} = {B473B70F-0796-4862-B1AD-BB742D93B868}
+ {2DA840CE-FCEA-4CF7-B1A1-ADD7775E7357} = {EF0337F2-ED00-4643-89FD-EE10863F1870}
+ {96CE8CE7-BC97-4A53-899F-5EB63D7BBF7B} = {1EF3AC0F-F27C-46DD-AC53-D762D2C11C45}
+ {FFFD3E09-A803-4F99-BAC5-C93ABA3E02D3} = {96CE8CE7-BC97-4A53-899F-5EB63D7BBF7B}
+ {EE65FA8B-1D87-4050-BC21-F305F2F8AE45} = {96CE8CE7-BC97-4A53-899F-5EB63D7BBF7B}
+ {0E7AEB45-80F2-42B9-96BB-3414669E58AA} = {96CE8CE7-BC97-4A53-899F-5EB63D7BBF7B}
+ {D13768ED-5AF1-4E09-96DD-FF6E7A2E5E06} = {1EF3AC0F-F27C-46DD-AC53-D762D2C11C45}
+ {D92EB452-7A72-4B26-A8ED-0204CD376BC4} = {D13768ED-5AF1-4E09-96DD-FF6E7A2E5E06}
+ {23FB706A-2701-41E9-8BF9-28936001CA41} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}
EndGlobalSection
EndGlobal
diff --git a/img/eShopOnContainers_Architecture_Diagram.png b/img/eShopOnContainers_Architecture_Diagram.png
index 5a45657dc..ca9e986b5 100644
Binary files a/img/eShopOnContainers_Architecture_Diagram.png and b/img/eShopOnContainers_Architecture_Diagram.png differ
diff --git a/img/eShopOnContainers_Architecture_Diagram_old.png b/img/eShopOnContainers_Architecture_Diagram_old.png
new file mode 100644
index 000000000..5a45657dc
Binary files /dev/null and b/img/eShopOnContainers_Architecture_Diagram_old.png differ
diff --git a/img/eShopOnContainers_Types_Of_Microservices.png b/img/eShopOnContainers_Types_Of_Microservices.png
new file mode 100644
index 000000000..e0621d8a4
Binary files /dev/null and b/img/eShopOnContainers_Types_Of_Microservices.png differ
diff --git a/img/xamarin-enterprise-patterns-ebook-cover-small.png b/img/xamarin-enterprise-patterns-ebook-cover-small.png
new file mode 100644
index 000000000..f645ef596
Binary files /dev/null and b/img/xamarin-enterprise-patterns-ebook-cover-small.png differ
diff --git a/src/BuildingBlocks/EventBus/EventBus/Abstractions/IEventBus.cs b/src/BuildingBlocks/EventBus/EventBus/Abstractions/IEventBus.cs
new file mode 100644
index 000000000..af6ee1aa7
--- /dev/null
+++ b/src/BuildingBlocks/EventBus/EventBus/Abstractions/IEventBus.cs
@@ -0,0 +1,14 @@
+using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions
+{
+ public interface IEventBus
+ {
+ void Subscribe
- ★ On Github
- Tether is a low-level UI library that can be used to position any element on a page next to any other element. It can be used for dropdown menus, tooltips, popovers, tours, help information, scroll guides, autocompletes, etc. The possibilities are endless. In this example we're showing an action menu tethered to a list item. Tether works by creating an absolutely positioned element and meticulously tracking the movements of a target which you specify. The target and element can be tethered together in a variety of different ways. Notice how the tethered element stays tethered to its target list item even as the left pane is scrolled up and down. Tether can keep your element positioned properly even in some tough situations. Tether handles all of the common pain points: ...and a lot more.
-
- '''
-
- $item.data('drop', drop)
-
- scrollInterval = undefined
- scrollTop = 0
- scrollTopDirection = 1
-
- setSection = (section) ->
- $browserDemo.attr('data-section', section)
-
- $('.section-copy').removeClass('active')
- $(""".section-copy[data-section="#{ section }"]""").addClass('active')
-
- openExampleItem = ->
- if isMobile
- $iframe.contents().find('.item:first').data().drop.open()
- else
- $iframe.contents().find('.item:eq(2)').data().drop.open()
-
- closeAllItems = ->
- $iframe.contents().find('.item').each -> $(@).data().drop.close() or true
-
- scrollLeftSection = ->
- scrollInterval = setInterval ->
- $iframe.contents().find('.left').scrollTop scrollTop
- scrollTop += scrollTopDirection
- if scrollTop > 50
- scrollTopDirection = -1
- if scrollTop < 0
- scrollTopDirection = 1
- , 30
-
- stopScrollingLeftSection = ->
- clearInterval scrollInterval
-
- switch section
-
- when 'what'
- closeAllItems()
- openExampleItem()
- stopScrollingLeftSection()
-
- when 'how'
- closeAllItems()
- openExampleItem()
- stopScrollingLeftSection()
- scrollLeftSection()
-
- when 'why'
- closeAllItems()
- openExampleItem()
- stopScrollingLeftSection()
- scrollLeftSection()
-
- when 'outro'
- closeAllItems()
- openExampleItem()
- stopScrollingLeftSection()
-
-init()
\ No newline at end of file
diff --git a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/browser-demo.css b/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/browser-demo.css
deleted file mode 100644
index 0bd007b8f..000000000
--- a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/browser-demo.css
+++ /dev/null
@@ -1,86 +0,0 @@
-html, body {
- height: 100%;
- overflow: hidden;
- font-family: "proxima-nova", sans-serif; }
-
-.tether.tether-theme-arrows-dark .tether-content {
- -webkit-filter: none;
- filter: none;
- background: #000; }
- .tether.tether-theme-arrows-dark .tether-content ul {
- color: #fff;
- list-style: none;
- padding: 0;
- margin: 0; }
-
-.tether.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
- border-right-color: #000; }
-
-.browser-demo {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0; }
- .browser-demo *, .browser-demo *:after, .browser-demo *:before {
- box-sizing: border-box; }
- .browser-demo .top {
- position: absolute;
- height: 60px;
- padding: 20px;
- line-height: 40px;
- width: 100%;
- border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
- .browser-demo .bottom {
- position: absolute;
- top: 60px;
- bottom: 0;
- width: 100%; }
- .browser-demo .bottom .left {
- border-right: 1px solid rgba(0, 0, 0, 0.1);
- position: absolute;
- width: 30%;
- height: 100%;
- overflow: auto; }
- .browser-demo .bottom .left .item {
- height: 64px;
- border-bottom: 1px solid rgba(0, 0, 0, 0.1);
- cursor: pointer; }
- .browser-demo .bottom .left .item:hover, .browser-demo .bottom .left .item.tether-open {
- background: rgba(0, 0, 0, 0.1);
- border-bottom: 1px solid transparent; }
- .browser-demo .bottom .left .item:last-child {
- border-bottom: 0; }
- .browser-demo .bottom .right {
- position: absolute;
- width: 70%;
- right: 0;
- height: 100%;
- padding: 20px; }
- .browser-demo .title {
- display: inline-block;
- vertical-align: middle;
- *vertical-align: auto;
- *zoom: 1;
- *display: inline;
- background: rgba(0, 0, 0, 0.1);
- width: 150px;
- height: 15px;
- margin-bottom: 20px; }
- .browser-demo .word {
- display: inline-block;
- vertical-align: middle;
- *vertical-align: auto;
- *zoom: 1;
- *display: inline;
- background: rgba(0, 0, 0, 0.1);
- width: 50px;
- height: 8px;
- margin-right: 5px;
- margin-bottom: 5px; }
- .browser-demo .word:nth-last-child(4n+1) {
- width: 73px; }
- .browser-demo .word:nth-last-child(10n+1) {
- width: 14px; }
- .browser-demo .word:nth-last-child(9n+1) {
- width: 80px; }
diff --git a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/prism.css b/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/prism.css
deleted file mode 100644
index b86d1c2a1..000000000
--- a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/prism.css
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Prism.js */
-code[class*="language-"], pre[class*="language-"] {color: black; font-family: Consolas, Monaco, 'Andale Mono', monospace; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } /* Code blocks */ pre[class*="language-"] {padding: 1em; margin: .5em 0; overflow: auto; font-size: 14px; } :not(pre) > code[class*="language-"], pre[class*="language-"] {background: rgba(0, 0, 0, .05); } /* Inline code */ :not(pre) > code[class*="language-"] {padding: .1em; border-radius: .3em; } .token.comment, .token.prolog, .token.doctype, .token.cdata {color: slategray; } .token.punctuation {color: #999; } .namespace {opacity: .7; } .token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol {color: #905; } .token.selector, .token.attr-name, .token.string, .token.builtin {color: #690; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string, .token.variable {color: #a67f59; } .token.atrule, .token.attr-value, .token.keyword {color: #07a; } .token.regex, .token.important {color: #e90; } .token.important {font-weight: bold; } .token.entity {cursor: help; }
\ No newline at end of file
diff --git a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/welcome.css b/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/welcome.css
deleted file mode 100644
index 8b7a6ad89..000000000
--- a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/css/welcome.css
+++ /dev/null
@@ -1,247 +0,0 @@
-html, body {
- height: 100%; }
-
-body {
- margin: 0;
- font-family: "proxima-nova", "Helvetica Neue", sans-serif; }
-
-.button {
- display: inline-block;
- border: 2px solid #333;
- color: #333;
- padding: 1em 1.25em;
- font-weight: 500;
- text-transform: uppercase;
- letter-spacing: 3px;
- text-decoration: none;
- cursor: pointer;
- width: 140px;
- font-size: .8em;
- line-height: 1.3em;
- text-align: center; }
-
-.tether-element.tether-theme-arrows-dark .tether-content {
- padding: 1em;
- font-size: 1.1em; }
- .tether-element.tether-theme-arrows-dark .tether-content .button {
- border-color: #fff;
- color: #fff;
- width: 170px;
- pointer-events: all; }
-
-.mobile-copy {
- display: none; }
- @media (max-width: 568px) {
- .mobile-copy {
- display: block; } }
-
-.button.dark {
- background: #333;
- color: #fff; }
-
-.hero-wrap {
- height: 100%;
- overflow: hidden; }
-
-table.showcase {
- height: 100%;
- width: 100%;
- position: relative; }
- table.showcase:after {
- content: "";
- display: block;
- position: absolute;
- left: 0;
- right: 0;
- bottom: 20px;
- margin: auto;
- height: 0;
- width: 0;
- border-width: 18px;
- border-style: solid;
- border-color: transparent;
- border-top-color: rgba(0, 0, 0, 0.2); }
- table.showcase.no-next-arrow:after {
- display: none; }
- table.showcase .showcase-inner {
- margin: 40px auto 60px;
- padding: 10px; }
- table.showcase .showcase-inner h1 {
- font-size: 50px;
- text-align: center;
- font-weight: 300; }
- @media (max-width: 567px) {
- table.showcase .showcase-inner h1 {
- font-size: 40px; } }
- table.showcase .showcase-inner h2 {
- font-size: 24px;
- text-align: center;
- font-weight: 300;
- margin: 1em 0 1em; }
- @media (max-width: 567px) {
- table.showcase .showcase-inner h2 {
- font-size: 14px; } }
- table.showcase .showcase-inner p {
- text-align: center; }
- table.showcase.hero {
- text-align: center; }
- table.showcase.hero .tether-target-demo {
- display: inline-block;
- vertical-align: middle;
- *vertical-align: auto;
- *zoom: 1;
- *display: inline;
- border: 2px dotted #000;
- margin: 5rem auto;
- padding: 5rem; }
- @media (max-width: 567px) {
- table.showcase.hero .tether-target-demo {
- padding: 1rem; } }
- table.showcase.share {
- background: #f3f3f3; }
- table.showcase.projects-showcase .showcase-inner .projects-list {
- width: 80%;
- max-width: 1200px;
- margin: 0 auto; }
- table.showcase.projects-showcase .showcase-inner .projects-list .project {
- color: inherit;
- text-decoration: none;
- position: relative;
- width: 50%;
- float: left;
- text-align: center;
- margin-bottom: 2rem; }
- table.showcase.projects-showcase .showcase-inner .projects-list .project:nth-child(odd) {
- clear: left; }
- table.showcase.projects-showcase .showcase-inner .projects-list .os-icon {
- width: 8rem;
- height: 8rem;
- margin-bottom: 1rem;
- background-size: 100%; }
- table.showcase.projects-showcase .showcase-inner .projects-list h1 {
- font-size: 2.5rem; }
- table.showcase.projects-showcase .showcase-inner .projects-list p {
- font-size: 1.3rem; }
- table.showcase.browser-demo {
- background-image: -webkit-linear-gradient(top left, #723362 0%, #9d223c 100%);
- background-image: linear-gradient(top left, #723362 0%, #9d223c 100%);
- background-color: #9d223c;
- position: absolute;
- top: 100%; }
- table.showcase.browser-demo.fixed {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 1; }
- table.showcase.browser-demo.fixed .browser-demo-inner {
- -webkit-transition: width 2s ease-in-out, height 2s ease-in-out;
- transition: width 2s ease-in-out, height 2s ease-in-out; }
- table.showcase.browser-demo.fixed[data-section="what"] {
- box-shadow: 0 0 0 0; }
- table.showcase.browser-demo.fixed[data-section="why"] .browser-demo-inner {
- width: 70%; }
- table.showcase.browser-demo.fixed[data-section="outro"] .showcase-inner {
- pointer-events: all; }
- table.showcase.browser-demo .showcase-inner {
- pointer-events: none;
- position: absolute;
- left: 10%;
- right: 40%;
- top: 220px;
- bottom: 120px;
- margin: 0;
- padding: 0; }
- @media (max-width: 567px) {
- table.showcase.browser-demo .showcase-inner {
- bottom: 90px;
- top: 180px; } }
- table.showcase.browser-demo .browser-demo-inner {
- height: 100%;
- width: 100%; }
- table.showcase.browser-demo .section-copy {
- -webkit-transition: opacity 0.5s ease-in-out, top 0.5s ease-in-out;
- transition: opacity 0.5s ease-in-out, top 0.5s ease-in-out;
- opacity: 0;
- position: absolute;
- top: 0;
- position: absolute;
- height: 200px;
- color: #fff;
- text-align: center;
- width: 100%; }
- table.showcase.browser-demo .section-copy.active {
- opacity: 1;
- top: -150px; }
- @media (max-width: 567px) {
- table.showcase.browser-demo .section-copy.active {
- top: -130px; } }
- table.showcase.browser-demo .section-copy h2 {
- font-size: 40px;
- font-weight: bold;
- line-height: 1;
- margin: 25px 0 15px; }
- @media (max-width: 567px) {
- table.showcase.browser-demo .section-copy h2 {
- font-size: 30px; } }
- table.showcase.browser-demo .browser-window {
- border-radius: 4px;
- background: #fff;
- position: relative;
- height: 100%;
- width: 100%;
- max-width: 1200px;
- margin: 0 auto; }
- table.showcase.browser-demo .browser-window .browser-titlebar {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- border-bottom: 1px solid #eee;
- height: 55px; }
- table.showcase.browser-demo .browser-window .browser-titlebar .browser-dots {
- padding: 16px; }
- table.showcase.browser-demo .browser-window .browser-titlebar .browser-dots b {
- display: inline-block;
- vertical-align: middle;
- *vertical-align: auto;
- *zoom: 1;
- *display: inline;
- border-radius: 50%;
- width: 10px;
- height: 10px;
- margin-right: 7px;
- background: rgba(0, 0, 0, 0.1); }
- table.showcase.browser-demo .browser-window .browser-frame {
- position: absolute;
- top: 55px;
- left: 0;
- right: 0;
- bottom: 0; }
- table.showcase.browser-demo .browser-window .browser-frame iframe {
- border-radius: 0 0 4px 4px;
- border: 0;
- width: 100%;
- height: 100%; }
- table.showcase.browser-demo-section .section-scroll-copy {
- position: relative;
- z-index: 10;
- color: #fff;
- width: 100%;
- font-size: 22px; }
- table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner {
- position: absolute;
- z-index: 10;
- color: #fff;
- right: 10%;
- width: 23%; }
- table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner a {
- color: inherit; }
- table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner .example-paragraph {
- border-radius: 4px;
- background: #000;
- padding: 1rem; }
-
-.browser-content {
- display: none; }
diff --git a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/index.html b/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/index.html
deleted file mode 100644
index d70d00d5e..000000000
--- a/src/Web/WebMVC/wwwroot/lib/tether/docs/welcome/index.html
+++ /dev/null
@@ -1,226 +0,0 @@
-
-
-
-
-
-
- Tether
- Marrying elements for life
-
-
-
- What is Tether?
- How Tether works.
- Tether is powerful.
- Play with Tether
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tether Family
- These projects are all powered by Tether's positioning engine.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Share
- Help us spread the word.
-
-
-
-