diff --git a/.gitignore b/.gitignore
index 3a696005..c43c0460 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,10 @@
.vscode
debug.log
+# IDEA
+.idea/
+*.DotSettings.user
+
# .NET Core
bin
obj
@@ -18,4 +22,5 @@ cloudformation.json
params.yml
appsettings.Development.json
src/CloudFormationResourceSpecification.json
-tmp/
\ No newline at end of file
+tmp/
+*~
\ No newline at end of file
diff --git a/.idea/.idea.LambdaSharpTool/.idea/indexLayout.xml b/.idea/.idea.LambdaSharpTool/.idea/indexLayout.xml
new file mode 100644
index 00000000..7b08163c
--- /dev/null
+++ b/.idea/.idea.LambdaSharpTool/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.LambdaSharpTool/.idea/projectSettingsUpdater.xml b/.idea/.idea.LambdaSharpTool/.idea/projectSettingsUpdater.xml
new file mode 100644
index 00000000..ef20cb08
--- /dev/null
+++ b/.idea/.idea.LambdaSharpTool/.idea/projectSettingsUpdater.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.LambdaSharpTool/.idea/vcs.xml b/.idea/.idea.LambdaSharpTool/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/.idea.LambdaSharpTool/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Demos/DemoS3BucketSubscription/DemoS3Subscriber/Subscriber/Subscriber.csproj b/Demos/DemoS3BucketSubscription/DemoS3Subscriber/Subscriber/Subscriber.csproj
index a11ea423..4a22a4b4 100644
--- a/Demos/DemoS3BucketSubscription/DemoS3Subscriber/Subscriber/Subscriber.csproj
+++ b/Demos/DemoS3BucketSubscription/DemoS3Subscriber/Subscriber/Subscriber.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
DemoS3Subscriber.Subscriber
diff --git a/Demos/SlackTodo/SlackCommand/SlackCommand.csproj b/Demos/SlackTodo/SlackCommand/SlackCommand.csproj
index e7980cc5..c10b4618 100644
--- a/Demos/SlackTodo/SlackCommand/SlackCommand.csproj
+++ b/Demos/SlackTodo/SlackCommand/SlackCommand.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
CS1998
diff --git a/Demos/TwitterNotifier/NotifyFunction/NotifyFunction.csproj b/Demos/TwitterNotifier/NotifyFunction/NotifyFunction.csproj
index 59bc8dfb..6988cb76 100644
--- a/Demos/TwitterNotifier/NotifyFunction/NotifyFunction.csproj
+++ b/Demos/TwitterNotifier/NotifyFunction/NotifyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
Demo.TwitterNotifier.NotifyFunction
diff --git a/LambdaSharpTool.sln b/LambdaSharpTool.sln
new file mode 100644
index 00000000..36f5162e
--- /dev/null
+++ b/LambdaSharpTool.sln
@@ -0,0 +1,1114 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.2.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{F2E35B3E-9711-EDEC-6202-DB40BDEED14A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{FA8A28C8-4B59-8028-2ACF-626D05B08DB7}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{5D20AA90-6969-D8BD-9DCD-8634F4692FDA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Modules", "Libraries\LambdaSharp.Modules\LambdaSharp.Modules.csproj", "{D21D6E80-0828-2D30-0981-8C1068CDD350}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.CloudFormation", "Libraries\LambdaSharp.CloudFormation\LambdaSharp.CloudFormation.csproj", "{99485E9C-4005-F9AF-41D8-8443FD87F5BD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Build", "Libraries\LambdaSharp.Build\LambdaSharp.Build.csproj", "{F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.LambdaSharp.CloudFormation", "Tests\Tests.LambdaSharp.CloudFormation\Tests.LambdaSharp.CloudFormation.csproj", "{AB2CC9BE-E362-A6EE-598B-095D55A1D55D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.LambdaSharp.Modules", "Tests\Tests.LambdaSharp.Modules\Tests.LambdaSharp.Modules.csproj", "{3668A261-35AE-50AB-9BFD-C605ECF2DFFD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.LambdaSharp", "Tests\Tests.LambdaSharp\Tests.LambdaSharp.csproj", "{A8DE3212-5173-4DF6-CBF5-A550367BD4F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.SimpleQueueService", "src\LambdaSharp.SimpleQueueService\LambdaSharp.SimpleQueueService.csproj", "{CA74985E-57AF-86D4-11C5-1FBEFE151FA2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.ApiGateway", "src\LambdaSharp.ApiGateway\LambdaSharp.ApiGateway.csproj", "{E74BB0AF-D614-5D7E-634C-E336C8F60ECE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Slack", "src\LambdaSharp.Slack\LambdaSharp.Slack.csproj", "{AB00A465-027A-127F-755C-D8876413CA99}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Schedule", "src\LambdaSharp.Schedule\LambdaSharp.Schedule.csproj", "{A17CA46B-843B-A4C4-F49E-66D45A563E7D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Tool", "src\LambdaSharp.Tool\LambdaSharp.Tool.csproj", "{F145C558-4E06-070C-F334-C1602C7EBB82}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Finalizer", "src\LambdaSharp.Finalizer\LambdaSharp.Finalizer.csproj", "{0009173F-72FD-66D3-1847-1BE3CF78D2C9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.App", "src\LambdaSharp.App\LambdaSharp.App.csproj", "{855B58A1-DA7C-52FF-F3B1-D01C2D774892}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.CustomResource", "src\LambdaSharp.CustomResource\LambdaSharp.CustomResource.csproj", "{61FE817C-8000-0074-9ABD-85988229F5DD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.SimpleNotificationService", "src\LambdaSharp.SimpleNotificationService\LambdaSharp.SimpleNotificationService.csproj", "{6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Logging", "src\LambdaSharp.Logging\LambdaSharp.Logging.csproj", "{38DE7F6C-4E86-14B4-60F7-7A6D27805B9B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp", "src\LambdaSharp\LambdaSharp.csproj", "{E1EFC433-5480-680A-4D88-FDBFA955D3AF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.EventBridge", "src\LambdaSharp.EventBridge\LambdaSharp.EventBridge.csproj", "{3A135373-F997-A062-B5F0-9BC3703E5EBB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.Serialization.NewtonsoftJson", "src\LambdaSharp.Serialization.NewtonsoftJson\LambdaSharp.Serialization.NewtonsoftJson.csproj", "{E3095624-8DF1-C7AA-2BD6-1DAE92260845}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BadModule", "BadModule", "{2B9005F9-3DC3-7340-5921-F06418BF9173}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailOutOfMemory", "Tests\BadModule\FailOutOfMemory\FailOutOfMemory.csproj", "{3E1CBD46-E8E5-736F-E8CA-B58DC983C013}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NearOutOfMemory", "Tests\BadModule\NearOutOfMemory\NearOutOfMemory.csproj", "{9CBF4390-D262-D577-1344-FF0414D66EBD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailConstructor", "Tests\BadModule\FailConstructor\FailConstructor.csproj", "{0FE0A854-3D31-A053-7413-77DCFD8EA68A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailRuntimeExitFunction", "Tests\BadModule\FailRuntimeExitFunction\FailRuntimeExitFunction.csproj", "{7F0F7B74-E405-E43B-E2FA-DFD5E647F550}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailBadEntryPoint", "Tests\BadModule\FailBadEntryPoint\FailBadEntryPoint.csproj", "{027AD2EF-4BFF-650B-AB16-EE0D5519D76F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailError", "Tests\BadModule\FailError\FailError.csproj", "{EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NearTimeout", "Tests\BadModule\NearTimeout\NearTimeout.csproj", "{A5370995-2033-8BC2-949B-F0C22B500DBA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FailTimeout", "Tests\BadModule\FailTimeout\FailTimeout.csproj", "{09BAD218-96DE-B694-8C46-A10CB0391AD2}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LogBuster", "LogBuster", "{A47295F4-48F1-0AF4-2F1C-11C143AD3C2B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReadAndFailFunction", "Tests\LogBuster\ReadAndFailFunction\ReadAndFailFunction.csproj", "{F2F414F6-028E-C078-F510-6198423BF96F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{D7DC9B74-6BC4-2470-2038-1E57C2DCB73B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "Tests\Modules\MyApp\MyApp.csproj", "{572233E1-7F81-4AEB-DF81-57054E5716E8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Tests\Modules\Finalizer\Finalizer.csproj", "{1CA59D5D-64DE-5B51-59E2-9AF53F86062E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Function", "Tests\Modules\Function\Function.csproj", "{D5834E7E-DBA4-0ED2-4917-2BC62600F786}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SlackTodo", "SlackTodo", "{4A98EFBC-B517-E6A9-AFF4-73EB3A972D36}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlackCommand", "Demos\SlackTodo\SlackCommand\SlackCommand.csproj", "{19EDB39F-C22F-E189-D49B-91147FDFF4BA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TwitterNotifier", "TwitterNotifier", "{E24DD317-1937-B715-7881-AC89DDC455B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotifyFunction", "Demos\TwitterNotifier\NotifyFunction\NotifyFunction.csproj", "{2804D9F0-52D0-9ADE-9154-A7DD5583147C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaTopLevelSample", "LambdaTopLevelSample", "{502DCB23-4928-BCB1-E92B-DAF27F6AA8C2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTopLevelFunction", "Samples\LambdaTopLevelSample\MyTopLevelFunction\MyTopLevelFunction.csproj", "{FE2D27C2-6414-F863-3830-9B21691E108E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MacroSample", "MacroSample", "{A779C5C4-8BCC-B45E-6171-5D5C80F57A7F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\MacroSample\MyFunction\MyFunction.csproj", "{E0240B1D-04A7-53AD-87AE-68AD71E9291D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SqsFailureHandlingSample", "SqsFailureHandlingSample", "{82DD39A8-DC2A-F3A4-125C-DF19855C85B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqsProducer", "Samples\SqsFailureHandlingSample\SqsProducer\SqsProducer.csproj", "{F5934F59-FAE1-722A-2319-B080CF094388}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqsConsumer", "Samples\SqsFailureHandlingSample\SqsConsumer\SqsConsumer.csproj", "{6317D65F-7951-DBC7-8B2B-07E524C10F33}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DebugSample", "DebugSample", "{E68D3913-248F-7FDB-4166-5411CEBF3354}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\DebugSample\MyFunction\MyFunction.csproj", "{D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "KinesisSample", "KinesisSample", "{9E69EAE7-5F19-6D45-D5B8-E66C231A0989}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\KinesisSample\MyFunction\MyFunction.csproj", "{7C448618-03B4-1C84-EACB-3527BA9248C4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ScheduleSample", "ScheduleSample", "{FBFD7EBE-C3BF-0A9B-5276-C89D2B28B717}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\ScheduleSample\MyFunction\MyFunction.csproj", "{D5D316B1-9968-4C4A-167B-7F6D808B1DEC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JsonSerializerSample", "JsonSerializerSample", "{190132A9-CF1F-E2EC-94C5-65A552606D3A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemTextJsonFunction", "Samples\JsonSerializerSample\SystemTextJsonFunction\SystemTextJsonFunction.csproj", "{CBA992DE-879E-968C-CB40-120DF49B2BD4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomJsonSerializerFunction", "Samples\JsonSerializerSample\CustomJsonSerializerFunction\CustomJsonSerializerFunction.csproj", "{B95DF7C6-C9E2-42F0-9B74-3DA031748502}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceGeneratorFunction", "Samples\JsonSerializerSample\SourceGeneratorFunction\SourceGeneratorFunction.csproj", "{2F4F5528-F643-0514-FE70-B7D05125ACA0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewtonsoftJsonFunction", "Samples\JsonSerializerSample\NewtonsoftJsonFunction\NewtonsoftJsonFunction.csproj", "{307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiInvokeSample", "ApiInvokeSample", "{C3A59317-D1D2-B452-0875-2B9DFA608829}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\ApiInvokeSample\MyFunction\MyFunction.csproj", "{737C5917-E1C8-F135-0EE0-066F1ED9542B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MetricSample", "MetricSample", "{A3929D46-B25B-D78D-8E45-000B8ADE8ACD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\MetricSample\MyFunction\MyFunction.csproj", "{A5F928FC-D927-099C-A405-2FFE52331F72}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BlazorSample", "BlazorSample", "{344B8B79-CC4E-40A7-7223-F29638F46488}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyBlazorApp", "Samples\BlazorSample\MyBlazorApp\MyBlazorApp.csproj", "{D13175E6-538D-F64D-6A83-5054C4514FA0}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiInvokeAssemblySample", "ApiInvokeAssemblySample", "{0B3FB0C0-6A6C-7439-A2AF-1D96CB2E773A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Samples\ApiInvokeAssemblySample\Shared\Shared.csproj", "{6DADE881-491C-53C6-F3E7-BBE6EA60A195}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\ApiInvokeAssemblySample\MyFunction\MyFunction.csproj", "{6B04B513-466F-30B7-C715-7A665E636BB1}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiSample", "ApiSample", "{C38BAEBC-3EDF-6C38-0C4B-CF116BC2811A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\ApiSample\MyFunction\MyFunction.csproj", "{EDF7B0C7-DCDE-7A11-9597-F15343B7F51A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EventSample", "EventSample", "{68CE2DF0-F1BD-9719-82A4-D030E0055FE2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SenderFunction", "Samples\EventSample\SenderFunction\SenderFunction.csproj", "{EBB8D132-858C-A3AE-0144-A5FD94C1F250}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReceiverFunction", "Samples\EventSample\ReceiverFunction\ReceiverFunction.csproj", "{8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReceiverEventFunction", "Samples\EventSample\ReceiverEventFunction\ReceiverEventFunction.csproj", "{90D73788-FE91-068A-48D0-F43B7A87D517}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "S3SubscriptionSample", "S3SubscriptionSample", "{2D7784EB-1AF4-1265-0362-E17F116CD7E3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\S3SubscriptionSample\MyFunction\MyFunction.csproj", "{C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BlazorEventsSample", "BlazorEventsSample", "{E17BA0A2-C77C-C698-A646-308F2340F9AB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyBlazorApp", "Samples\BlazorEventsSample\MyBlazorApp\MyBlazorApp.csproj", "{A038C99E-88F9-CE96-260B-05BA5AD742D0}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CustomResourceTypeSample", "CustomResourceTypeSample", "{9336F0BA-575D-382F-7F03-3F611CB9CFEA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceHandler", "Samples\CustomResourceTypeSample\ResourceHandler\ResourceHandler.csproj", "{3D8EEBF9-9BE1-1E42-5517-DF8544D14017}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SlackCommandSample", "SlackCommandSample", "{4B3E7014-594A-932B-614D-FCF43C24BEA2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\SlackCommandSample\MyFunction\MyFunction.csproj", "{0BA17173-C16E-2AC7-53D1-BD78586CDCB5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FinalizerSample", "FinalizerSample", "{2AA71544-2F1A-14C9-E83D-1507EB484B4D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Samples\FinalizerSample\Finalizer\Finalizer.csproj", "{84229434-55F0-ED64-82D0-D0D1A8C0768B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSelfContainedSample", "LambdaSelfContainedSample", "{2E11B8E4-0D5F-CA9A-2597-D8C08F3A66A4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySelfContainedFunction", "Samples\LambdaSelfContainedSample\MySelfContainedFunction\MySelfContainedFunction.csproj", "{B250C4C1-E554-DD57-1254-B539F96A16D6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "KinesisFirehoseSample", "KinesisFirehoseSample", "{3848E832-2561-ABDF-997A-DFE6DD1C8890}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirehoseAnalyzerFunction", "Samples\KinesisFirehoseSample\FirehoseAnalyzerFunction\FirehoseAnalyzerFunction.csproj", "{1B69F2D8-1E73-77CB-80A6-4E90A8C449DC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AlexaSample", "AlexaSample", "{A8B68EB2-26D4-1F30-E3D1-0527737FEE12}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\AlexaSample\MyFunction\MyFunction.csproj", "{D068FC98-778A-C5CF-5CC0-2C1C5005CEF5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebSocketSample", "WebSocketSample", "{FE63A0F5-C916-7BAA-8CDE-120B7235E45F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Samples\WebSocketSample\Common\Common.csproj", "{6BAC3E36-2946-DEAF-219B-CD92E0DCE92B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MessageFunction", "Samples\WebSocketSample\MessageFunction\MessageFunction.csproj", "{10077F6C-4A61-FB97-BC60-6C2C208B0364}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConnectionFunction", "Samples\WebSocketSample\ConnectionFunction\ConnectionFunction.csproj", "{ECF0D225-59F4-A33B-D6B2-BA2B2109220F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SnsSample", "SnsSample", "{EFA6F62C-BC70-92FC-57A4-F996F27994DE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\SnsSample\MyFunction\MyFunction.csproj", "{7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaLayerSample", "LambdaLayerSample", "{AE81963C-A437-ED26-C961-BB1CBB2C1448}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\LambdaLayerSample\MyFunction\MyFunction.csproj", "{E2F4919B-824D-2AF2-AFEB-9A34DEC32705}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VpcFunctionSample", "VpcFunctionSample", "{9BADF356-9015-ACC3-739C-26BACEA9A537}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\VpcFunctionSample\MyFunction\MyFunction.csproj", "{0B40D516-C826-CE95-5612-4E3945315B36}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SecretSample", "SecretSample", "{A9103695-60A0-3585-24FD-4541772AAE48}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\SecretSample\MyFunction\MyFunction.csproj", "{4754551A-5296-C902-32A6-09285A5F8F17}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SqsSample", "SqsSample", "{E4829DF2-FCFA-F7E6-662E-3D73FC41A55A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\SqsSample\MyFunction\MyFunction.csproj", "{A3E59F88-C8BE-780C-8673-81E5C51F87AF}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DynamoDBSample", "DynamoDBSample", "{83863CAF-A8F5-4411-F708-2EA1958EACF9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFunction", "Samples\DynamoDBSample\MyFunction\MyFunction.csproj", "{95732646-4F66-F361-BCEE-AEFB0757FB7D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.S3.Subscriber", "LambdaSharp.S3.Subscriber", "{2413BC9F-865B-7E72-45C2-9376C3B9EBC4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceHandler", "Modules\LambdaSharp.S3.Subscriber\ResourceHandler\ResourceHandler.csproj", "{A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.Twitter.Query", "LambdaSharp.Twitter.Query", "{F95C8CD6-FE61-6A0C-48A8-7A66A617D1F5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QueryFunction", "Modules\LambdaSharp.Twitter.Query\QueryFunction\QueryFunction.csproj", "{640766C0-155B-4CD2-E077-3C2103377D51}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.Cloud", "LambdaSharp.Cloud", "{74E40A93-ECA0-5F62-C60B-51C5FB3C09C5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.CloudFormation.Converter", "Modules\LambdaSharp.Cloud\LambdaSharp.CloudFormation.Converter\LambdaSharp.CloudFormation.Converter.csproj", "{6C83B347-D837-3B98-38EA-AA317CE2D2E3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateIamSpecFunction", "Modules\LambdaSharp.Cloud\UpdateIamSpecFunction\UpdateIamSpecFunction.csproj", "{0495C8E0-BC2A-2D29-48B7-FDE1B6433531}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateCloudFormationSpecFunction", "Modules\LambdaSharp.Cloud\UpdateCloudFormationSpecFunction\UpdateCloudFormationSpecFunction.csproj", "{CD774EBF-F9FE-023B-C82A-5AD97B92701E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.App.EventBus", "LambdaSharp.App.EventBus", "{ED6994AD-0F8E-B48C-C9C9-6FE24098B950}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BroadcastFunction", "Modules\LambdaSharp.App.EventBus\BroadcastFunction\BroadcastFunction.csproj", "{21749CF4-81F8-9829-BC21-D9C932215BF3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.App.EventBus.Actions", "Modules\LambdaSharp.App.EventBus\LambdaSharp.App.EventBus.Actions\LambdaSharp.App.EventBus.Actions.csproj", "{A5C1E618-C443-99EB-8981-6BBAD943D0EF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaSharp.App.EventBus", "Modules\LambdaSharp.App.EventBus\LambdaSharp.App.EventBus\LambdaSharp.App.EventBus.csproj", "{A620858B-1D91-4850-5322-A4CAB86D8018}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ListenerFunction", "Modules\LambdaSharp.App.EventBus\ListenerFunction\ListenerFunction.csproj", "{53A7CD9D-3FBD-B7A7-C805-7D28177FB072}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.LambdaSharp.App.EventBus", "Modules\LambdaSharp.App.EventBus\Tests.LambdaSharp.App.EventBus\Tests.LambdaSharp.App.EventBus.csproj", "{50E0A472-D1F2-1327-0830-68DCBF5A43F9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.Core", "LambdaSharp.Core", "{C2277486-2546-5E9D-65E6-EE7A61D9B560}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoggingStreamAnalyzerFunction", "Modules\LambdaSharp.Core\LoggingStreamAnalyzerFunction\LoggingStreamAnalyzerFunction.csproj", "{199CAA45-D0BE-6968-57B4-75C3A04EA724}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegistrationFunction", "Modules\LambdaSharp.Core\RegistrationFunction\RegistrationFunction.csproj", "{89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonLib", "Modules\LambdaSharp.Core\CommonLib\CommonLib.csproj", "{2F522F4C-8761-FB32-02C3-28F2D3E249E7}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.App.Api", "LambdaSharp.App.Api", "{48BFDF3C-03E5-0344-52A0-1A84EC0FA582}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Modules\LambdaSharp.App.Api\Finalizer\Finalizer.csproj", "{E42804EF-9568-025B-B8EE-A0A340F49B5D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LambdaSharp.S3.IO", "LambdaSharp.S3.IO", "{7F7206D3-DD58-CEC4-AD8B-D55758F54E6C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "S3Writer", "Modules\LambdaSharp.S3.IO\S3Writer\S3Writer.csproj", "{48AB5F5E-5DB6-EEC7-657E-B12F262704BB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Legacy", "Legacy", "{676D0979-40FD-0699-BCE1-E26B1C7B6859}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v0.8.2", "v0.8.2", "{D835E96A-8459-17BC-F096-905D4261E1AC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "Tests\Legacy\v0.8.2\MyApp\MyApp.csproj", "{B26867D4-423A-9441-C49F-A9271C6FE10E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTopicFunction", "Tests\Legacy\v0.8.2\MyTopicFunction\MyTopicFunction.csproj", "{03C7699E-CFDA-1EF1-29C5-1342A0148D4E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketFunction", "Tests\Legacy\v0.8.2\MyWebSocketFunction\MyWebSocketFunction.csproj", "{712A853F-0692-D9F1-169F-A05CDFF2C392}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayFunction", "Tests\Legacy\v0.8.2\MyApiGatewayFunction\MyApiGatewayFunction.csproj", "{A666BD85-C427-14C9-7741-564EF3C09EDD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Tests\Legacy\v0.8.2\Finalizer\Finalizer.csproj", "{CED7B1F0-9935-F064-CA6B-8AAF997069B4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayProxyFunction", "Tests\Legacy\v0.8.2\MyApiGatewayProxyFunction\MyApiGatewayProxyFunction.csproj", "{946EFA0A-C15B-7D9B-CD26-F49A5492248F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyScheduleFunction", "Tests\Legacy\v0.8.2\MyScheduleFunction\MyScheduleFunction.csproj", "{5707C69C-B7E4-97ED-D390-9298B38971A1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyEventFunction", "Tests\Legacy\v0.8.2\MyEventFunction\MyEventFunction.csproj", "{7927D0E7-12C9-2849-E9CC-6C0F430D0414}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyGenericFunction", "Tests\Legacy\v0.8.2\MyGenericFunction\MyGenericFunction.csproj", "{1223CDE8-FC81-27FE-55F2-B1EC778E13DA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketProxyFunction", "Tests\Legacy\v0.8.2\MyWebSocketProxyFunction\MyWebSocketProxyFunction.csproj", "{B26138F6-246A-E853-0265-E06ED65DD2B2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySelfContainedFunction", "Tests\Legacy\v0.8.2\MySelfContainedFunction\MySelfContainedFunction.csproj", "{35B4952A-06C8-7F26-8E33-33CD40F66CA0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCustomResourceFunction", "Tests\Legacy\v0.8.2\MyCustomResourceFunction\MyCustomResourceFunction.csproj", "{E26ACAA3-2D25-983F-6369-F3B99F6567ED}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyQueueFunction", "Tests\Legacy\v0.8.2\MyQueueFunction\MyQueueFunction.csproj", "{AC6D83CA-23CC-DD23-0319-F685050CA04E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v0.8.3", "v0.8.3", "{A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "Tests\Legacy\v0.8.3\MyApp\MyApp.csproj", "{B1A38819-9DF9-CA30-A5AC-FFE05B9625FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTopicFunction", "Tests\Legacy\v0.8.3\MyTopicFunction\MyTopicFunction.csproj", "{31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketFunction", "Tests\Legacy\v0.8.3\MyWebSocketFunction\MyWebSocketFunction.csproj", "{A20FC013-109C-716E-D75A-1F5B3808136A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayFunction", "Tests\Legacy\v0.8.3\MyApiGatewayFunction\MyApiGatewayFunction.csproj", "{0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Tests\Legacy\v0.8.3\Finalizer\Finalizer.csproj", "{3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayProxyFunction", "Tests\Legacy\v0.8.3\MyApiGatewayProxyFunction\MyApiGatewayProxyFunction.csproj", "{B79920FD-4719-78ED-1556-C51F6208A0C4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyScheduleFunction", "Tests\Legacy\v0.8.3\MyScheduleFunction\MyScheduleFunction.csproj", "{45E8D60B-9947-0309-CA4D-DD24010A33F6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyEventFunction", "Tests\Legacy\v0.8.3\MyEventFunction\MyEventFunction.csproj", "{48B96B29-1BE1-6353-C737-0A97C932A0B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyGenericFunction", "Tests\Legacy\v0.8.3\MyGenericFunction\MyGenericFunction.csproj", "{5F44350F-E4D3-648B-2BCB-C38BB4DE30EC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketProxyFunction", "Tests\Legacy\v0.8.3\MyWebSocketProxyFunction\MyWebSocketProxyFunction.csproj", "{94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MySelfContainedFunction", "Tests\Legacy\v0.8.3\MySelfContainedFunction\MySelfContainedFunction.csproj", "{D0207A1D-4A45-83EC-9417-85D149435CC6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCustomResourceFunction", "Tests\Legacy\v0.8.3\MyCustomResourceFunction\MyCustomResourceFunction.csproj", "{4C8E2E78-234F-FABE-B9F4-2889B382A018}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyQueueFunction", "Tests\Legacy\v0.8.3\MyQueueFunction\MyQueueFunction.csproj", "{1C673A4F-1CF8-5BC9-894E-2ACD03360015}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v0.8.1", "v0.8.1", "{75DB496F-0038-E68C-D734-8DE0AF759E3D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "Tests\Legacy\v0.8.1\MyApp\MyApp.csproj", "{05728302-51B9-6F63-6BD1-B65A2CE6CCAA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTopicFunction", "Tests\Legacy\v0.8.1\MyTopicFunction\MyTopicFunction.csproj", "{7A8F268E-85B6-9533-D55A-9DB4C93E0022}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketFunction", "Tests\Legacy\v0.8.1\MyWebSocketFunction\MyWebSocketFunction.csproj", "{F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayFunction", "Tests\Legacy\v0.8.1\MyApiGatewayFunction\MyApiGatewayFunction.csproj", "{C7D9D0A7-AD98-0592-A31C-87EEFFED8D79}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Tests\Legacy\v0.8.1\Finalizer\Finalizer.csproj", "{A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayProxyFunction", "Tests\Legacy\v0.8.1\MyApiGatewayProxyFunction\MyApiGatewayProxyFunction.csproj", "{56F2A6FD-0792-E4EB-197B-E74204B5EEDB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyScheduleFunction", "Tests\Legacy\v0.8.1\MyScheduleFunction\MyScheduleFunction.csproj", "{E0920DB7-629B-63EC-36F1-363AF4E49D0C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyGenericFunction", "Tests\Legacy\v0.8.1\MyGenericFunction\MyGenericFunction.csproj", "{CA0E1A8D-BAAC-02A5-782F-0D777CB35D68}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketProxyFunction", "Tests\Legacy\v0.8.1\MyWebSocketProxyFunction\MyWebSocketProxyFunction.csproj", "{7A5BAD11-ADED-76E3-66B4-1B65CD42DD91}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCustomResourceFunction", "Tests\Legacy\v0.8.1\MyCustomResourceFunction\MyCustomResourceFunction.csproj", "{A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyQueueFunction", "Tests\Legacy\v0.8.1\MyQueueFunction\MyQueueFunction.csproj", "{75D35A31-CFC4-5264-924B-AB67BEA94179}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v0.8.0", "v0.8.0", "{CB832152-E056-BB27-4E5B-E10154A76836}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTopicFunction", "Tests\Legacy\v0.8.0\MyTopicFunction\MyTopicFunction.csproj", "{C8E80872-D703-1883-9B52-C7314284275C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketFunction", "Tests\Legacy\v0.8.0\MyWebSocketFunction\MyWebSocketFunction.csproj", "{145D43AD-BEC9-541A-8B9E-5A5F69633B13}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayFunction", "Tests\Legacy\v0.8.0\MyApiGatewayFunction\MyApiGatewayFunction.csproj", "{449C6EC1-9EC8-CC5F-130C-5033969B015E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Finalizer", "Tests\Legacy\v0.8.0\Finalizer\Finalizer.csproj", "{5A692250-EDF4-A4F7-DE0F-EB4251A71C1C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApiGatewayProxyFunction", "Tests\Legacy\v0.8.0\MyApiGatewayProxyFunction\MyApiGatewayProxyFunction.csproj", "{C1DA5338-D93D-5725-4458-20BF4E978EEE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyScheduleFunction", "Tests\Legacy\v0.8.0\MyScheduleFunction\MyScheduleFunction.csproj", "{5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyGenericFunction", "Tests\Legacy\v0.8.0\MyGenericFunction\MyGenericFunction.csproj", "{127303DD-69E6-F7E5-E5C7-F0B53C26BA5C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyWebSocketProxyFunction", "Tests\Legacy\v0.8.0\MyWebSocketProxyFunction\MyWebSocketProxyFunction.csproj", "{FF09A322-E24C-F586-20D2-7094E35E5452}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCustomResourceFunction", "Tests\Legacy\v0.8.0\MyCustomResourceFunction\MyCustomResourceFunction.csproj", "{DD0F11E1-A9E4-2248-FA3C-342BDC132A2A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyQueueFunction", "Tests\Legacy\v0.8.0\MyQueueFunction\MyQueueFunction.csproj", "{95710EF3-4E9D-5F73-158C-28AED0162811}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DemoS3BucketSubscription", "DemoS3BucketSubscription", "{487A1635-770A-E920-8059-1006A7E9223C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DemoS3Subscriber", "DemoS3Subscriber", "{99A6EA79-089C-199D-5514-0F420BA648E6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Subscriber", "Demos\DemoS3BucketSubscription\DemoS3Subscriber\Subscriber\Subscriber.csproj", "{F0DD2D76-52C4-7200-6140-8BB9FF980759}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{9E8E248D-86F2-34D3-C6DF-65933BED45C1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.ProcessLogEventsTests", "Modules\LambdaSharp.Core\Tests\Tests.ProcessLogEventsTests\Tests.ProcessLogEventsTests.csproj", "{9086195C-0437-2E91-C049-5202FD563475}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D21D6E80-0828-2D30-0981-8C1068CDD350}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D21D6E80-0828-2D30-0981-8C1068CDD350}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D21D6E80-0828-2D30-0981-8C1068CDD350}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D21D6E80-0828-2D30-0981-8C1068CDD350}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99485E9C-4005-F9AF-41D8-8443FD87F5BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99485E9C-4005-F9AF-41D8-8443FD87F5BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99485E9C-4005-F9AF-41D8-8443FD87F5BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99485E9C-4005-F9AF-41D8-8443FD87F5BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AB2CC9BE-E362-A6EE-598B-095D55A1D55D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AB2CC9BE-E362-A6EE-598B-095D55A1D55D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AB2CC9BE-E362-A6EE-598B-095D55A1D55D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AB2CC9BE-E362-A6EE-598B-095D55A1D55D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3668A261-35AE-50AB-9BFD-C605ECF2DFFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3668A261-35AE-50AB-9BFD-C605ECF2DFFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3668A261-35AE-50AB-9BFD-C605ECF2DFFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3668A261-35AE-50AB-9BFD-C605ECF2DFFD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A8DE3212-5173-4DF6-CBF5-A550367BD4F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8DE3212-5173-4DF6-CBF5-A550367BD4F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A8DE3212-5173-4DF6-CBF5-A550367BD4F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A8DE3212-5173-4DF6-CBF5-A550367BD4F2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA74985E-57AF-86D4-11C5-1FBEFE151FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA74985E-57AF-86D4-11C5-1FBEFE151FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA74985E-57AF-86D4-11C5-1FBEFE151FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA74985E-57AF-86D4-11C5-1FBEFE151FA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E74BB0AF-D614-5D7E-634C-E336C8F60ECE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E74BB0AF-D614-5D7E-634C-E336C8F60ECE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E74BB0AF-D614-5D7E-634C-E336C8F60ECE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E74BB0AF-D614-5D7E-634C-E336C8F60ECE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AB00A465-027A-127F-755C-D8876413CA99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AB00A465-027A-127F-755C-D8876413CA99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AB00A465-027A-127F-755C-D8876413CA99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AB00A465-027A-127F-755C-D8876413CA99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A17CA46B-843B-A4C4-F49E-66D45A563E7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A17CA46B-843B-A4C4-F49E-66D45A563E7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A17CA46B-843B-A4C4-F49E-66D45A563E7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A17CA46B-843B-A4C4-F49E-66D45A563E7D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F145C558-4E06-070C-F334-C1602C7EBB82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F145C558-4E06-070C-F334-C1602C7EBB82}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F145C558-4E06-070C-F334-C1602C7EBB82}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F145C558-4E06-070C-F334-C1602C7EBB82}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0009173F-72FD-66D3-1847-1BE3CF78D2C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0009173F-72FD-66D3-1847-1BE3CF78D2C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0009173F-72FD-66D3-1847-1BE3CF78D2C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0009173F-72FD-66D3-1847-1BE3CF78D2C9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {855B58A1-DA7C-52FF-F3B1-D01C2D774892}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {855B58A1-DA7C-52FF-F3B1-D01C2D774892}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {855B58A1-DA7C-52FF-F3B1-D01C2D774892}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {855B58A1-DA7C-52FF-F3B1-D01C2D774892}.Release|Any CPU.Build.0 = Release|Any CPU
+ {61FE817C-8000-0074-9ABD-85988229F5DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {61FE817C-8000-0074-9ABD-85988229F5DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {61FE817C-8000-0074-9ABD-85988229F5DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {61FE817C-8000-0074-9ABD-85988229F5DD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38DE7F6C-4E86-14B4-60F7-7A6D27805B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {38DE7F6C-4E86-14B4-60F7-7A6D27805B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38DE7F6C-4E86-14B4-60F7-7A6D27805B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {38DE7F6C-4E86-14B4-60F7-7A6D27805B9B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E1EFC433-5480-680A-4D88-FDBFA955D3AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E1EFC433-5480-680A-4D88-FDBFA955D3AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E1EFC433-5480-680A-4D88-FDBFA955D3AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E1EFC433-5480-680A-4D88-FDBFA955D3AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3A135373-F997-A062-B5F0-9BC3703E5EBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3A135373-F997-A062-B5F0-9BC3703E5EBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3A135373-F997-A062-B5F0-9BC3703E5EBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3A135373-F997-A062-B5F0-9BC3703E5EBB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3095624-8DF1-C7AA-2BD6-1DAE92260845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3095624-8DF1-C7AA-2BD6-1DAE92260845}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3095624-8DF1-C7AA-2BD6-1DAE92260845}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3095624-8DF1-C7AA-2BD6-1DAE92260845}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E1CBD46-E8E5-736F-E8CA-B58DC983C013}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E1CBD46-E8E5-736F-E8CA-B58DC983C013}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E1CBD46-E8E5-736F-E8CA-B58DC983C013}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E1CBD46-E8E5-736F-E8CA-B58DC983C013}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CBF4390-D262-D577-1344-FF0414D66EBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9CBF4390-D262-D577-1344-FF0414D66EBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9CBF4390-D262-D577-1344-FF0414D66EBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9CBF4390-D262-D577-1344-FF0414D66EBD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0FE0A854-3D31-A053-7413-77DCFD8EA68A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0FE0A854-3D31-A053-7413-77DCFD8EA68A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0FE0A854-3D31-A053-7413-77DCFD8EA68A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0FE0A854-3D31-A053-7413-77DCFD8EA68A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F0F7B74-E405-E43B-E2FA-DFD5E647F550}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F0F7B74-E405-E43B-E2FA-DFD5E647F550}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F0F7B74-E405-E43B-E2FA-DFD5E647F550}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F0F7B74-E405-E43B-E2FA-DFD5E647F550}.Release|Any CPU.Build.0 = Release|Any CPU
+ {027AD2EF-4BFF-650B-AB16-EE0D5519D76F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {027AD2EF-4BFF-650B-AB16-EE0D5519D76F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {027AD2EF-4BFF-650B-AB16-EE0D5519D76F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {027AD2EF-4BFF-650B-AB16-EE0D5519D76F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A5370995-2033-8BC2-949B-F0C22B500DBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A5370995-2033-8BC2-949B-F0C22B500DBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A5370995-2033-8BC2-949B-F0C22B500DBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A5370995-2033-8BC2-949B-F0C22B500DBA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {09BAD218-96DE-B694-8C46-A10CB0391AD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {09BAD218-96DE-B694-8C46-A10CB0391AD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {09BAD218-96DE-B694-8C46-A10CB0391AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {09BAD218-96DE-B694-8C46-A10CB0391AD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F2F414F6-028E-C078-F510-6198423BF96F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F2F414F6-028E-C078-F510-6198423BF96F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F2F414F6-028E-C078-F510-6198423BF96F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F2F414F6-028E-C078-F510-6198423BF96F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {572233E1-7F81-4AEB-DF81-57054E5716E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {572233E1-7F81-4AEB-DF81-57054E5716E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {572233E1-7F81-4AEB-DF81-57054E5716E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {572233E1-7F81-4AEB-DF81-57054E5716E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1CA59D5D-64DE-5B51-59E2-9AF53F86062E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1CA59D5D-64DE-5B51-59E2-9AF53F86062E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1CA59D5D-64DE-5B51-59E2-9AF53F86062E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1CA59D5D-64DE-5B51-59E2-9AF53F86062E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D5834E7E-DBA4-0ED2-4917-2BC62600F786}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D5834E7E-DBA4-0ED2-4917-2BC62600F786}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D5834E7E-DBA4-0ED2-4917-2BC62600F786}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D5834E7E-DBA4-0ED2-4917-2BC62600F786}.Release|Any CPU.Build.0 = Release|Any CPU
+ {19EDB39F-C22F-E189-D49B-91147FDFF4BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {19EDB39F-C22F-E189-D49B-91147FDFF4BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {19EDB39F-C22F-E189-D49B-91147FDFF4BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {19EDB39F-C22F-E189-D49B-91147FDFF4BA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2804D9F0-52D0-9ADE-9154-A7DD5583147C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2804D9F0-52D0-9ADE-9154-A7DD5583147C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2804D9F0-52D0-9ADE-9154-A7DD5583147C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2804D9F0-52D0-9ADE-9154-A7DD5583147C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FE2D27C2-6414-F863-3830-9B21691E108E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FE2D27C2-6414-F863-3830-9B21691E108E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FE2D27C2-6414-F863-3830-9B21691E108E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FE2D27C2-6414-F863-3830-9B21691E108E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E0240B1D-04A7-53AD-87AE-68AD71E9291D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E0240B1D-04A7-53AD-87AE-68AD71E9291D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E0240B1D-04A7-53AD-87AE-68AD71E9291D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E0240B1D-04A7-53AD-87AE-68AD71E9291D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F5934F59-FAE1-722A-2319-B080CF094388}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F5934F59-FAE1-722A-2319-B080CF094388}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F5934F59-FAE1-722A-2319-B080CF094388}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F5934F59-FAE1-722A-2319-B080CF094388}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6317D65F-7951-DBC7-8B2B-07E524C10F33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6317D65F-7951-DBC7-8B2B-07E524C10F33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6317D65F-7951-DBC7-8B2B-07E524C10F33}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6317D65F-7951-DBC7-8B2B-07E524C10F33}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7C448618-03B4-1C84-EACB-3527BA9248C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C448618-03B4-1C84-EACB-3527BA9248C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7C448618-03B4-1C84-EACB-3527BA9248C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7C448618-03B4-1C84-EACB-3527BA9248C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D5D316B1-9968-4C4A-167B-7F6D808B1DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D5D316B1-9968-4C4A-167B-7F6D808B1DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D5D316B1-9968-4C4A-167B-7F6D808B1DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D5D316B1-9968-4C4A-167B-7F6D808B1DEC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CBA992DE-879E-968C-CB40-120DF49B2BD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CBA992DE-879E-968C-CB40-120DF49B2BD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CBA992DE-879E-968C-CB40-120DF49B2BD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CBA992DE-879E-968C-CB40-120DF49B2BD4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B95DF7C6-C9E2-42F0-9B74-3DA031748502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B95DF7C6-C9E2-42F0-9B74-3DA031748502}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B95DF7C6-C9E2-42F0-9B74-3DA031748502}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B95DF7C6-C9E2-42F0-9B74-3DA031748502}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F4F5528-F643-0514-FE70-B7D05125ACA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F4F5528-F643-0514-FE70-B7D05125ACA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F4F5528-F643-0514-FE70-B7D05125ACA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F4F5528-F643-0514-FE70-B7D05125ACA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {737C5917-E1C8-F135-0EE0-066F1ED9542B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {737C5917-E1C8-F135-0EE0-066F1ED9542B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {737C5917-E1C8-F135-0EE0-066F1ED9542B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {737C5917-E1C8-F135-0EE0-066F1ED9542B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A5F928FC-D927-099C-A405-2FFE52331F72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A5F928FC-D927-099C-A405-2FFE52331F72}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A5F928FC-D927-099C-A405-2FFE52331F72}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A5F928FC-D927-099C-A405-2FFE52331F72}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D13175E6-538D-F64D-6A83-5054C4514FA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D13175E6-538D-F64D-6A83-5054C4514FA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D13175E6-538D-F64D-6A83-5054C4514FA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D13175E6-538D-F64D-6A83-5054C4514FA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6DADE881-491C-53C6-F3E7-BBE6EA60A195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6DADE881-491C-53C6-F3E7-BBE6EA60A195}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6DADE881-491C-53C6-F3E7-BBE6EA60A195}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6DADE881-491C-53C6-F3E7-BBE6EA60A195}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B04B513-466F-30B7-C715-7A665E636BB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B04B513-466F-30B7-C715-7A665E636BB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B04B513-466F-30B7-C715-7A665E636BB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6B04B513-466F-30B7-C715-7A665E636BB1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EDF7B0C7-DCDE-7A11-9597-F15343B7F51A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EDF7B0C7-DCDE-7A11-9597-F15343B7F51A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EDF7B0C7-DCDE-7A11-9597-F15343B7F51A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EDF7B0C7-DCDE-7A11-9597-F15343B7F51A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EBB8D132-858C-A3AE-0144-A5FD94C1F250}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EBB8D132-858C-A3AE-0144-A5FD94C1F250}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EBB8D132-858C-A3AE-0144-A5FD94C1F250}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EBB8D132-858C-A3AE-0144-A5FD94C1F250}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {90D73788-FE91-068A-48D0-F43B7A87D517}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {90D73788-FE91-068A-48D0-F43B7A87D517}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {90D73788-FE91-068A-48D0-F43B7A87D517}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {90D73788-FE91-068A-48D0-F43B7A87D517}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A038C99E-88F9-CE96-260B-05BA5AD742D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A038C99E-88F9-CE96-260B-05BA5AD742D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A038C99E-88F9-CE96-260B-05BA5AD742D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A038C99E-88F9-CE96-260B-05BA5AD742D0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D8EEBF9-9BE1-1E42-5517-DF8544D14017}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D8EEBF9-9BE1-1E42-5517-DF8544D14017}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D8EEBF9-9BE1-1E42-5517-DF8544D14017}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D8EEBF9-9BE1-1E42-5517-DF8544D14017}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0BA17173-C16E-2AC7-53D1-BD78586CDCB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BA17173-C16E-2AC7-53D1-BD78586CDCB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BA17173-C16E-2AC7-53D1-BD78586CDCB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0BA17173-C16E-2AC7-53D1-BD78586CDCB5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {84229434-55F0-ED64-82D0-D0D1A8C0768B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {84229434-55F0-ED64-82D0-D0D1A8C0768B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {84229434-55F0-ED64-82D0-D0D1A8C0768B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {84229434-55F0-ED64-82D0-D0D1A8C0768B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B250C4C1-E554-DD57-1254-B539F96A16D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B250C4C1-E554-DD57-1254-B539F96A16D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B250C4C1-E554-DD57-1254-B539F96A16D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B250C4C1-E554-DD57-1254-B539F96A16D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B69F2D8-1E73-77CB-80A6-4E90A8C449DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B69F2D8-1E73-77CB-80A6-4E90A8C449DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B69F2D8-1E73-77CB-80A6-4E90A8C449DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B69F2D8-1E73-77CB-80A6-4E90A8C449DC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D068FC98-778A-C5CF-5CC0-2C1C5005CEF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D068FC98-778A-C5CF-5CC0-2C1C5005CEF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D068FC98-778A-C5CF-5CC0-2C1C5005CEF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D068FC98-778A-C5CF-5CC0-2C1C5005CEF5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6BAC3E36-2946-DEAF-219B-CD92E0DCE92B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6BAC3E36-2946-DEAF-219B-CD92E0DCE92B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6BAC3E36-2946-DEAF-219B-CD92E0DCE92B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6BAC3E36-2946-DEAF-219B-CD92E0DCE92B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10077F6C-4A61-FB97-BC60-6C2C208B0364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10077F6C-4A61-FB97-BC60-6C2C208B0364}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10077F6C-4A61-FB97-BC60-6C2C208B0364}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10077F6C-4A61-FB97-BC60-6C2C208B0364}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ECF0D225-59F4-A33B-D6B2-BA2B2109220F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ECF0D225-59F4-A33B-D6B2-BA2B2109220F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ECF0D225-59F4-A33B-D6B2-BA2B2109220F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ECF0D225-59F4-A33B-D6B2-BA2B2109220F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E2F4919B-824D-2AF2-AFEB-9A34DEC32705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E2F4919B-824D-2AF2-AFEB-9A34DEC32705}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E2F4919B-824D-2AF2-AFEB-9A34DEC32705}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E2F4919B-824D-2AF2-AFEB-9A34DEC32705}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B40D516-C826-CE95-5612-4E3945315B36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0B40D516-C826-CE95-5612-4E3945315B36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B40D516-C826-CE95-5612-4E3945315B36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0B40D516-C826-CE95-5612-4E3945315B36}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4754551A-5296-C902-32A6-09285A5F8F17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4754551A-5296-C902-32A6-09285A5F8F17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4754551A-5296-C902-32A6-09285A5F8F17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4754551A-5296-C902-32A6-09285A5F8F17}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A3E59F88-C8BE-780C-8673-81E5C51F87AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A3E59F88-C8BE-780C-8673-81E5C51F87AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A3E59F88-C8BE-780C-8673-81E5C51F87AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A3E59F88-C8BE-780C-8673-81E5C51F87AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95732646-4F66-F361-BCEE-AEFB0757FB7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {95732646-4F66-F361-BCEE-AEFB0757FB7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95732646-4F66-F361-BCEE-AEFB0757FB7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {95732646-4F66-F361-BCEE-AEFB0757FB7D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {640766C0-155B-4CD2-E077-3C2103377D51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {640766C0-155B-4CD2-E077-3C2103377D51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {640766C0-155B-4CD2-E077-3C2103377D51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {640766C0-155B-4CD2-E077-3C2103377D51}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6C83B347-D837-3B98-38EA-AA317CE2D2E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6C83B347-D837-3B98-38EA-AA317CE2D2E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6C83B347-D837-3B98-38EA-AA317CE2D2E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6C83B347-D837-3B98-38EA-AA317CE2D2E3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0495C8E0-BC2A-2D29-48B7-FDE1B6433531}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0495C8E0-BC2A-2D29-48B7-FDE1B6433531}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0495C8E0-BC2A-2D29-48B7-FDE1B6433531}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0495C8E0-BC2A-2D29-48B7-FDE1B6433531}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CD774EBF-F9FE-023B-C82A-5AD97B92701E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CD774EBF-F9FE-023B-C82A-5AD97B92701E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CD774EBF-F9FE-023B-C82A-5AD97B92701E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CD774EBF-F9FE-023B-C82A-5AD97B92701E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {21749CF4-81F8-9829-BC21-D9C932215BF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {21749CF4-81F8-9829-BC21-D9C932215BF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {21749CF4-81F8-9829-BC21-D9C932215BF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {21749CF4-81F8-9829-BC21-D9C932215BF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A5C1E618-C443-99EB-8981-6BBAD943D0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A5C1E618-C443-99EB-8981-6BBAD943D0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A5C1E618-C443-99EB-8981-6BBAD943D0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A5C1E618-C443-99EB-8981-6BBAD943D0EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A620858B-1D91-4850-5322-A4CAB86D8018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A620858B-1D91-4850-5322-A4CAB86D8018}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A620858B-1D91-4850-5322-A4CAB86D8018}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A620858B-1D91-4850-5322-A4CAB86D8018}.Release|Any CPU.Build.0 = Release|Any CPU
+ {53A7CD9D-3FBD-B7A7-C805-7D28177FB072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {53A7CD9D-3FBD-B7A7-C805-7D28177FB072}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {53A7CD9D-3FBD-B7A7-C805-7D28177FB072}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {53A7CD9D-3FBD-B7A7-C805-7D28177FB072}.Release|Any CPU.Build.0 = Release|Any CPU
+ {50E0A472-D1F2-1327-0830-68DCBF5A43F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {50E0A472-D1F2-1327-0830-68DCBF5A43F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {50E0A472-D1F2-1327-0830-68DCBF5A43F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {50E0A472-D1F2-1327-0830-68DCBF5A43F9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {199CAA45-D0BE-6968-57B4-75C3A04EA724}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {199CAA45-D0BE-6968-57B4-75C3A04EA724}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {199CAA45-D0BE-6968-57B4-75C3A04EA724}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {199CAA45-D0BE-6968-57B4-75C3A04EA724}.Release|Any CPU.Build.0 = Release|Any CPU
+ {89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F522F4C-8761-FB32-02C3-28F2D3E249E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F522F4C-8761-FB32-02C3-28F2D3E249E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F522F4C-8761-FB32-02C3-28F2D3E249E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F522F4C-8761-FB32-02C3-28F2D3E249E7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E42804EF-9568-025B-B8EE-A0A340F49B5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E42804EF-9568-025B-B8EE-A0A340F49B5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E42804EF-9568-025B-B8EE-A0A340F49B5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E42804EF-9568-025B-B8EE-A0A340F49B5D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {48AB5F5E-5DB6-EEC7-657E-B12F262704BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {48AB5F5E-5DB6-EEC7-657E-B12F262704BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {48AB5F5E-5DB6-EEC7-657E-B12F262704BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {48AB5F5E-5DB6-EEC7-657E-B12F262704BB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B26867D4-423A-9441-C49F-A9271C6FE10E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B26867D4-423A-9441-C49F-A9271C6FE10E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B26867D4-423A-9441-C49F-A9271C6FE10E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B26867D4-423A-9441-C49F-A9271C6FE10E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {03C7699E-CFDA-1EF1-29C5-1342A0148D4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {03C7699E-CFDA-1EF1-29C5-1342A0148D4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {03C7699E-CFDA-1EF1-29C5-1342A0148D4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {03C7699E-CFDA-1EF1-29C5-1342A0148D4E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {712A853F-0692-D9F1-169F-A05CDFF2C392}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {712A853F-0692-D9F1-169F-A05CDFF2C392}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {712A853F-0692-D9F1-169F-A05CDFF2C392}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {712A853F-0692-D9F1-169F-A05CDFF2C392}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A666BD85-C427-14C9-7741-564EF3C09EDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A666BD85-C427-14C9-7741-564EF3C09EDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A666BD85-C427-14C9-7741-564EF3C09EDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A666BD85-C427-14C9-7741-564EF3C09EDD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CED7B1F0-9935-F064-CA6B-8AAF997069B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CED7B1F0-9935-F064-CA6B-8AAF997069B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CED7B1F0-9935-F064-CA6B-8AAF997069B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CED7B1F0-9935-F064-CA6B-8AAF997069B4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {946EFA0A-C15B-7D9B-CD26-F49A5492248F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {946EFA0A-C15B-7D9B-CD26-F49A5492248F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {946EFA0A-C15B-7D9B-CD26-F49A5492248F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {946EFA0A-C15B-7D9B-CD26-F49A5492248F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5707C69C-B7E4-97ED-D390-9298B38971A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5707C69C-B7E4-97ED-D390-9298B38971A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5707C69C-B7E4-97ED-D390-9298B38971A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5707C69C-B7E4-97ED-D390-9298B38971A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7927D0E7-12C9-2849-E9CC-6C0F430D0414}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7927D0E7-12C9-2849-E9CC-6C0F430D0414}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7927D0E7-12C9-2849-E9CC-6C0F430D0414}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7927D0E7-12C9-2849-E9CC-6C0F430D0414}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1223CDE8-FC81-27FE-55F2-B1EC778E13DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1223CDE8-FC81-27FE-55F2-B1EC778E13DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1223CDE8-FC81-27FE-55F2-B1EC778E13DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1223CDE8-FC81-27FE-55F2-B1EC778E13DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B26138F6-246A-E853-0265-E06ED65DD2B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B26138F6-246A-E853-0265-E06ED65DD2B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B26138F6-246A-E853-0265-E06ED65DD2B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B26138F6-246A-E853-0265-E06ED65DD2B2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35B4952A-06C8-7F26-8E33-33CD40F66CA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35B4952A-06C8-7F26-8E33-33CD40F66CA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35B4952A-06C8-7F26-8E33-33CD40F66CA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35B4952A-06C8-7F26-8E33-33CD40F66CA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E26ACAA3-2D25-983F-6369-F3B99F6567ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E26ACAA3-2D25-983F-6369-F3B99F6567ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E26ACAA3-2D25-983F-6369-F3B99F6567ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E26ACAA3-2D25-983F-6369-F3B99F6567ED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AC6D83CA-23CC-DD23-0319-F685050CA04E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AC6D83CA-23CC-DD23-0319-F685050CA04E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AC6D83CA-23CC-DD23-0319-F685050CA04E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AC6D83CA-23CC-DD23-0319-F685050CA04E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B1A38819-9DF9-CA30-A5AC-FFE05B9625FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B1A38819-9DF9-CA30-A5AC-FFE05B9625FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B1A38819-9DF9-CA30-A5AC-FFE05B9625FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B1A38819-9DF9-CA30-A5AC-FFE05B9625FC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A20FC013-109C-716E-D75A-1F5B3808136A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A20FC013-109C-716E-D75A-1F5B3808136A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A20FC013-109C-716E-D75A-1F5B3808136A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A20FC013-109C-716E-D75A-1F5B3808136A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B79920FD-4719-78ED-1556-C51F6208A0C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B79920FD-4719-78ED-1556-C51F6208A0C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B79920FD-4719-78ED-1556-C51F6208A0C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B79920FD-4719-78ED-1556-C51F6208A0C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {45E8D60B-9947-0309-CA4D-DD24010A33F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {45E8D60B-9947-0309-CA4D-DD24010A33F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {45E8D60B-9947-0309-CA4D-DD24010A33F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {45E8D60B-9947-0309-CA4D-DD24010A33F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {48B96B29-1BE1-6353-C737-0A97C932A0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {48B96B29-1BE1-6353-C737-0A97C932A0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {48B96B29-1BE1-6353-C737-0A97C932A0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {48B96B29-1BE1-6353-C737-0A97C932A0B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5F44350F-E4D3-648B-2BCB-C38BB4DE30EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F44350F-E4D3-648B-2BCB-C38BB4DE30EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F44350F-E4D3-648B-2BCB-C38BB4DE30EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F44350F-E4D3-648B-2BCB-C38BB4DE30EC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D0207A1D-4A45-83EC-9417-85D149435CC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D0207A1D-4A45-83EC-9417-85D149435CC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D0207A1D-4A45-83EC-9417-85D149435CC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D0207A1D-4A45-83EC-9417-85D149435CC6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C8E2E78-234F-FABE-B9F4-2889B382A018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4C8E2E78-234F-FABE-B9F4-2889B382A018}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C8E2E78-234F-FABE-B9F4-2889B382A018}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4C8E2E78-234F-FABE-B9F4-2889B382A018}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1C673A4F-1CF8-5BC9-894E-2ACD03360015}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1C673A4F-1CF8-5BC9-894E-2ACD03360015}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1C673A4F-1CF8-5BC9-894E-2ACD03360015}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1C673A4F-1CF8-5BC9-894E-2ACD03360015}.Release|Any CPU.Build.0 = Release|Any CPU
+ {05728302-51B9-6F63-6BD1-B65A2CE6CCAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {05728302-51B9-6F63-6BD1-B65A2CE6CCAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {05728302-51B9-6F63-6BD1-B65A2CE6CCAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {05728302-51B9-6F63-6BD1-B65A2CE6CCAA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7A8F268E-85B6-9533-D55A-9DB4C93E0022}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7A8F268E-85B6-9533-D55A-9DB4C93E0022}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7A8F268E-85B6-9533-D55A-9DB4C93E0022}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7A8F268E-85B6-9533-D55A-9DB4C93E0022}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7D9D0A7-AD98-0592-A31C-87EEFFED8D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7D9D0A7-AD98-0592-A31C-87EEFFED8D79}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7D9D0A7-AD98-0592-A31C-87EEFFED8D79}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7D9D0A7-AD98-0592-A31C-87EEFFED8D79}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {56F2A6FD-0792-E4EB-197B-E74204B5EEDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {56F2A6FD-0792-E4EB-197B-E74204B5EEDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {56F2A6FD-0792-E4EB-197B-E74204B5EEDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {56F2A6FD-0792-E4EB-197B-E74204B5EEDB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E0920DB7-629B-63EC-36F1-363AF4E49D0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E0920DB7-629B-63EC-36F1-363AF4E49D0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E0920DB7-629B-63EC-36F1-363AF4E49D0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E0920DB7-629B-63EC-36F1-363AF4E49D0C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA0E1A8D-BAAC-02A5-782F-0D777CB35D68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA0E1A8D-BAAC-02A5-782F-0D777CB35D68}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA0E1A8D-BAAC-02A5-782F-0D777CB35D68}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA0E1A8D-BAAC-02A5-782F-0D777CB35D68}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7A5BAD11-ADED-76E3-66B4-1B65CD42DD91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7A5BAD11-ADED-76E3-66B4-1B65CD42DD91}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7A5BAD11-ADED-76E3-66B4-1B65CD42DD91}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7A5BAD11-ADED-76E3-66B4-1B65CD42DD91}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {75D35A31-CFC4-5264-924B-AB67BEA94179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {75D35A31-CFC4-5264-924B-AB67BEA94179}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {75D35A31-CFC4-5264-924B-AB67BEA94179}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {75D35A31-CFC4-5264-924B-AB67BEA94179}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C8E80872-D703-1883-9B52-C7314284275C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C8E80872-D703-1883-9B52-C7314284275C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C8E80872-D703-1883-9B52-C7314284275C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C8E80872-D703-1883-9B52-C7314284275C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {145D43AD-BEC9-541A-8B9E-5A5F69633B13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {145D43AD-BEC9-541A-8B9E-5A5F69633B13}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {145D43AD-BEC9-541A-8B9E-5A5F69633B13}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {145D43AD-BEC9-541A-8B9E-5A5F69633B13}.Release|Any CPU.Build.0 = Release|Any CPU
+ {449C6EC1-9EC8-CC5F-130C-5033969B015E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {449C6EC1-9EC8-CC5F-130C-5033969B015E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {449C6EC1-9EC8-CC5F-130C-5033969B015E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {449C6EC1-9EC8-CC5F-130C-5033969B015E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5A692250-EDF4-A4F7-DE0F-EB4251A71C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5A692250-EDF4-A4F7-DE0F-EB4251A71C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5A692250-EDF4-A4F7-DE0F-EB4251A71C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5A692250-EDF4-A4F7-DE0F-EB4251A71C1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C1DA5338-D93D-5725-4458-20BF4E978EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C1DA5338-D93D-5725-4458-20BF4E978EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C1DA5338-D93D-5725-4458-20BF4E978EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C1DA5338-D93D-5725-4458-20BF4E978EEE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {127303DD-69E6-F7E5-E5C7-F0B53C26BA5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {127303DD-69E6-F7E5-E5C7-F0B53C26BA5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {127303DD-69E6-F7E5-E5C7-F0B53C26BA5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {127303DD-69E6-F7E5-E5C7-F0B53C26BA5C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FF09A322-E24C-F586-20D2-7094E35E5452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FF09A322-E24C-F586-20D2-7094E35E5452}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FF09A322-E24C-F586-20D2-7094E35E5452}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FF09A322-E24C-F586-20D2-7094E35E5452}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DD0F11E1-A9E4-2248-FA3C-342BDC132A2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD0F11E1-A9E4-2248-FA3C-342BDC132A2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DD0F11E1-A9E4-2248-FA3C-342BDC132A2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DD0F11E1-A9E4-2248-FA3C-342BDC132A2A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95710EF3-4E9D-5F73-158C-28AED0162811}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {95710EF3-4E9D-5F73-158C-28AED0162811}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95710EF3-4E9D-5F73-158C-28AED0162811}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {95710EF3-4E9D-5F73-158C-28AED0162811}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F0DD2D76-52C4-7200-6140-8BB9FF980759}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F0DD2D76-52C4-7200-6140-8BB9FF980759}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F0DD2D76-52C4-7200-6140-8BB9FF980759}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F0DD2D76-52C4-7200-6140-8BB9FF980759}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9086195C-0437-2E91-C049-5202FD563475}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9086195C-0437-2E91-C049-5202FD563475}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9086195C-0437-2E91-C049-5202FD563475}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9086195C-0437-2E91-C049-5202FD563475}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D21D6E80-0828-2D30-0981-8C1068CDD350} = {F2E35B3E-9711-EDEC-6202-DB40BDEED14A}
+ {99485E9C-4005-F9AF-41D8-8443FD87F5BD} = {F2E35B3E-9711-EDEC-6202-DB40BDEED14A}
+ {F0E2884D-BBBB-B295-33DC-1F2A6B2EC46F} = {F2E35B3E-9711-EDEC-6202-DB40BDEED14A}
+ {AB2CC9BE-E362-A6EE-598B-095D55A1D55D} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {3668A261-35AE-50AB-9BFD-C605ECF2DFFD} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {A8DE3212-5173-4DF6-CBF5-A550367BD4F2} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {CA74985E-57AF-86D4-11C5-1FBEFE151FA2} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {E74BB0AF-D614-5D7E-634C-E336C8F60ECE} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {AB00A465-027A-127F-755C-D8876413CA99} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {A17CA46B-843B-A4C4-F49E-66D45A563E7D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {F145C558-4E06-070C-F334-C1602C7EBB82} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {0009173F-72FD-66D3-1847-1BE3CF78D2C9} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {855B58A1-DA7C-52FF-F3B1-D01C2D774892} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {61FE817C-8000-0074-9ABD-85988229F5DD} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {6A8E7A36-6FBC-45B9-42F3-8F70DEE4D270} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {38DE7F6C-4E86-14B4-60F7-7A6D27805B9B} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {E1EFC433-5480-680A-4D88-FDBFA955D3AF} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {3A135373-F997-A062-B5F0-9BC3703E5EBB} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {E3095624-8DF1-C7AA-2BD6-1DAE92260845} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {2B9005F9-3DC3-7340-5921-F06418BF9173} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {3E1CBD46-E8E5-736F-E8CA-B58DC983C013} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {9CBF4390-D262-D577-1344-FF0414D66EBD} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {0FE0A854-3D31-A053-7413-77DCFD8EA68A} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {7F0F7B74-E405-E43B-E2FA-DFD5E647F550} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {027AD2EF-4BFF-650B-AB16-EE0D5519D76F} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {EA4CBDB3-8C05-F74D-FBB0-DDC1C00AC9D5} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {A5370995-2033-8BC2-949B-F0C22B500DBA} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {09BAD218-96DE-B694-8C46-A10CB0391AD2} = {2B9005F9-3DC3-7340-5921-F06418BF9173}
+ {A47295F4-48F1-0AF4-2F1C-11C143AD3C2B} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {F2F414F6-028E-C078-F510-6198423BF96F} = {A47295F4-48F1-0AF4-2F1C-11C143AD3C2B}
+ {D7DC9B74-6BC4-2470-2038-1E57C2DCB73B} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {572233E1-7F81-4AEB-DF81-57054E5716E8} = {D7DC9B74-6BC4-2470-2038-1E57C2DCB73B}
+ {1CA59D5D-64DE-5B51-59E2-9AF53F86062E} = {D7DC9B74-6BC4-2470-2038-1E57C2DCB73B}
+ {D5834E7E-DBA4-0ED2-4917-2BC62600F786} = {D7DC9B74-6BC4-2470-2038-1E57C2DCB73B}
+ {4A98EFBC-B517-E6A9-AFF4-73EB3A972D36} = {FA8A28C8-4B59-8028-2ACF-626D05B08DB7}
+ {19EDB39F-C22F-E189-D49B-91147FDFF4BA} = {4A98EFBC-B517-E6A9-AFF4-73EB3A972D36}
+ {E24DD317-1937-B715-7881-AC89DDC455B8} = {FA8A28C8-4B59-8028-2ACF-626D05B08DB7}
+ {2804D9F0-52D0-9ADE-9154-A7DD5583147C} = {E24DD317-1937-B715-7881-AC89DDC455B8}
+ {502DCB23-4928-BCB1-E92B-DAF27F6AA8C2} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {FE2D27C2-6414-F863-3830-9B21691E108E} = {502DCB23-4928-BCB1-E92B-DAF27F6AA8C2}
+ {A779C5C4-8BCC-B45E-6171-5D5C80F57A7F} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {E0240B1D-04A7-53AD-87AE-68AD71E9291D} = {A779C5C4-8BCC-B45E-6171-5D5C80F57A7F}
+ {82DD39A8-DC2A-F3A4-125C-DF19855C85B8} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {F5934F59-FAE1-722A-2319-B080CF094388} = {82DD39A8-DC2A-F3A4-125C-DF19855C85B8}
+ {6317D65F-7951-DBC7-8B2B-07E524C10F33} = {82DD39A8-DC2A-F3A4-125C-DF19855C85B8}
+ {E68D3913-248F-7FDB-4166-5411CEBF3354} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {D4A55BB2-8B68-DFCA-D3B0-9208E743A8A4} = {E68D3913-248F-7FDB-4166-5411CEBF3354}
+ {9E69EAE7-5F19-6D45-D5B8-E66C231A0989} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {7C448618-03B4-1C84-EACB-3527BA9248C4} = {9E69EAE7-5F19-6D45-D5B8-E66C231A0989}
+ {FBFD7EBE-C3BF-0A9B-5276-C89D2B28B717} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {D5D316B1-9968-4C4A-167B-7F6D808B1DEC} = {FBFD7EBE-C3BF-0A9B-5276-C89D2B28B717}
+ {190132A9-CF1F-E2EC-94C5-65A552606D3A} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {CBA992DE-879E-968C-CB40-120DF49B2BD4} = {190132A9-CF1F-E2EC-94C5-65A552606D3A}
+ {B95DF7C6-C9E2-42F0-9B74-3DA031748502} = {190132A9-CF1F-E2EC-94C5-65A552606D3A}
+ {2F4F5528-F643-0514-FE70-B7D05125ACA0} = {190132A9-CF1F-E2EC-94C5-65A552606D3A}
+ {307C0BB7-7CC3-BBB9-AD3E-9865302C0ED9} = {190132A9-CF1F-E2EC-94C5-65A552606D3A}
+ {C3A59317-D1D2-B452-0875-2B9DFA608829} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {737C5917-E1C8-F135-0EE0-066F1ED9542B} = {C3A59317-D1D2-B452-0875-2B9DFA608829}
+ {A3929D46-B25B-D78D-8E45-000B8ADE8ACD} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {A5F928FC-D927-099C-A405-2FFE52331F72} = {A3929D46-B25B-D78D-8E45-000B8ADE8ACD}
+ {344B8B79-CC4E-40A7-7223-F29638F46488} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {D13175E6-538D-F64D-6A83-5054C4514FA0} = {344B8B79-CC4E-40A7-7223-F29638F46488}
+ {0B3FB0C0-6A6C-7439-A2AF-1D96CB2E773A} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {6DADE881-491C-53C6-F3E7-BBE6EA60A195} = {0B3FB0C0-6A6C-7439-A2AF-1D96CB2E773A}
+ {6B04B513-466F-30B7-C715-7A665E636BB1} = {0B3FB0C0-6A6C-7439-A2AF-1D96CB2E773A}
+ {C38BAEBC-3EDF-6C38-0C4B-CF116BC2811A} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {EDF7B0C7-DCDE-7A11-9597-F15343B7F51A} = {C38BAEBC-3EDF-6C38-0C4B-CF116BC2811A}
+ {68CE2DF0-F1BD-9719-82A4-D030E0055FE2} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {EBB8D132-858C-A3AE-0144-A5FD94C1F250} = {68CE2DF0-F1BD-9719-82A4-D030E0055FE2}
+ {8FF813B3-1DC0-031B-7CF7-B4A818AEE1EC} = {68CE2DF0-F1BD-9719-82A4-D030E0055FE2}
+ {90D73788-FE91-068A-48D0-F43B7A87D517} = {68CE2DF0-F1BD-9719-82A4-D030E0055FE2}
+ {2D7784EB-1AF4-1265-0362-E17F116CD7E3} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {C106B87E-C2C9-2D8B-51D9-C6CA8B0D3CFB} = {2D7784EB-1AF4-1265-0362-E17F116CD7E3}
+ {E17BA0A2-C77C-C698-A646-308F2340F9AB} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {A038C99E-88F9-CE96-260B-05BA5AD742D0} = {E17BA0A2-C77C-C698-A646-308F2340F9AB}
+ {9336F0BA-575D-382F-7F03-3F611CB9CFEA} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {3D8EEBF9-9BE1-1E42-5517-DF8544D14017} = {9336F0BA-575D-382F-7F03-3F611CB9CFEA}
+ {4B3E7014-594A-932B-614D-FCF43C24BEA2} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {0BA17173-C16E-2AC7-53D1-BD78586CDCB5} = {4B3E7014-594A-932B-614D-FCF43C24BEA2}
+ {2AA71544-2F1A-14C9-E83D-1507EB484B4D} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {84229434-55F0-ED64-82D0-D0D1A8C0768B} = {2AA71544-2F1A-14C9-E83D-1507EB484B4D}
+ {2E11B8E4-0D5F-CA9A-2597-D8C08F3A66A4} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {B250C4C1-E554-DD57-1254-B539F96A16D6} = {2E11B8E4-0D5F-CA9A-2597-D8C08F3A66A4}
+ {3848E832-2561-ABDF-997A-DFE6DD1C8890} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {1B69F2D8-1E73-77CB-80A6-4E90A8C449DC} = {3848E832-2561-ABDF-997A-DFE6DD1C8890}
+ {A8B68EB2-26D4-1F30-E3D1-0527737FEE12} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {D068FC98-778A-C5CF-5CC0-2C1C5005CEF5} = {A8B68EB2-26D4-1F30-E3D1-0527737FEE12}
+ {FE63A0F5-C916-7BAA-8CDE-120B7235E45F} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {6BAC3E36-2946-DEAF-219B-CD92E0DCE92B} = {FE63A0F5-C916-7BAA-8CDE-120B7235E45F}
+ {10077F6C-4A61-FB97-BC60-6C2C208B0364} = {FE63A0F5-C916-7BAA-8CDE-120B7235E45F}
+ {ECF0D225-59F4-A33B-D6B2-BA2B2109220F} = {FE63A0F5-C916-7BAA-8CDE-120B7235E45F}
+ {EFA6F62C-BC70-92FC-57A4-F996F27994DE} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {7D55CAF2-AC81-A92C-3BCB-DEA1EC895D79} = {EFA6F62C-BC70-92FC-57A4-F996F27994DE}
+ {AE81963C-A437-ED26-C961-BB1CBB2C1448} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {E2F4919B-824D-2AF2-AFEB-9A34DEC32705} = {AE81963C-A437-ED26-C961-BB1CBB2C1448}
+ {9BADF356-9015-ACC3-739C-26BACEA9A537} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {0B40D516-C826-CE95-5612-4E3945315B36} = {9BADF356-9015-ACC3-739C-26BACEA9A537}
+ {A9103695-60A0-3585-24FD-4541772AAE48} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {4754551A-5296-C902-32A6-09285A5F8F17} = {A9103695-60A0-3585-24FD-4541772AAE48}
+ {E4829DF2-FCFA-F7E6-662E-3D73FC41A55A} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {A3E59F88-C8BE-780C-8673-81E5C51F87AF} = {E4829DF2-FCFA-F7E6-662E-3D73FC41A55A}
+ {83863CAF-A8F5-4411-F708-2EA1958EACF9} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA}
+ {95732646-4F66-F361-BCEE-AEFB0757FB7D} = {83863CAF-A8F5-4411-F708-2EA1958EACF9}
+ {2413BC9F-865B-7E72-45C2-9376C3B9EBC4} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {A9039DF4-4FA6-1723-CDC7-D1A1FD4A67ED} = {2413BC9F-865B-7E72-45C2-9376C3B9EBC4}
+ {F95C8CD6-FE61-6A0C-48A8-7A66A617D1F5} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {640766C0-155B-4CD2-E077-3C2103377D51} = {F95C8CD6-FE61-6A0C-48A8-7A66A617D1F5}
+ {74E40A93-ECA0-5F62-C60B-51C5FB3C09C5} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {6C83B347-D837-3B98-38EA-AA317CE2D2E3} = {74E40A93-ECA0-5F62-C60B-51C5FB3C09C5}
+ {0495C8E0-BC2A-2D29-48B7-FDE1B6433531} = {74E40A93-ECA0-5F62-C60B-51C5FB3C09C5}
+ {CD774EBF-F9FE-023B-C82A-5AD97B92701E} = {74E40A93-ECA0-5F62-C60B-51C5FB3C09C5}
+ {ED6994AD-0F8E-B48C-C9C9-6FE24098B950} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {21749CF4-81F8-9829-BC21-D9C932215BF3} = {ED6994AD-0F8E-B48C-C9C9-6FE24098B950}
+ {A5C1E618-C443-99EB-8981-6BBAD943D0EF} = {ED6994AD-0F8E-B48C-C9C9-6FE24098B950}
+ {A620858B-1D91-4850-5322-A4CAB86D8018} = {ED6994AD-0F8E-B48C-C9C9-6FE24098B950}
+ {53A7CD9D-3FBD-B7A7-C805-7D28177FB072} = {ED6994AD-0F8E-B48C-C9C9-6FE24098B950}
+ {50E0A472-D1F2-1327-0830-68DCBF5A43F9} = {ED6994AD-0F8E-B48C-C9C9-6FE24098B950}
+ {C2277486-2546-5E9D-65E6-EE7A61D9B560} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {199CAA45-D0BE-6968-57B4-75C3A04EA724} = {C2277486-2546-5E9D-65E6-EE7A61D9B560}
+ {89C59A34-9B8F-A9BE-C9D6-CA2AE44D7AEA} = {C2277486-2546-5E9D-65E6-EE7A61D9B560}
+ {2F522F4C-8761-FB32-02C3-28F2D3E249E7} = {C2277486-2546-5E9D-65E6-EE7A61D9B560}
+ {48BFDF3C-03E5-0344-52A0-1A84EC0FA582} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {E42804EF-9568-025B-B8EE-A0A340F49B5D} = {48BFDF3C-03E5-0344-52A0-1A84EC0FA582}
+ {7F7206D3-DD58-CEC4-AD8B-D55758F54E6C} = {CA253913-39DE-BFD0-C9A3-4B7EC6FBDF17}
+ {48AB5F5E-5DB6-EEC7-657E-B12F262704BB} = {7F7206D3-DD58-CEC4-AD8B-D55758F54E6C}
+ {676D0979-40FD-0699-BCE1-E26B1C7B6859} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
+ {D835E96A-8459-17BC-F096-905D4261E1AC} = {676D0979-40FD-0699-BCE1-E26B1C7B6859}
+ {B26867D4-423A-9441-C49F-A9271C6FE10E} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {03C7699E-CFDA-1EF1-29C5-1342A0148D4E} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {712A853F-0692-D9F1-169F-A05CDFF2C392} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {A666BD85-C427-14C9-7741-564EF3C09EDD} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {CED7B1F0-9935-F064-CA6B-8AAF997069B4} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {946EFA0A-C15B-7D9B-CD26-F49A5492248F} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {5707C69C-B7E4-97ED-D390-9298B38971A1} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {7927D0E7-12C9-2849-E9CC-6C0F430D0414} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {1223CDE8-FC81-27FE-55F2-B1EC778E13DA} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {B26138F6-246A-E853-0265-E06ED65DD2B2} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {35B4952A-06C8-7F26-8E33-33CD40F66CA0} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {E26ACAA3-2D25-983F-6369-F3B99F6567ED} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {AC6D83CA-23CC-DD23-0319-F685050CA04E} = {D835E96A-8459-17BC-F096-905D4261E1AC}
+ {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9} = {676D0979-40FD-0699-BCE1-E26B1C7B6859}
+ {B1A38819-9DF9-CA30-A5AC-FFE05B9625FC} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {31B87E9E-C6CD-BF92-61A8-B7C2F3B460E1} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {A20FC013-109C-716E-D75A-1F5B3808136A} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {0F602BBE-BF5F-64A4-E783-B2F0CDBF0BEC} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {3D5E0FDA-7BF4-C862-F01C-7DA2B06E8662} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {B79920FD-4719-78ED-1556-C51F6208A0C4} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {45E8D60B-9947-0309-CA4D-DD24010A33F6} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {48B96B29-1BE1-6353-C737-0A97C932A0B8} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {5F44350F-E4D3-648B-2BCB-C38BB4DE30EC} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {94793C3A-F00E-8BD7-CE1B-5E6BCC4ECDF3} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {D0207A1D-4A45-83EC-9417-85D149435CC6} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {4C8E2E78-234F-FABE-B9F4-2889B382A018} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {1C673A4F-1CF8-5BC9-894E-2ACD03360015} = {A6B6CFFA-42A6-0350-2BEA-F2817531FFF9}
+ {75DB496F-0038-E68C-D734-8DE0AF759E3D} = {676D0979-40FD-0699-BCE1-E26B1C7B6859}
+ {05728302-51B9-6F63-6BD1-B65A2CE6CCAA} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {7A8F268E-85B6-9533-D55A-9DB4C93E0022} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {F22C24BA-D7E8-5BAD-53AE-ADA7245B63A1} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {C7D9D0A7-AD98-0592-A31C-87EEFFED8D79} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {A6C96FDE-66DF-0D13-B6E4-E4992B79EC6F} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {56F2A6FD-0792-E4EB-197B-E74204B5EEDB} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {E0920DB7-629B-63EC-36F1-363AF4E49D0C} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {CA0E1A8D-BAAC-02A5-782F-0D777CB35D68} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {7A5BAD11-ADED-76E3-66B4-1B65CD42DD91} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {A4746DE9-B628-B0A3-DACF-AAC78DBD9FB9} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {75D35A31-CFC4-5264-924B-AB67BEA94179} = {75DB496F-0038-E68C-D734-8DE0AF759E3D}
+ {CB832152-E056-BB27-4E5B-E10154A76836} = {676D0979-40FD-0699-BCE1-E26B1C7B6859}
+ {C8E80872-D703-1883-9B52-C7314284275C} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {145D43AD-BEC9-541A-8B9E-5A5F69633B13} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {449C6EC1-9EC8-CC5F-130C-5033969B015E} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {5A692250-EDF4-A4F7-DE0F-EB4251A71C1C} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {C1DA5338-D93D-5725-4458-20BF4E978EEE} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {5ACCCAB6-72E4-6DFE-5FB9-380C2F2DE6B2} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {127303DD-69E6-F7E5-E5C7-F0B53C26BA5C} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {FF09A322-E24C-F586-20D2-7094E35E5452} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {DD0F11E1-A9E4-2248-FA3C-342BDC132A2A} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {95710EF3-4E9D-5F73-158C-28AED0162811} = {CB832152-E056-BB27-4E5B-E10154A76836}
+ {487A1635-770A-E920-8059-1006A7E9223C} = {FA8A28C8-4B59-8028-2ACF-626D05B08DB7}
+ {99A6EA79-089C-199D-5514-0F420BA648E6} = {487A1635-770A-E920-8059-1006A7E9223C}
+ {F0DD2D76-52C4-7200-6140-8BB9FF980759} = {99A6EA79-089C-199D-5514-0F420BA648E6}
+ {9E8E248D-86F2-34D3-C6DF-65933BED45C1} = {C2277486-2546-5E9D-65E6-EE7A61D9B560}
+ {9086195C-0437-2E91-C049-5202FD563475} = {9E8E248D-86F2-34D3-C6DF-65933BED45C1}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {04CF24C9-192D-4BF8-9C37-F2D79135DF07}
+ EndGlobalSection
+EndGlobal
diff --git a/Libraries/LambdaSharp.Build/LambdaSharp.Build.csproj b/Libraries/LambdaSharp.Build/LambdaSharp.Build.csproj
index 80acebff..b24a610f 100644
--- a/Libraries/LambdaSharp.Build/LambdaSharp.Build.csproj
+++ b/Libraries/LambdaSharp.Build/LambdaSharp.Build.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
LambdaSharp.Build
enable
CS1998
diff --git a/Libraries/LambdaSharp.CloudFormation/LambdaSharp.CloudFormation.csproj b/Libraries/LambdaSharp.CloudFormation/LambdaSharp.CloudFormation.csproj
index 463976a4..f9ae230c 100644
--- a/Libraries/LambdaSharp.CloudFormation/LambdaSharp.CloudFormation.csproj
+++ b/Libraries/LambdaSharp.CloudFormation/LambdaSharp.CloudFormation.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
LambdaSharp.CloudFormation
enable
CS1998
diff --git a/Libraries/LambdaSharp.Modules/LambdaSharp.Modules.csproj b/Libraries/LambdaSharp.Modules/LambdaSharp.Modules.csproj
index a5c0a725..36f8dfad 100644
--- a/Libraries/LambdaSharp.Modules/LambdaSharp.Modules.csproj
+++ b/Libraries/LambdaSharp.Modules/LambdaSharp.Modules.csproj
@@ -1,9 +1,9 @@
- net6.0
+ net8.0
LambdaSharp.Modules
enable
- CS1998
+ CS1998;SYSLIB0051
enable
9999
true
diff --git a/Libraries/LambdaSharp.Modules/VersionInfo.cs b/Libraries/LambdaSharp.Modules/VersionInfo.cs
index fedbc79a..c3fe7217 100644
--- a/Libraries/LambdaSharp.Modules/VersionInfo.cs
+++ b/Libraries/LambdaSharp.Modules/VersionInfo.cs
@@ -57,6 +57,10 @@ public static VersionInfo Parse(string text) {
build = -1;
revision = -1;
} else {
+ var versionHashArray = versionText.Split('+');
+ if (versionHashArray.Length > 1) {
+ versionText = versionHashArray[0];
+ }
var version = Version.Parse(versionText);
// assign parts of the parsed version information
diff --git a/Libraries/LambdaSharp.Modules/VersionInfoCompatibility.cs b/Libraries/LambdaSharp.Modules/VersionInfoCompatibility.cs
index fb509b94..fc3f36fa 100644
--- a/Libraries/LambdaSharp.Modules/VersionInfoCompatibility.cs
+++ b/Libraries/LambdaSharp.Modules/VersionInfoCompatibility.cs
@@ -68,7 +68,7 @@ public static bool IsReadyToRunSupported(string framework)
// NOTE (2022-03-04, bjorg): ReadyToRun is supported as of .NET Core 3.0
=> framework switch {
- "netcoreapp3.0" or "netcoreapp3.1" or "net5.0" or "net6.0" => true,
+ "netcoreapp3.0" or "netcoreapp3.1" or "net5.0" or "net6.0" or "net8.0" => true,
_ => false
};
@@ -130,12 +130,20 @@ public static bool IsValidLambdaSharpAssemblyReferenceForToolVersion(VersionInfo
break;
case "net6":
case "net6.0":
-
+
// .NET 6 projects require 0.8.4.*
valid = (libraryVersion.Major == 0)
&& (libraryVersion.Minor == 8)
&& (libraryVersion.Build == 4);
break;
+ case "net8":
+ case "net8.0":
+
+ // .NET 8 projects require 0.8.5.* or higher
+ valid = (libraryVersion.Major == 0)
+ && (libraryVersion.Minor == 8)
+ && (libraryVersion.Build >= 5);
+ break;
default:
throw new VersionInfoCompatibilityUnsupportedFrameworkException(projectFramework);
}
diff --git a/Modules/LambdaSharp.App.Api/Finalizer/Finalizer.csproj b/Modules/LambdaSharp.App.Api/Finalizer/Finalizer.csproj
index ab98e8c3..f5553138 100644
--- a/Modules/LambdaSharp.App.Api/Finalizer/Finalizer.csproj
+++ b/Modules/LambdaSharp.App.Api/Finalizer/Finalizer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.App.EventBus/BroadcastFunction/BroadcastFunction.csproj b/Modules/LambdaSharp.App.EventBus/BroadcastFunction/BroadcastFunction.csproj
index f6da9132..1a92188d 100644
--- a/Modules/LambdaSharp.App.EventBus/BroadcastFunction/BroadcastFunction.csproj
+++ b/Modules/LambdaSharp.App.EventBus/BroadcastFunction/BroadcastFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus.csproj b/Modules/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus.csproj
index deec827e..01442c41 100644
--- a/Modules/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus.csproj
+++ b/Modules/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus/LambdaSharp.App.EventBus.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.App.EventBus/ListenerFunction/ListenerFunction.csproj b/Modules/LambdaSharp.App.EventBus/ListenerFunction/ListenerFunction.csproj
index a0ec2bb5..174e7d7c 100644
--- a/Modules/LambdaSharp.App.EventBus/ListenerFunction/ListenerFunction.csproj
+++ b/Modules/LambdaSharp.App.EventBus/ListenerFunction/ListenerFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus.csproj b/Modules/LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus.csproj
index 120d470e..d172c2a5 100644
--- a/Modules/LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus.csproj
+++ b/Modules/LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus/Tests.LambdaSharp.App.EventBus.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
false
enable
CS1998
diff --git a/Modules/LambdaSharp.Cloud/LambdaSharp.CloudFormation.Converter/LambdaSharp.CloudFormation.Converter.csproj b/Modules/LambdaSharp.Cloud/LambdaSharp.CloudFormation.Converter/LambdaSharp.CloudFormation.Converter.csproj
index a62214ad..e5b3c211 100644
--- a/Modules/LambdaSharp.Cloud/LambdaSharp.CloudFormation.Converter/LambdaSharp.CloudFormation.Converter.csproj
+++ b/Modules/LambdaSharp.Cloud/LambdaSharp.CloudFormation.Converter/LambdaSharp.CloudFormation.Converter.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
LambdaSharp.CloudFormation.Preprocessor
enable
CS1998
diff --git a/Modules/LambdaSharp.Cloud/UpdateCloudFormationSpecFunction/UpdateCloudFormationSpecFunction.csproj b/Modules/LambdaSharp.Cloud/UpdateCloudFormationSpecFunction/UpdateCloudFormationSpecFunction.csproj
index 7b9cefd6..fa632eae 100644
--- a/Modules/LambdaSharp.Cloud/UpdateCloudFormationSpecFunction/UpdateCloudFormationSpecFunction.csproj
+++ b/Modules/LambdaSharp.Cloud/UpdateCloudFormationSpecFunction/UpdateCloudFormationSpecFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.Cloud/UpdateIamSpecFunction/UpdateIamSpecFunction.csproj b/Modules/LambdaSharp.Cloud/UpdateIamSpecFunction/UpdateIamSpecFunction.csproj
index c3d72e11..9f5a6f5b 100644
--- a/Modules/LambdaSharp.Cloud/UpdateIamSpecFunction/UpdateIamSpecFunction.csproj
+++ b/Modules/LambdaSharp.Cloud/UpdateIamSpecFunction/UpdateIamSpecFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Modules/LambdaSharp.Core/CommonLib/CommonLib.csproj b/Modules/LambdaSharp.Core/CommonLib/CommonLib.csproj
index fc72c70c..2a123eb0 100644
--- a/Modules/LambdaSharp.Core/CommonLib/CommonLib.csproj
+++ b/Modules/LambdaSharp.Core/CommonLib/CommonLib.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharp.Core
diff --git a/Modules/LambdaSharp.Core/CommonLib/RollbarApi/Rollbar.cs b/Modules/LambdaSharp.Core/CommonLib/RollbarApi/Rollbar.cs
index 6d646785..467178d0 100644
--- a/Modules/LambdaSharp.Core/CommonLib/RollbarApi/Rollbar.cs
+++ b/Modules/LambdaSharp.Core/CommonLib/RollbarApi/Rollbar.cs
@@ -119,3 +119,13 @@ public class Frame {
[JsonPropertyName("method")]
public string? Method { get; set; }
}
+
+public class RollbarTeam {
+
+ //--- Properties ---
+ [JsonPropertyName("id")]
+ public int Id { get; set; }
+
+ [JsonPropertyName("name")]
+ public string? Name { get; set; }
+}
diff --git a/Modules/LambdaSharp.Core/CommonLib/RollbarApi/RollbarClient.cs b/Modules/LambdaSharp.Core/CommonLib/RollbarApi/RollbarClient.cs
index 852e9726..3e9fe116 100644
--- a/Modules/LambdaSharp.Core/CommonLib/RollbarApi/RollbarClient.cs
+++ b/Modules/LambdaSharp.Core/CommonLib/RollbarApi/RollbarClient.cs
@@ -172,8 +172,11 @@ public async Task CreateProjectAsync(string projectName) {
public async Task> ListAllProjectsAsync() {
LogInfo($"list all rollbar projects");
var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
- RequestUri = new Uri($"https://api.rollbar.com/api/1/projects/?access_token={_accountReadAccessToken}"),
- Method = HttpMethod.Get
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/projects/?limit=100"),
+ Method = HttpMethod.Get,
+ Headers = {
+ { "X-Rollbar-Access-Token", _accountReadAccessToken }
+ }
});
if(!httpResponse.IsSuccessStatusCode) {
throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
@@ -199,8 +202,11 @@ public async Task> ListAllProjectsAsync() {
public async Task GetProjectAsync(int projectId) {
LogInfo($"get rollbar project {projectId}");
var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
- RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}?access_token={_accountReadAccessToken}"),
- Method = HttpMethod.Get
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}"),
+ Method = HttpMethod.Get,
+ Headers = {
+ { "X-Rollbar-Access-Token", _accountReadAccessToken }
+ }
});
if(!httpResponse.IsSuccessStatusCode) {
throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
@@ -215,8 +221,11 @@ public async Task GetProjectAsync(int projectId) {
public async Task DeleteProjectAsync(int projectId) {
LogInfo($"delete rollbar project {projectId}");
var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
- RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}?access_token={_accountWriteAccessToken}"),
- Method = HttpMethod.Delete
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}"),
+ Method = HttpMethod.Delete,
+ Headers = {
+ { "X-Rollbar-Access-Token", _accountWriteAccessToken }
+ }
});
if(!httpResponse.IsSuccessStatusCode) {
throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
@@ -230,8 +239,11 @@ public async Task DeleteProjectAsync(int projectId) {
public async Task> ListProjectTokensAsync(int projectId) {
LogInfo($"list rollbar project tokens {projectId}");
var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
- RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}/access_tokens?access_token={_accountReadAccessToken}"),
- Method = HttpMethod.Get
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}/access_tokens"),
+ Method = HttpMethod.Get,
+ Headers = {
+ { "X-Rollbar-Access-Token", _accountReadAccessToken }
+ }
});
if(!httpResponse.IsSuccessStatusCode) {
throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
@@ -243,5 +255,78 @@ public async Task> ListProjectTokensAsync(int p
return Deserialize>(Serialize(result.Result));
}
+ public async Task CreateProjectTokenAsync(int projectId, string tokenName, string[] scopes) {
+ LogInfo($"creating rollbar project token '{tokenName}' for project {projectId} with scopes: {string.Join(", ", scopes)}");
+ var requestBody = new {
+ name = tokenName,
+ scopes = scopes
+ };
+ var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/project/{projectId}/access_tokens"),
+ Method = HttpMethod.Post,
+ Content = new StringContent(Serialize(requestBody), Encoding.UTF8, "application/json"),
+ Headers = {
+ { "X-Rollbar-Access-Token", _accountWriteAccessToken }
+ }
+ });
+ if(!httpResponse.IsSuccessStatusCode) {
+ throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
+ }
+ var result = Deserialize(await httpResponse.Content.ReadAsStringAsync());
+ if(result.Error != 0) {
+ throw new RollbarClientException($"rollbar operation failed (error {result.Error}): {result.Message}");
+ }
+ var token = Deserialize(Serialize(result.Result));
+ LogInfo($"created rollbar project token '{token.Name}' (status: {token.Status}) for project {projectId}");
+ return token;
+ }
+
+ public async Task AssignProjectToEngineeringTeamAsync(int projectId) {
+ const string ENGINEERING_TEAM_NAME = "Engineering";
+ LogInfo($"finding team '{ENGINEERING_TEAM_NAME}'");
+
+ // Get all teams
+ var httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
+ RequestUri = new Uri("https://api.rollbar.com/api/1/teams?limit=100"),
+ Method = HttpMethod.Get,
+ Headers = {{ "X-Rollbar-Access-Token", _accountReadAccessToken }}
+ });
+ if(!httpResponse.IsSuccessStatusCode) {
+ throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
+ }
+ var result = Deserialize(await httpResponse.Content.ReadAsStringAsync());
+ if(result.Error != 0) {
+ throw new RollbarClientException($"rollbar operation failed (error {result.Error}): {result.Message}");
+ }
+
+ // Parse teams and find Engineering
+ var teamsJson = Serialize(result.Result);
+ var teams = Deserialize>(teamsJson);
+ var engineeringTeam = teams?.FirstOrDefault(t =>
+ t.Name?.Equals(ENGINEERING_TEAM_NAME, StringComparison.OrdinalIgnoreCase) == true
+ );
+
+ if(engineeringTeam == null) {
+ throw new RollbarClientException($"team '{ENGINEERING_TEAM_NAME}' not found");
+ }
+
+ var teamId = engineeringTeam.Id;
+ LogInfo($"assigning rollbar project {projectId} to team '{ENGINEERING_TEAM_NAME}' (ID: {teamId})");
+
+ httpResponse = await HttpClient.SendAsync(new HttpRequestMessage {
+ RequestUri = new Uri($"https://api.rollbar.com/api/1/team/{teamId}/project/{projectId}"),
+ Method = HttpMethod.Put,
+ Headers = {{ "X-Rollbar-Access-Token", _accountWriteAccessToken }}
+ });
+ if(!httpResponse.IsSuccessStatusCode) {
+ throw new RollbarClientException($"http operation failed: {httpResponse.StatusCode}");
+ }
+ result = Deserialize(await httpResponse.Content.ReadAsStringAsync());
+ if(result.Error != 0) {
+ throw new RollbarClientException($"rollbar operation failed (error {result.Error}): {result.Message}");
+ }
+ LogInfo($"assigned rollbar project {projectId} to team '{ENGINEERING_TEAM_NAME}'");
+ }
+
private void LogInfo(string message) => _logInfo?.Invoke(message);
}
\ No newline at end of file
diff --git a/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/Function.cs b/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/Function.cs
index 740b8274..f5acb015 100644
--- a/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/Function.cs
+++ b/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/Function.cs
@@ -137,7 +137,7 @@ public override async Task InitializeAsync(LambdaConfig config) {
_registrations = new RegistrationTable(dynamoClient, tableName);
_cachedRegistrations = new Dictionary();
_rollbarClient = new RollbarClient(
- httpClient: null,
+ HttpClient,
accountReadAccessToken: null,
accountWriteAccessToken: null,
message => LogInfo(message)
diff --git a/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/LoggingStreamAnalyzerFunction.csproj b/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/LoggingStreamAnalyzerFunction.csproj
index 3bb18ea0..63de35eb 100644
--- a/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/LoggingStreamAnalyzerFunction.csproj
+++ b/Modules/LambdaSharp.Core/LoggingStreamAnalyzerFunction/LoggingStreamAnalyzerFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharp.Core.LoggingStreamAnalyzerFunction
diff --git a/Modules/LambdaSharp.Core/RegistrationFunction/Function.cs b/Modules/LambdaSharp.Core/RegistrationFunction/Function.cs
index 1b24b71d..bde94db2 100644
--- a/Modules/LambdaSharp.Core/RegistrationFunction/Function.cs
+++ b/Modules/LambdaSharp.Core/RegistrationFunction/Function.cs
@@ -287,7 +287,16 @@ public override async Task> ProcessUpda
// update module record
LogInfo($"Updating Module: Id={properties.ModuleId}, Info={properties.GetModuleInfo()}");
- var owner = PopulateOwnerMetaData(properties);
+
+ // get existing owner or create new one
+ var owner = await Registrations.GetOwnerMetaDataAsync($"M:{properties.ModuleId}");
+ owner = PopulateOwnerMetaData(properties, owner);
+ if(RollbarClient.HasTokens) {
+ var rollbarProject = await RegisterRollbarProject(properties);
+ owner.RollbarProjectId = rollbarProject.ProjectId;
+ owner.RollbarAccessToken = rollbarProject.ProjectAccessToken;
+ }
+
await Registrations.PutOwnerMetaDataAsync($"M:{properties.ModuleId}", owner);
return Respond(request.PhysicalResourceId);
}
@@ -418,14 +427,28 @@ private OwnerMetaData PopulateOwnerMetaData(RegistrationResourceProperties prope
}
// find or create Rollbar project
- var project = await RollbarClient.FindProjectByNameAsync(name)
- ?? await RollbarClient.CreateProjectAsync(name);
+ var existingProject = await RollbarClient.FindProjectByNameAsync(name);
+ var project = existingProject ?? await RollbarClient.CreateProjectAsync(name);
+ LogInfo($"Using Rollbar project '{project.Name}' (ID: {project.Id})");
+
+ // assign project to Engineering team.
+ try {
+ await RollbarClient.AssignProjectToEngineeringTeamAsync(project.Id);
+ } catch(Exception e) {
+ LogWarn($"Failed to assign project to Engineering team: {e.Message}");
+ }
- // retrieve access token for Rollbar project
+ // retrieve or create access token for Rollbar project
var tokens = await RollbarClient.ListProjectTokensAsync(project.Id);
var token = tokens.FirstOrDefault(t => t.Name == "post_server_item")?.AccessToken;
if(token == null) {
- throw new RegistrarException("internal error: unable to retrieve token for new Rollbar project");
+ LogInfo($"Creating 'post_server_item' token for Rollbar project {project.Id}");
+ var newToken = await RollbarClient.CreateProjectTokenAsync(
+ project.Id,
+ "post_server_item",
+ new[] { "post_server_item" }
+ );
+ token = newToken.AccessToken ?? throw new RegistrarException("Missing Rollbar access token");
}
return (ProjectId: project.Id, ProjectAccessToken: await EncryptSecretAsync(token, CoreSecretsKey));
}
diff --git a/Modules/LambdaSharp.Core/RegistrationFunction/RegistrationFunction.csproj b/Modules/LambdaSharp.Core/RegistrationFunction/RegistrationFunction.csproj
index 4e47dacd..a86aab31 100644
--- a/Modules/LambdaSharp.Core/RegistrationFunction/RegistrationFunction.csproj
+++ b/Modules/LambdaSharp.Core/RegistrationFunction/RegistrationFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharp.Core.RegistrationFunction
diff --git a/Modules/LambdaSharp.Core/Tests/Tests.ProcessLogEventsTests/Tests.ProcessLogEventsTests.csproj b/Modules/LambdaSharp.Core/Tests/Tests.ProcessLogEventsTests/Tests.ProcessLogEventsTests.csproj
index 6c41c205..98d2fafa 100644
--- a/Modules/LambdaSharp.Core/Tests/Tests.ProcessLogEventsTests/Tests.ProcessLogEventsTests.csproj
+++ b/Modules/LambdaSharp.Core/Tests/Tests.ProcessLogEventsTests/Tests.ProcessLogEventsTests.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
enable
CS1998
enable
diff --git a/Modules/LambdaSharp.S3.IO/S3Writer/S3Writer.csproj b/Modules/LambdaSharp.S3.IO/S3Writer/S3Writer.csproj
index e121cb48..51c04941 100644
--- a/Modules/LambdaSharp.S3.IO/S3Writer/S3Writer.csproj
+++ b/Modules/LambdaSharp.S3.IO/S3Writer/S3Writer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharp.S3.IO.S3Writer
diff --git a/Modules/LambdaSharp.S3.Subscriber/ResourceHandler/ResourceHandler.csproj b/Modules/LambdaSharp.S3.Subscriber/ResourceHandler/ResourceHandler.csproj
index c90e524a..ca2ed646 100644
--- a/Modules/LambdaSharp.S3.Subscriber/ResourceHandler/ResourceHandler.csproj
+++ b/Modules/LambdaSharp.S3.Subscriber/ResourceHandler/ResourceHandler.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharpS3Subscriber.ResourceHandler
diff --git a/Modules/LambdaSharp.Twitter.Query/QueryFunction/QueryFunction.csproj b/Modules/LambdaSharp.Twitter.Query/QueryFunction/QueryFunction.csproj
index 09769e4f..63129702 100644
--- a/Modules/LambdaSharp.Twitter.Query/QueryFunction/QueryFunction.csproj
+++ b/Modules/LambdaSharp.Twitter.Query/QueryFunction/QueryFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharp.Twitter.QueryFunction
diff --git a/NuGet.config b/NuGet.config
new file mode 100644
index 00000000..01cb617d
--- /dev/null
+++ b/NuGet.config
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/BlazorAppTemplate/MyApp._csproj b/Resources/BlazorAppTemplate/MyApp._csproj
index f8b4bb4b..00a0c887 100644
--- a/Resources/BlazorAppTemplate/MyApp._csproj
+++ b/Resources/BlazorAppTemplate/MyApp._csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
%%ROOTNAMESPACE%%
CS1998
diff --git a/Samples/AlexaSample/MyFunction/MyFunction.csproj b/Samples/AlexaSample/MyFunction/MyFunction.csproj
index 318a9bc0..faccc3ae 100644
--- a/Samples/AlexaSample/MyFunction/MyFunction.csproj
+++ b/Samples/AlexaSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/ApiInvokeAssemblySample/MyFunction/MyFunction.csproj b/Samples/ApiInvokeAssemblySample/MyFunction/MyFunction.csproj
index 479d2b8a..8aedde5f 100644
--- a/Samples/ApiInvokeAssemblySample/MyFunction/MyFunction.csproj
+++ b/Samples/ApiInvokeAssemblySample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/ApiInvokeAssemblySample/Shared/Shared.csproj b/Samples/ApiInvokeAssemblySample/Shared/Shared.csproj
index e7c2d6c9..d78078b6 100644
--- a/Samples/ApiInvokeAssemblySample/Shared/Shared.csproj
+++ b/Samples/ApiInvokeAssemblySample/Shared/Shared.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/ApiInvokeSample/MyFunction/MyFunction.csproj b/Samples/ApiInvokeSample/MyFunction/MyFunction.csproj
index 14aa650b..037fd23a 100644
--- a/Samples/ApiInvokeSample/MyFunction/MyFunction.csproj
+++ b/Samples/ApiInvokeSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/ApiSample/MyFunction/MyFunction.csproj b/Samples/ApiSample/MyFunction/MyFunction.csproj
index 700a548f..62be6b14 100644
--- a/Samples/ApiSample/MyFunction/MyFunction.csproj
+++ b/Samples/ApiSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/BlazorEventsSample/MyBlazorApp/MyBlazorApp.csproj b/Samples/BlazorEventsSample/MyBlazorApp/MyBlazorApp.csproj
index be6121eb..a240cc38 100644
--- a/Samples/BlazorEventsSample/MyBlazorApp/MyBlazorApp.csproj
+++ b/Samples/BlazorEventsSample/MyBlazorApp/MyBlazorApp.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/BlazorSample/MyBlazorApp/MyBlazorApp.csproj b/Samples/BlazorSample/MyBlazorApp/MyBlazorApp.csproj
index 6d938cae..566959e6 100644
--- a/Samples/BlazorSample/MyBlazorApp/MyBlazorApp.csproj
+++ b/Samples/BlazorSample/MyBlazorApp/MyBlazorApp.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/CustomResourceTypeSample/ResourceHandler/ResourceHandler.csproj b/Samples/CustomResourceTypeSample/ResourceHandler/ResourceHandler.csproj
index 6e419765..63a316c2 100644
--- a/Samples/CustomResourceTypeSample/ResourceHandler/ResourceHandler.csproj
+++ b/Samples/CustomResourceTypeSample/ResourceHandler/ResourceHandler.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/DebugSample/MyFunction/MyFunction.csproj b/Samples/DebugSample/MyFunction/MyFunction.csproj
index 2e998796..8ac422b6 100644
--- a/Samples/DebugSample/MyFunction/MyFunction.csproj
+++ b/Samples/DebugSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/DynamoDBSample/MyFunction/MyFunction.csproj b/Samples/DynamoDBSample/MyFunction/MyFunction.csproj
index 7f529f8f..8939b855 100644
--- a/Samples/DynamoDBSample/MyFunction/MyFunction.csproj
+++ b/Samples/DynamoDBSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/EventSample/ReceiverEventFunction/ReceiverEventFunction.csproj b/Samples/EventSample/ReceiverEventFunction/ReceiverEventFunction.csproj
index f45c1449..76a615a0 100644
--- a/Samples/EventSample/ReceiverEventFunction/ReceiverEventFunction.csproj
+++ b/Samples/EventSample/ReceiverEventFunction/ReceiverEventFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/EventSample/ReceiverFunction/ReceiverFunction.csproj b/Samples/EventSample/ReceiverFunction/ReceiverFunction.csproj
index edc38687..08f03a5f 100644
--- a/Samples/EventSample/ReceiverFunction/ReceiverFunction.csproj
+++ b/Samples/EventSample/ReceiverFunction/ReceiverFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/EventSample/SenderFunction/SenderFunction.csproj b/Samples/EventSample/SenderFunction/SenderFunction.csproj
index af7d1201..3aedda14 100644
--- a/Samples/EventSample/SenderFunction/SenderFunction.csproj
+++ b/Samples/EventSample/SenderFunction/SenderFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/FinalizerSample/Finalizer/Finalizer.csproj b/Samples/FinalizerSample/Finalizer/Finalizer.csproj
index dedd33c5..52c40c3a 100644
--- a/Samples/FinalizerSample/Finalizer/Finalizer.csproj
+++ b/Samples/FinalizerSample/Finalizer/Finalizer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/JsonSerializerSample/CustomJsonSerializerFunction/CustomJsonSerializerFunction.csproj b/Samples/JsonSerializerSample/CustomJsonSerializerFunction/CustomJsonSerializerFunction.csproj
index 103d7998..3e77ef16 100644
--- a/Samples/JsonSerializerSample/CustomJsonSerializerFunction/CustomJsonSerializerFunction.csproj
+++ b/Samples/JsonSerializerSample/CustomJsonSerializerFunction/CustomJsonSerializerFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/JsonSerializerSample/NewtonsoftJsonFunction/NewtonsoftJsonFunction.csproj b/Samples/JsonSerializerSample/NewtonsoftJsonFunction/NewtonsoftJsonFunction.csproj
index 61894af0..677ea654 100644
--- a/Samples/JsonSerializerSample/NewtonsoftJsonFunction/NewtonsoftJsonFunction.csproj
+++ b/Samples/JsonSerializerSample/NewtonsoftJsonFunction/NewtonsoftJsonFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/JsonSerializerSample/SourceGeneratorFunction/SourceGeneratorFunction.csproj b/Samples/JsonSerializerSample/SourceGeneratorFunction/SourceGeneratorFunction.csproj
index 6fcd5142..1d206b7e 100644
--- a/Samples/JsonSerializerSample/SourceGeneratorFunction/SourceGeneratorFunction.csproj
+++ b/Samples/JsonSerializerSample/SourceGeneratorFunction/SourceGeneratorFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/JsonSerializerSample/SystemTextJsonFunction/SystemTextJsonFunction.csproj b/Samples/JsonSerializerSample/SystemTextJsonFunction/SystemTextJsonFunction.csproj
index bf21693c..0c9dde74 100644
--- a/Samples/JsonSerializerSample/SystemTextJsonFunction/SystemTextJsonFunction.csproj
+++ b/Samples/JsonSerializerSample/SystemTextJsonFunction/SystemTextJsonFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/KinesisFirehoseSample/FirehoseAnalyzerFunction/FirehoseAnalyzerFunction.csproj b/Samples/KinesisFirehoseSample/FirehoseAnalyzerFunction/FirehoseAnalyzerFunction.csproj
index 59f5e69f..c75517e1 100644
--- a/Samples/KinesisFirehoseSample/FirehoseAnalyzerFunction/FirehoseAnalyzerFunction.csproj
+++ b/Samples/KinesisFirehoseSample/FirehoseAnalyzerFunction/FirehoseAnalyzerFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/KinesisSample/MyFunction/MyFunction.csproj b/Samples/KinesisSample/MyFunction/MyFunction.csproj
index a477a3cb..76c46388 100644
--- a/Samples/KinesisSample/MyFunction/MyFunction.csproj
+++ b/Samples/KinesisSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/LambdaLayerSample/MyFunction/MyFunction.csproj b/Samples/LambdaLayerSample/MyFunction/MyFunction.csproj
index 3de79f69..31b4dd21 100644
--- a/Samples/LambdaLayerSample/MyFunction/MyFunction.csproj
+++ b/Samples/LambdaLayerSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/LambdaSelfContainedSample/MySelfContainedFunction/MySelfContainedFunction.csproj b/Samples/LambdaSelfContainedSample/MySelfContainedFunction/MySelfContainedFunction.csproj
index 33e3a80e..cb04fd58 100644
--- a/Samples/LambdaSelfContainedSample/MySelfContainedFunction/MySelfContainedFunction.csproj
+++ b/Samples/LambdaSelfContainedSample/MySelfContainedFunction/MySelfContainedFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/LambdaTopLevelSample/MyTopLevelFunction/MyTopLevelFunction.csproj b/Samples/LambdaTopLevelSample/MyTopLevelFunction/MyTopLevelFunction.csproj
index 31df7f05..7a59f6e7 100644
--- a/Samples/LambdaTopLevelSample/MyTopLevelFunction/MyTopLevelFunction.csproj
+++ b/Samples/LambdaTopLevelSample/MyTopLevelFunction/MyTopLevelFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/MacroSample/MyFunction/MyFunction.csproj b/Samples/MacroSample/MyFunction/MyFunction.csproj
index 8570d149..15e68fee 100644
--- a/Samples/MacroSample/MyFunction/MyFunction.csproj
+++ b/Samples/MacroSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/MetricSample/MyFunction/MyFunction.csproj b/Samples/MetricSample/MyFunction/MyFunction.csproj
index 81d1e096..a9d517bd 100644
--- a/Samples/MetricSample/MyFunction/MyFunction.csproj
+++ b/Samples/MetricSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/S3SubscriptionSample/MyFunction/MyFunction.csproj b/Samples/S3SubscriptionSample/MyFunction/MyFunction.csproj
index f50371de..bf5bf99f 100644
--- a/Samples/S3SubscriptionSample/MyFunction/MyFunction.csproj
+++ b/Samples/S3SubscriptionSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/ScheduleSample/MyFunction/MyFunction.csproj b/Samples/ScheduleSample/MyFunction/MyFunction.csproj
index 51e37fe7..00bcd2de 100644
--- a/Samples/ScheduleSample/MyFunction/MyFunction.csproj
+++ b/Samples/ScheduleSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SecretSample/MyFunction/MyFunction.csproj b/Samples/SecretSample/MyFunction/MyFunction.csproj
index 0a9e51bb..f56ac379 100644
--- a/Samples/SecretSample/MyFunction/MyFunction.csproj
+++ b/Samples/SecretSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SlackCommandSample/MyFunction/MyFunction.csproj b/Samples/SlackCommandSample/MyFunction/MyFunction.csproj
index 30eb1eb2..f5240f55 100644
--- a/Samples/SlackCommandSample/MyFunction/MyFunction.csproj
+++ b/Samples/SlackCommandSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SnsSample/MyFunction/MyFunction.csproj b/Samples/SnsSample/MyFunction/MyFunction.csproj
index 5f035369..c6dbfbe8 100644
--- a/Samples/SnsSample/MyFunction/MyFunction.csproj
+++ b/Samples/SnsSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SqsFailureHandlingSample/SqsConsumer/SqsConsumer.csproj b/Samples/SqsFailureHandlingSample/SqsConsumer/SqsConsumer.csproj
index bf8cb7a1..135355bb 100644
--- a/Samples/SqsFailureHandlingSample/SqsConsumer/SqsConsumer.csproj
+++ b/Samples/SqsFailureHandlingSample/SqsConsumer/SqsConsumer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SqsFailureHandlingSample/SqsProducer/SqsProducer.csproj b/Samples/SqsFailureHandlingSample/SqsProducer/SqsProducer.csproj
index 8ea9a6d0..204f4c3b 100644
--- a/Samples/SqsFailureHandlingSample/SqsProducer/SqsProducer.csproj
+++ b/Samples/SqsFailureHandlingSample/SqsProducer/SqsProducer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/SqsSample/MyFunction/MyFunction.csproj b/Samples/SqsSample/MyFunction/MyFunction.csproj
index a8b1dfaf..b3428da2 100644
--- a/Samples/SqsSample/MyFunction/MyFunction.csproj
+++ b/Samples/SqsSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/VpcFunctionSample/MyFunction/MyFunction.csproj b/Samples/VpcFunctionSample/MyFunction/MyFunction.csproj
index 93895b2a..84b2e377 100644
--- a/Samples/VpcFunctionSample/MyFunction/MyFunction.csproj
+++ b/Samples/VpcFunctionSample/MyFunction/MyFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/WebSocketSample/ConnectionFunction/ConnectionFunction.csproj b/Samples/WebSocketSample/ConnectionFunction/ConnectionFunction.csproj
index f39398cf..cf8be5a6 100644
--- a/Samples/WebSocketSample/ConnectionFunction/ConnectionFunction.csproj
+++ b/Samples/WebSocketSample/ConnectionFunction/ConnectionFunction.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Samples/WebSocketSample/MessageFunction/MessageFunction.csproj b/Samples/WebSocketSample/MessageFunction/MessageFunction.csproj
index a1ff0edd..d51de7de 100644
--- a/Samples/WebSocketSample/MessageFunction/MessageFunction.csproj
+++ b/Samples/WebSocketSample/MessageFunction/MessageFunction.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Scripts/Set-Lash-Version.ps1 b/Scripts/Set-Lash-Version.ps1
new file mode 100644
index 00000000..7983989c
--- /dev/null
+++ b/Scripts/Set-Lash-Version.ps1
@@ -0,0 +1,10 @@
+# Set variables
+$env:LAMBDASHARP_VERSION_PREFIX = "0.8.5.1"
+$env:LAMBDASHARP_VERSION_SUFFIX = ""
+
+# Create full version text
+if ([string]::IsNullOrEmpty($env:LAMBDASHARP_VERSION_SUFFIX)) {
+ $env:LAMBDASHARP_VERSION = $env:LAMBDASHARP_VERSION_PREFIX
+} else {
+ $env:LAMBDASHARP_VERSION = "$($env:LAMBDASHARP_VERSION_PREFIX)-$($env:LAMBDASHARP_VERSION_SUFFIX)"
+}
\ No newline at end of file
diff --git a/Scripts/Update-Nuget-All-Code-Artifact.ps1 b/Scripts/Update-Nuget-All-Code-Artifact.ps1
new file mode 100644
index 00000000..4b8786a5
--- /dev/null
+++ b/Scripts/Update-Nuget-All-Code-Artifact.ps1
@@ -0,0 +1,66 @@
+# Check required environment variables
+if (-not $env:LAMBDASHARP) {
+ Write-Host "ERROR: environment variable `LAMBDASHARP` is not set"
+ exit 1
+}
+if (-not $env:LAMBDASHARP_VERSION) {
+ Write-Host "ERROR: environment variable `LAMBDASHARP_VERSION` is not set"
+ exit 1
+}
+
+# Confirmation prompt
+$confirmation = Read-Host -Prompt "Proceed with publishing v{$env:LAMBDASHARP_VERSION}? [y/n]"
+if ($confirmation -notin @('y','Y')) {
+ Write-Host "Cancelled"
+ exit 0
+}
+
+function Update {
+ Remove-Item "bin\Release\*.nupkg" -Force -ErrorAction SilentlyContinue
+
+ dotnet clean
+ dotnet pack --configuration Release
+
+ $nupkgFiles = Get-ChildItem "bin\Release\*.nupkg" -ErrorAction SilentlyContinue
+ foreach ($file in $nupkgFiles) {
+ dotnet nuget push $file.FullName --skip-duplicate `
+ --source "mindtouch-deki/cxe-nuget"
+ }
+}
+
+# Remove all bin/obj folders from previous builds
+Get-ChildItem $env:LAMBDASHARP -Recurse -Directory | Where-Object { $_.Name -in @("bin","obj") } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
+
+# List of projects to update
+$projects = @(
+ "LambdaSharp",
+ "LambdaSharp.ApiGateway",
+ "LambdaSharp.App",
+ "LambdaSharp.CustomResource",
+ "LambdaSharp.EventBridge",
+ "LambdaSharp.Finalizer",
+ "LambdaSharp.Logging",
+ "LambdaSharp.Schedule",
+ "LambdaSharp.Serialization.NewtonsoftJson",
+ "LambdaSharp.SimpleNotificationService",
+ "LambdaSharp.SimpleQueueService",
+ "LambdaSharp.Slack"
+)
+
+foreach ($proj in $projects) {
+ Set-Location "$env:LAMBDASHARP\src\$proj"
+ Update
+}
+
+# LambdaSharp.Tool special handling
+Set-Location "$env:LAMBDASHARP\src\LambdaSharp.Tool"
+Remove-Item "*.nupkg" -Force -ErrorAction SilentlyContinue
+
+dotnet publish --configuration Release
+dotnet pack --configuration Release --output ./
+
+$nupkgFiles = Get-ChildItem "*.nupkg" -ErrorAction SilentlyContinue
+foreach ($file in $nupkgFiles) {
+ dotnet nuget push $file.FullName --skip-duplicate `
+ --source "mindtouch-deki/cxe-nuget"
+}
\ No newline at end of file
diff --git a/Scripts/run-tests.sh b/Scripts/run-tests.sh
index 913f488f..eea4ecba 100644
--- a/Scripts/run-tests.sh
+++ b/Scripts/run-tests.sh
@@ -33,7 +33,7 @@ if [ -z "$1" ]; then
# evaluate module parameters for each test file
find $LAMBDASHARP/Tests/ParameterFiles/ -maxdepth 1 -name *.yml \
- | xargs -L 1 dotnet $LAMBDASHARP/src/LambdaSharp.Tool/bin/Debug/net6.0/LambdaSharp.Tool.dll util show-parameters --quiet
+ | xargs -L 1 dotnet $LAMBDASHARP/src/LambdaSharp.Tool/bin/Debug/net8.0/LambdaSharp.Tool.dll util show-parameters --quiet
# delete generated output CloudFormation template files
find $LAMBDASHARP/Tests/Modules/ -maxdepth 1 -name *.yml \
@@ -42,7 +42,7 @@ if [ -z "$1" ]; then
| xargs -I{} rm $LAMBDASHARP/Tests/Modules/Results/{} > /dev/null 2>&1
# generate CloudFormation template for each test module
- dotnet $LAMBDASHARP/src/LambdaSharp.Tool/bin/Debug/net6.0/LambdaSharp.Tool.dll deploy \
+ dotnet $LAMBDASHARP/src/LambdaSharp.Tool/bin/Debug/net8.0/LambdaSharp.Tool.dll deploy \
--verbose:exceptions \
--no-beep \
--tier Test \
diff --git a/Scripts/set-lash-version.sh b/Scripts/set-lash-version.sh
old mode 100644
new mode 100755
index ee2863e1..94d46253
--- a/Scripts/set-lash-version.sh
+++ b/Scripts/set-lash-version.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-export LAMBDASHARP_VERSION_PREFIX=0.8.4.1
+export LAMBDASHARP_VERSION_PREFIX=0.8.5.1
export LAMBDASHARP_VERSION_SUFFIX=
# create full version text
diff --git a/Tests/BadModule/FailBadEntryPoint/FailBadEntryPoint.csproj b/Tests/BadModule/FailBadEntryPoint/FailBadEntryPoint.csproj
index 80a510e3..96561599 100644
--- a/Tests/BadModule/FailBadEntryPoint/FailBadEntryPoint.csproj
+++ b/Tests/BadModule/FailBadEntryPoint/FailBadEntryPoint.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.FailBadEntryPoint
diff --git a/Tests/BadModule/FailConstructor/FailConstructor.csproj b/Tests/BadModule/FailConstructor/FailConstructor.csproj
index c9bbd8b5..9066b2db 100644
--- a/Tests/BadModule/FailConstructor/FailConstructor.csproj
+++ b/Tests/BadModule/FailConstructor/FailConstructor.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.FailConstructor
diff --git a/Tests/BadModule/FailError/FailError.csproj b/Tests/BadModule/FailError/FailError.csproj
index ccc64153..84546ba8 100644
--- a/Tests/BadModule/FailError/FailError.csproj
+++ b/Tests/BadModule/FailError/FailError.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.FailError
diff --git a/Tests/BadModule/FailOutOfMemory/FailOutOfMemory.csproj b/Tests/BadModule/FailOutOfMemory/FailOutOfMemory.csproj
index 88168b35..c2a5a8ef 100644
--- a/Tests/BadModule/FailOutOfMemory/FailOutOfMemory.csproj
+++ b/Tests/BadModule/FailOutOfMemory/FailOutOfMemory.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.FailOutOfMemory
diff --git a/Tests/BadModule/FailRuntimeExitFunction/FailRuntimeExitFunction.csproj b/Tests/BadModule/FailRuntimeExitFunction/FailRuntimeExitFunction.csproj
index 80b8bc58..27728644 100644
--- a/Tests/BadModule/FailRuntimeExitFunction/FailRuntimeExitFunction.csproj
+++ b/Tests/BadModule/FailRuntimeExitFunction/FailRuntimeExitFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Tests/BadModule/FailTimeout/FailTimeout.csproj b/Tests/BadModule/FailTimeout/FailTimeout.csproj
index 4993e27f..9216cf98 100644
--- a/Tests/BadModule/FailTimeout/FailTimeout.csproj
+++ b/Tests/BadModule/FailTimeout/FailTimeout.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.FailTimeout
diff --git a/Tests/BadModule/NearOutOfMemory/NearOutOfMemory.csproj b/Tests/BadModule/NearOutOfMemory/NearOutOfMemory.csproj
index 1afc0360..9a2532f6 100644
--- a/Tests/BadModule/NearOutOfMemory/NearOutOfMemory.csproj
+++ b/Tests/BadModule/NearOutOfMemory/NearOutOfMemory.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.NearOutOfMemory
diff --git a/Tests/BadModule/NearTimeout/NearTimeout.csproj b/Tests/BadModule/NearTimeout/NearTimeout.csproj
index e0995ed3..3e3b3eb6 100644
--- a/Tests/BadModule/NearTimeout/NearTimeout.csproj
+++ b/Tests/BadModule/NearTimeout/NearTimeout.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
BadModule.NearTimeout
diff --git a/Tests/Legacy/v0.8.2/MyApp/MyApp.csproj b/Tests/Legacy/v0.8.2/MyApp/MyApp.csproj
index c8a0c14d..5b3ed56d 100644
--- a/Tests/Legacy/v0.8.2/MyApp/MyApp.csproj
+++ b/Tests/Legacy/v0.8.2/MyApp/MyApp.csproj
@@ -1,6 +1,6 @@
- net5.0
+ net8.0
true
Legacy.ModuleV082.MyApp
CS1998
diff --git a/Tests/Legacy/v0.8.2/MySelfContainedFunction/MySelfContainedFunction.csproj b/Tests/Legacy/v0.8.2/MySelfContainedFunction/MySelfContainedFunction.csproj
index e198f5e7..fae7ffae 100644
--- a/Tests/Legacy/v0.8.2/MySelfContainedFunction/MySelfContainedFunction.csproj
+++ b/Tests/Legacy/v0.8.2/MySelfContainedFunction/MySelfContainedFunction.csproj
@@ -1,6 +1,6 @@
- net5.0
+ net8.0
true
false
true
diff --git a/Tests/Legacy/v0.8.3/MyApp/MyApp.csproj b/Tests/Legacy/v0.8.3/MyApp/MyApp.csproj
index 93ca3ba9..7803c63a 100644
--- a/Tests/Legacy/v0.8.3/MyApp/MyApp.csproj
+++ b/Tests/Legacy/v0.8.3/MyApp/MyApp.csproj
@@ -1,6 +1,6 @@
- net5.0
+ net8.0
true
Legacy.ModuleV082.MyApp
CS1998
diff --git a/Tests/Legacy/v0.8.3/MySelfContainedFunction/MySelfContainedFunction.csproj b/Tests/Legacy/v0.8.3/MySelfContainedFunction/MySelfContainedFunction.csproj
index ba74b902..8ebae498 100644
--- a/Tests/Legacy/v0.8.3/MySelfContainedFunction/MySelfContainedFunction.csproj
+++ b/Tests/Legacy/v0.8.3/MySelfContainedFunction/MySelfContainedFunction.csproj
@@ -1,6 +1,6 @@
- net5.0
+ net8.0
true
false
true
diff --git a/Tests/LogBuster/ReadAndFailFunction/ReadAndFailFunction.csproj b/Tests/LogBuster/ReadAndFailFunction/ReadAndFailFunction.csproj
index 6fa6f8d9..1292c217 100644
--- a/Tests/LogBuster/ReadAndFailFunction/ReadAndFailFunction.csproj
+++ b/Tests/LogBuster/ReadAndFailFunction/ReadAndFailFunction.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
false
true
diff --git a/Tests/Modules/Finalizer/Finalizer.csproj b/Tests/Modules/Finalizer/Finalizer.csproj
index 0a8b6972..1b027a32 100644
--- a/Tests/Modules/Finalizer/Finalizer.csproj
+++ b/Tests/Modules/Finalizer/Finalizer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharpTestModule.Finalizer
diff --git a/Tests/Modules/Function/Function.csproj b/Tests/Modules/Function/Function.csproj
index fccd6a53..f31f6d1f 100644
--- a/Tests/Modules/Function/Function.csproj
+++ b/Tests/Modules/Function/Function.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
true
LambdaSharpTestModule.Function
diff --git a/Tests/Modules/MyApp/MyApp.csproj b/Tests/Modules/MyApp/MyApp.csproj
index a57db0a4..ae309031 100644
--- a/Tests/Modules/MyApp/MyApp.csproj
+++ b/Tests/Modules/MyApp/MyApp.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
My.Mod.MyApp
CS1998
diff --git a/Tests/Tests.LambdaSharp.CloudFormation/Tests.LambdaSharp.CloudFormation.csproj b/Tests/Tests.LambdaSharp.CloudFormation/Tests.LambdaSharp.CloudFormation.csproj
index f3aad4b6..dcfc40b5 100644
--- a/Tests/Tests.LambdaSharp.CloudFormation/Tests.LambdaSharp.CloudFormation.csproj
+++ b/Tests/Tests.LambdaSharp.CloudFormation/Tests.LambdaSharp.CloudFormation.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
false
CS1998
enable
diff --git a/Tests/Tests.LambdaSharp.Modules/Tests.LambdaSharp.Modules.csproj b/Tests/Tests.LambdaSharp.Modules/Tests.LambdaSharp.Modules.csproj
index c8f5dd55..4fe7cba3 100644
--- a/Tests/Tests.LambdaSharp.Modules/Tests.LambdaSharp.Modules.csproj
+++ b/Tests/Tests.LambdaSharp.Modules/Tests.LambdaSharp.Modules.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
false
CS1998
diff --git a/Tests/Tests.LambdaSharp/Tests.LambdaSharp.csproj b/Tests/Tests.LambdaSharp/Tests.LambdaSharp.csproj
index 1b26a4df..5c8d6942 100644
--- a/Tests/Tests.LambdaSharp/Tests.LambdaSharp.csproj
+++ b/Tests/Tests.LambdaSharp/Tests.LambdaSharp.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
false
enable
CS1998
diff --git a/global.json b/global.json
index f5743ace..1acf0a26 100644
--- a/global.json
+++ b/global.json
@@ -1,5 +1,5 @@
{
"sdk": {
- "version": "6.0.102"
+ "version": "8.0.*"
}
-}
\ No newline at end of file
+}
diff --git a/pack.sh b/pack.sh
new file mode 100755
index 00000000..9f2525e2
--- /dev/null
+++ b/pack.sh
@@ -0,0 +1,27 @@
+cd src
+
+cd LambdaSharp
+dotnet build -c Release
+dotnet pack -c Release
+
+cd ..
+cd LambdaSharp.Tool
+dotnet build -c Release
+dotnet pack -c Release
+
+cd ..
+cd LambdaSharp.SimpleQueueService
+dotnet build -c Release
+dotnet pack -c Release
+
+cd ..
+cd LambdaSharp.Schedule
+dotnet build -c Release
+dotnet pack -c Release
+
+
+cd ..
+cp -r LambdaSharp/bin/Release/net8.0 ../../Deki/src/redist/LambdaSharp
+cp -r LambdaSharp.Tool/bin/Release/net8.0 ../../Deki/src/redist/LambdaSharp.Tool
+cp -r LambdaSharp.SimpleQueueService/bin/Release/net8.0 ../../Deki/src/redist/LambdaSharp.SimpleQueueService
+cp -r LambdaSharp.Schedule/bin/Release/net8.0 ../../Deki/src/redist/LambdaSharp.Schedule
\ No newline at end of file
diff --git a/src/LambdaSharp.ApiGateway/LambdaSharp.ApiGateway.csproj b/src/LambdaSharp.ApiGateway/LambdaSharp.ApiGateway.csproj
index 502f3a9e..eff6ad25 100644
--- a/src/LambdaSharp.ApiGateway/LambdaSharp.ApiGateway.csproj
+++ b/src/LambdaSharp.ApiGateway/LambdaSharp.ApiGateway.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.ApiGateway
enable
diff --git a/src/LambdaSharp.App/LambdaSharp.App.csproj b/src/LambdaSharp.App/LambdaSharp.App.csproj
index 0ec7eb51..7bffddff 100644
--- a/src/LambdaSharp.App/LambdaSharp.App.csproj
+++ b/src/LambdaSharp.App/LambdaSharp.App.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.App
@@ -35,7 +35,7 @@
-
+
diff --git a/src/LambdaSharp.CustomResource/LambdaSharp.CustomResource.csproj b/src/LambdaSharp.CustomResource/LambdaSharp.CustomResource.csproj
index 556f4b3e..bd16492f 100644
--- a/src/LambdaSharp.CustomResource/LambdaSharp.CustomResource.csproj
+++ b/src/LambdaSharp.CustomResource/LambdaSharp.CustomResource.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.CustomResource
enable
diff --git a/src/LambdaSharp.EventBridge/LambdaSharp.EventBridge.csproj b/src/LambdaSharp.EventBridge/LambdaSharp.EventBridge.csproj
index 9f1d6795..24de28d6 100644
--- a/src/LambdaSharp.EventBridge/LambdaSharp.EventBridge.csproj
+++ b/src/LambdaSharp.EventBridge/LambdaSharp.EventBridge.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.EventBridge
enable
diff --git a/src/LambdaSharp.Finalizer/LambdaSharp.Finalizer.csproj b/src/LambdaSharp.Finalizer/LambdaSharp.Finalizer.csproj
index e790fe48..6ff0d970 100644
--- a/src/LambdaSharp.Finalizer/LambdaSharp.Finalizer.csproj
+++ b/src/LambdaSharp.Finalizer/LambdaSharp.Finalizer.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.Finalizer
enable
diff --git a/src/LambdaSharp.Logging/LambdaSharp.Logging.csproj b/src/LambdaSharp.Logging/LambdaSharp.Logging.csproj
index 8e4b9e21..2c42c74f 100644
--- a/src/LambdaSharp.Logging/LambdaSharp.Logging.csproj
+++ b/src/LambdaSharp.Logging/LambdaSharp.Logging.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp
@@ -30,8 +30,8 @@
LambdaSharp;Serverless
ReadMe.md
-
-
+
+
diff --git a/src/LambdaSharp.Schedule/LambdaSharp.Schedule.csproj b/src/LambdaSharp.Schedule/LambdaSharp.Schedule.csproj
index b5d97a80..00a91e60 100644
--- a/src/LambdaSharp.Schedule/LambdaSharp.Schedule.csproj
+++ b/src/LambdaSharp.Schedule/LambdaSharp.Schedule.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.Schedule
enable
diff --git a/src/LambdaSharp.Serialization.NewtonsoftJson/LambdaSharp.Serialization.NewtonsoftJson.csproj b/src/LambdaSharp.Serialization.NewtonsoftJson/LambdaSharp.Serialization.NewtonsoftJson.csproj
index d083055e..51cfdfec 100644
--- a/src/LambdaSharp.Serialization.NewtonsoftJson/LambdaSharp.Serialization.NewtonsoftJson.csproj
+++ b/src/LambdaSharp.Serialization.NewtonsoftJson/LambdaSharp.Serialization.NewtonsoftJson.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.Serialization
enable
diff --git a/src/LambdaSharp.SimpleNotificationService/LambdaSharp.SimpleNotificationService.csproj b/src/LambdaSharp.SimpleNotificationService/LambdaSharp.SimpleNotificationService.csproj
index c0d1bc1f..b30fd8e9 100644
--- a/src/LambdaSharp.SimpleNotificationService/LambdaSharp.SimpleNotificationService.csproj
+++ b/src/LambdaSharp.SimpleNotificationService/LambdaSharp.SimpleNotificationService.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.SimpleNotificationService
enable
diff --git a/src/LambdaSharp.SimpleQueueService/LambdaSharp.SimpleQueueService.csproj b/src/LambdaSharp.SimpleQueueService/LambdaSharp.SimpleQueueService.csproj
index 69a017bb..6f73daec 100644
--- a/src/LambdaSharp.SimpleQueueService/LambdaSharp.SimpleQueueService.csproj
+++ b/src/LambdaSharp.SimpleQueueService/LambdaSharp.SimpleQueueService.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp.SimpleQueueService
enable
diff --git a/src/LambdaSharp.Slack/LambdaSharp.Slack.csproj b/src/LambdaSharp.Slack/LambdaSharp.Slack.csproj
index 81af65e8..f8a4a34c 100644
--- a/src/LambdaSharp.Slack/LambdaSharp.Slack.csproj
+++ b/src/LambdaSharp.Slack/LambdaSharp.Slack.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
LambdaSharp.Slack
diff --git a/src/LambdaSharp.Tool/Cli/Build/ModelAstToModuleConverter.cs b/src/LambdaSharp.Tool/Cli/Build/ModelAstToModuleConverter.cs
index 3f745bfb..484ef348 100644
--- a/src/LambdaSharp.Tool/Cli/Build/ModelAstToModuleConverter.cs
+++ b/src/LambdaSharp.Tool/Cli/Build/ModelAstToModuleConverter.cs
@@ -1084,6 +1084,16 @@ ref string handler
runtime = Amazon.Lambda.Runtime.Dotnet6.ToString();
}
break;
+ case "net8":
+ case "net8.0":
+ if(isSelfContained) {
+ runtime = Amazon.Lambda.Runtime.ProvidedAl2.ToString();
+ } else if(isTopLevelMain) {
+ runtime = Amazon.Lambda.Runtime.Dotnet8.ToString();
+ } else {
+ runtime = Amazon.Lambda.Runtime.Dotnet8.ToString();
+ }
+ break;
default:
LogError($"could not determine runtime from target framework: {targetFramework}; specify 'Runtime' attribute explicitly");
break;
diff --git a/src/LambdaSharp.Tool/Cli/CliNewCommand.cs b/src/LambdaSharp.Tool/Cli/CliNewCommand.cs
index 8808c675..bf9f773c 100644
--- a/src/LambdaSharp.Tool/Cli/CliNewCommand.cs
+++ b/src/LambdaSharp.Tool/Cli/CliNewCommand.cs
@@ -89,7 +89,7 @@ public void Register(CommandLineApplication app) {
// sub-command options
var namespaceOption = subCmd.Option("--namespace ", "(optional) Root namespace for project (default: same as function name)", CommandOptionType.SingleValue);
var directoryOption = subCmd.Option("--working-directory ", "(optional) New function project parent directory (default: current directory)", CommandOptionType.SingleValue);
- var frameworkOption = subCmd.Option("--framework|-f ", "(optional) Target .NET framework (default: 'net6.0')", CommandOptionType.SingleValue);
+ var frameworkOption = subCmd.Option("--framework|-f ", "(optional) Target .NET framework", CommandOptionType.SingleValue);
var languageOption = subCmd.Option("--language|-l ", "(optional) Select programming language for generated code (default: csharp)", CommandOptionType.SingleValue);
var inputFileOption = subCmd.Option("--input ", "(optional) File path to YAML module definition (default: Module.yml)", CommandOptionType.SingleValue);
inputFileOption.ShowInHelpText = false;
@@ -127,7 +127,7 @@ public void Register(CommandLineApplication app) {
settings,
functionName,
namespaceOption.Value(),
- frameworkOption.Value() ?? "net6.0",
+ frameworkOption.Value() ?? "net8.0",
workingDirectory,
Path.Combine(workingDirectory, inputFileOption.Value() ?? "Module.yml"),
languageOption.Value() ?? "csharp",
diff --git a/src/LambdaSharp.Tool/LambdaSharp.Tool.csproj b/src/LambdaSharp.Tool/LambdaSharp.Tool.csproj
index 7be66803..a34a3103 100644
--- a/src/LambdaSharp.Tool/LambdaSharp.Tool.csproj
+++ b/src/LambdaSharp.Tool/LambdaSharp.Tool.csproj
@@ -3,13 +3,13 @@
- net6.0
+ net8.0
LambdaSharp.Tool
- CS1998
+ CS1998;SYSLIB0051
9999
true
@@ -43,7 +43,7 @@
-
+
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.Function_cs.txt
new file mode 100644
index 00000000..0c9c85f8
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.Function_cs.txt
@@ -0,0 +1,36 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.ApiGateway;
+
+public class ApiGatewayEndpointRequest {
+
+ //--- Properties ---
+
+ // TO-DO: add endpoint request properties
+}
+
+public class ApiGatewayEndpointResponse {
+
+ //--- Properties ---
+
+ // TO-DO: add endpoint response properties
+}
+
+public sealed class Function : ALambdaApiGatewayFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public async Task ApiGatewayEndpointAsync(ApiGatewayEndpointRequest request) {
+
+ // TO-DO: add business logic for API Gateway resource endpoint
+ return new();
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.xml
new file mode 100644
index 00000000..b4a0475f
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGateway.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.Function_cs.txt
new file mode 100644
index 00000000..fa1d9a4b
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.Function_cs.txt
@@ -0,0 +1,30 @@
+namespace %%ROOTNAMESPACE%%;
+
+using Amazon.Lambda.APIGatewayEvents;
+using LambdaSharp;
+using LambdaSharp.ApiGateway;
+
+public sealed class Function : ALambdaApiGatewayFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessProxyRequestAsync(APIGatewayProxyRequest request) {
+
+ // TO-DO: add business logic for API Gateway proxy request handling
+
+ return new() {
+ Body = "Ok",
+ Headers = new Dictionary {
+ ["Content-Type"] = "text/plain"
+ },
+ StatusCode = 200
+ };
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.xml
new file mode 100644
index 00000000..b4a0475f
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-ApiGatewayProxy.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.Function_cs.txt
new file mode 100644
index 00000000..5813d28c
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.Function_cs.txt
@@ -0,0 +1,65 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.CustomResource;
+
+public class ResourceProperties {
+
+ //--- Properties ---
+
+ // TO-DO: add request resource properties
+}
+
+public class ResourceAttributes {
+
+ //--- Properties ---
+
+ // TO-DO: add response resource attributes
+}
+
+public sealed class Function : ALambdaCustomResourceFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task> ProcessCreateResourceAsync(Request request, CancellationToken cancellationToken) {
+
+ // TO-DO: create custom resource using resource properties from request
+
+ return new() {
+
+ // TO-DO: assign a physical resource ID for custom resource
+ PhysicalResourceId = "MyResource:123",
+
+ // TO-DO: set response attributes
+ Attributes = new ResourceAttributes { }
+ };
+ }
+
+ public override async Task> ProcessDeleteResourceAsync(Request request, CancellationToken cancellationToken) {
+
+ // TO-DO: delete custom resource identified by PhysicalResourceId in request
+
+ return new();
+ }
+
+ public override async Task> ProcessUpdateResourceAsync(Request request, CancellationToken cancellationToken) {
+
+ // TO-DO: update custom resource using resource properties from request
+
+ return new() {
+
+ // TO-DO: optionally assign a new physical resource ID to trigger deletion of the previous custom resource
+ PhysicalResourceId = "MyResource:123",
+
+ // TO-DO: set response attributes
+ Attributes = new ResourceAttributes { }
+ };
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.xml
new file mode 100644
index 00000000..44f4d9ab
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-CustomResource.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.Function_cs.txt
new file mode 100644
index 00000000..667134cc
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.Function_cs.txt
@@ -0,0 +1,28 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.EventBridge;
+
+public class EventMessage {
+
+ //--- Properties ---
+
+ // TO-DO: add message properties
+}
+
+public sealed class Function : ALambdaEventFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessEventAsync(EventMessage message) {
+
+ // TO-DO: add business logic
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.xml
new file mode 100644
index 00000000..8c3f2713
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Event.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.Function_cs.txt
new file mode 100644
index 00000000..212131f7
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.Function_cs.txt
@@ -0,0 +1,28 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.Finalizer;
+
+public sealed class Function : ALambdaFinalizerFunction {
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task CreateDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) {
+
+ // TO-DO: add business logic when creating a CloudFormation stack
+ }
+
+ public override async Task UpdateDeploymentAsync(FinalizerProperties current, FinalizerProperties previous, CancellationToken cancellationToken) {
+
+ // TO-DO: add business logic when updating a CloudFormation stack
+ }
+
+ public override async Task DeleteDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) {
+
+ // TO-DO: add business logic when deleting a CloudFormation stack
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.xml
new file mode 100644
index 00000000..681af4e4
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Finalizer.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.Function_cs.txt
new file mode 100644
index 00000000..447eb6c2
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.Function_cs.txt
@@ -0,0 +1,36 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+
+public class FunctionRequest {
+
+ //--- Properties ---
+
+ // TO-DO: add request fields
+}
+
+public class FunctionResponse {
+
+ //--- Properties ---
+
+ // TO-DO: add response fields
+}
+
+public sealed class Function : ALambdaFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessMessageAsync(FunctionRequest request) {
+
+ // TO-DO: add business logic
+
+ return new();
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.xml
new file mode 100644
index 00000000..91c146bf
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Generic.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.Function_cs.txt
new file mode 100644
index 00000000..3e1ea84e
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.Function_cs.txt
@@ -0,0 +1,28 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.SimpleQueueService;
+
+public class Message {
+
+ //--- Properties ---
+
+ // TO-DO: add message properties
+}
+
+public sealed class Function : ALambdaQueueFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessMessageAsync(Message message) {
+
+ // TO-DO: add business logic
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.xml
new file mode 100644
index 00000000..104f0485
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Queue.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.Function_cs.txt
new file mode 100644
index 00000000..58afa5c3
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.Function_cs.txt
@@ -0,0 +1,18 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.Schedule;
+
+public sealed class Function : ALambdaScheduleFunction {
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessEventAsync(LambdaScheduleEvent schedule) {
+
+ // TO-DO: add business logic
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.xml
new file mode 100644
index 00000000..ef4efdb8
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Schedule.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Function_cs..txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Function_cs..txt
new file mode 100644
index 00000000..d56d8139
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Function_cs..txt
@@ -0,0 +1,46 @@
+namespace %%ROOTNAMESPACE%%;
+
+using Amazon.Lambda.RuntimeSupport;
+using LambdaSharp;
+
+public class FunctionRequest {
+
+ //--- Properties ---
+
+ // TO-DO: add request fields
+}
+
+public class FunctionResponse {
+
+ //--- Properties ---
+
+ // TO-DO: add response fields
+}
+
+public sealed class Function : ALambdaFunction {
+
+ //--- Class Methods ---
+ public static async Task Main(string[] args) {
+
+ // NOTE: this method is the entry point for Lambda functions with a custom runtime
+ using var handlerWrapper = HandlerWrapper.GetHandlerWrapper(new Function().FunctionHandlerAsync);
+ using var bootstrap = new LambdaBootstrap(handlerWrapper);
+ await bootstrap.RunAsync();
+ }
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessMessageAsync(FunctionRequest request) {
+
+ // TO-DO: add business logic
+
+ return new();
+ }
+}
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Main_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Main_cs.txt
new file mode 100644
index 00000000..bc6dcae3
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.Main_cs.txt
@@ -0,0 +1,7 @@
+using Amazon.Lambda.RuntimeSupport;
+using %%ROOTNAMESPACE%%;
+
+// NOTE: this method is the entry point for Lambda functions with a custom runtime
+await LambdaBootstrapBuilder.Create(new Function().FunctionHandlerAsync)
+ .Build()
+ .RunAsync();
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.xml
new file mode 100644
index 00000000..ddd779af
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-SelfContained.xml
@@ -0,0 +1,32 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+ Exe
+ bootstrap
+
+
+ true
+ true
+ link
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.Function_cs.txt
new file mode 100644
index 00000000..8483cf4f
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.Function_cs.txt
@@ -0,0 +1,28 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.SimpleNotificationService;
+
+public class Message {
+
+ //--- Properties ---
+
+ // TO-DO: add message properties
+}
+
+public sealed class Function : ALambdaTopicFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessMessageAsync(Message message) {
+
+ // TO-DO: add business logic
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.xml
new file mode 100644
index 00000000..b2eda185
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-Topic.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.Function_cs.txt
new file mode 100644
index 00000000..0c9c85f8
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.Function_cs.txt
@@ -0,0 +1,36 @@
+namespace %%ROOTNAMESPACE%%;
+
+using LambdaSharp;
+using LambdaSharp.ApiGateway;
+
+public class ApiGatewayEndpointRequest {
+
+ //--- Properties ---
+
+ // TO-DO: add endpoint request properties
+}
+
+public class ApiGatewayEndpointResponse {
+
+ //--- Properties ---
+
+ // TO-DO: add endpoint response properties
+}
+
+public sealed class Function : ALambdaApiGatewayFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public async Task ApiGatewayEndpointAsync(ApiGatewayEndpointRequest request) {
+
+ // TO-DO: add business logic for API Gateway resource endpoint
+ return new();
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.xml
new file mode 100644
index 00000000..b4a0475f
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocket.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.Function_cs.txt b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.Function_cs.txt
new file mode 100644
index 00000000..fa1d9a4b
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.Function_cs.txt
@@ -0,0 +1,30 @@
+namespace %%ROOTNAMESPACE%%;
+
+using Amazon.Lambda.APIGatewayEvents;
+using LambdaSharp;
+using LambdaSharp.ApiGateway;
+
+public sealed class Function : ALambdaApiGatewayFunction {
+
+ //--- Constructors ---
+ public Function() : base(new LambdaSharp.Serialization.LambdaSystemTextJsonSerializer()) { }
+
+ //--- Methods ---
+ public override async Task InitializeAsync(LambdaConfig config) {
+
+ // TO-DO: add function initialization and reading configuration settings
+ }
+
+ public override async Task ProcessProxyRequestAsync(APIGatewayProxyRequest request) {
+
+ // TO-DO: add business logic for API Gateway proxy request handling
+
+ return new() {
+ Body = "Ok",
+ Headers = new Dictionary {
+ ["Content-Type"] = "text/plain"
+ },
+ StatusCode = 200
+ };
+ }
+}
diff --git a/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.xml b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.xml
new file mode 100644
index 00000000..b4a0475f
--- /dev/null
+++ b/src/LambdaSharp.Tool/Resources/net80/NewCSharpFunction-WebSocketProxy.xml
@@ -0,0 +1,16 @@
+
+
+ %%FRAMEWORK%%
+ true
+ false
+ true
+ %%ROOTNAMESPACE%%
+ enable
+ CS1998
+ enable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/LambdaSharp/LambdaSharp.csproj b/src/LambdaSharp/LambdaSharp.csproj
index db184eb8..9a82418a 100644
--- a/src/LambdaSharp/LambdaSharp.csproj
+++ b/src/LambdaSharp/LambdaSharp.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
LambdaSharp
enable