Skip to content

Commit 0ec9fb4

Browse files
author
Ed Munoz
committed
Merge branch 'ignite' into userdefinedroutes
Conflicts: src/ServiceManagement/Network/Commands.Network.Test/Commands.Network.Test.csproj src/ServiceManagement/Network/Commands.Network.Test/packages.config src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj src/ServiceManagement/Network/Commands.Network/NetworkClient.cs
2 parents 4dd27a3 + 1138ff5 commit 0ec9fb4

File tree

706 files changed

+59276
-30791
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

706 files changed

+59276
-30791
lines changed

AzurePowershell.Test.targets

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,17 @@
3232
<AzureRTAllPreviewFilter>"Functional|AzureRTScenario|Preview"</AzureRTAllPreviewFilter>
3333
<AzureRTUploadSeqFilter>"AzureRTUpload|Sequential"</AzureRTUploadSeqFilter>
3434
<AzureRTSeqAllFilter>"AzureRTUpload|Sequential|Network"</AzureRTSeqAllFilter>
35+
<TestTimeout Condition=" '$(TestTimeout)' == '' ">100000000</TestTimeout>
3536
</PropertyGroup>
3637

3738
<ItemGroup>
3839
<XUnitTests Include=".\src\Common\Commands.Common.Test\bin\Debug\Microsoft.WindowsAzure.Commands.Common.Test.dll"/>
3940
<XUnitTests Include=".\src\ResourceManager\Sql\Commands.Sql.Test\bin\Debug\Microsoft.Azure.Commands.Sql.Test.dll"/>
4041
<XUnitTests Include=".\src\ServiceManagement\Services\Commands.Test\bin\Debug\Microsoft.WindowsAzure.Commands.Test.dll"/>
42+
<XUnitTests Include=".\src\ServiceManagement\StorSimple\Commands.StorSimple.Test\bin\Debug\Microsoft.WindowsAzure.Commands.StorSimple.Test.dll"/>
4143
<XUnitTests Include=".\src\ResourceManager\Resources\Commands.Resources.Test\bin\Debug\Microsoft.Azure.Commands.Resources.Test.dll"/>
4244
<XUnitTests Include=".\src\ResourceManager\DataFactories\Commands.DataFactories.Test\bin\Debug\Microsoft.Azure.Commands.DataFactories.Test.dll"/>
45+
<XUnitTests Include=".\src\ResourceManager\Dns\Commands.Dns.Test\bin\Debug\Microsoft.Azure.Commands.Dns.Test.dll"/>
4346
<XUnitTests Include=".\src\ResourceManager\StreamAnalytics\Commands.StreamAnalytics.Test\bin\Debug\Microsoft.Azure.Commands.StreamAnalytics.Test.dll"/>
4447
<XUnitTests Include=".\src\ResourceManager\Batch\Commands.Batch.Test\bin\Debug\Microsoft.Azure.Commands.Batch.Test.dll"/>
4548
<XUnitTests Include=".\src\ResourceManager\Websites\Commands.Websites.Test\bin\Debug\Microsoft.Azure.Commands.Websites.Test.dll"/>
@@ -48,11 +51,10 @@
4851
<XUnitTests Include=".\src\ServiceManagement\RemoteApp\Commands.RemoteApp.Test\bin\Debug\Microsoft.Azure.Commands.RemoteApp.Tests.dll"/>
4952
<XUnitTests Include=".\src\Common\Commands.ScenarioTest\bin\Debug\Microsoft.WindowsAzure.Commands.ScenarioTest.dll"/>
5053
<XUnitTests Include=".\src\ServiceManagement\RecoveryServices\Commands.RecoveryServices.Test\bin\Debug\Microsoft.Azure.Commands.RecoveryServices.Test.dll"/>
51-
<XUnitTests Include=".\src\ServiceManagement\StorSimple\Commands.StorSimple.Test\bin\Debug\Microsoft.WindowsAzure.Commands.StorSimple.Test.dll"/>
5254
</ItemGroup>
5355

5456
<Target Name="InvokeMSTest">
55-
<!--Remove existing test result; otherwsie mstest will error-->
57+
<!--Remove existing test result; otherwise mstest will error-->
5658
<Delete Files="$(_testResult)"/>
5759
<Exec
5860
Command="MSTest.exe /testcontainer:$(_testAssembly) /testsettings:$(_testSettings) /category:$(_testFilter) /resultsfile:$(_testResult)"
@@ -62,8 +64,23 @@
6264
<Target Name="InvokeXUnit">
6365
<Message Importance="high" Text="Running XUnit tests" />
6466
<MakeDir Directories="$(TestOutputDirectory)" ContinueOnError="false" />
65-
<Xunit.Runner.MSBuild.xunit Assemblies="@(XUnitTests)" Html="$(TestOutputDirectory)\xunit.tests.dll.html" Verbose="true"
66-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false"/>
67+
<Exec
68+
Command="$(MSBuildProjectDirectory)\packages\xunit.runner.console.2.0.0\tools\xunit.console.x86.exe &quot;%(XUnitTests.Identity)&quot; -trait &quot;AcceptanceType=CheckIn&quot; -html &quot;$(TestOutputDirectory)\%(XUnitTests.Filename).html&quot;"
69+
Timeout="$(TestTimeout)" ContinueOnError="false"/>
70+
<OnError ExecuteTargets="TimeoutErrorHandler"/>
71+
</Target>
72+
73+
<Target Name="InvokeXUnitAll">
74+
<Message Importance="high" Text="Running XUnit tests" />
75+
<MakeDir Directories="$(TestOutputDirectory)" ContinueOnError="false" />
76+
<Exec
77+
Command="$(MSBuildProjectDirectory)\packages\xunit.runner.console.2.0.0\tools\xunit.console.x86.exe &quot;%(XUnitTests.Identity)&quot; -notrait &quot;RunType=LiveOnly&quot; -html &quot;$(TestOutputDirectory)\%(XUnitTests.Filename).html&quot;"
78+
Timeout="$(TestTimeout)" ContinueOnError="false"/>
79+
<OnError ExecuteTargets="TimeoutErrorHandler"/>
80+
</Target>
81+
82+
<Target Name="TimeoutErrorHandler">
83+
<Error Text="XUnit tests in assembly &quot;%(XUnitTests.Filename).dll&quot; failed or timed out. Ensure that all tests in a project pass and collectively take less than 1 minute to run."/>
6784
</Target>
6885

6986
<Target Name="BeforeRunTests">
@@ -73,46 +90,46 @@
7390

7491
<Target Name="TestManagement">
7592
<Xunit.Runner.MSBuild.xunit Assemblies="$(ManagementTestDebug)" Html="$(TestOutputDirectory)\ManagementDebug.xunit.dll.html" Verbose="false"
76-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
93+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
7794
</Target>
7895

7996
<Target Name="TestManagedCache">
8097
<PropertyGroup>
8198
<_ManagedCacheTestAssembly>.\src\ServiceManagement\ManagedCache\Commands.ManagedCache.Test\bin\Debug\Microsoft.Azure.Commands.ManagedCache.Test.dll</_ManagedCacheTestAssembly>
8299
</PropertyGroup>
83100
<Xunit.Runner.MSBuild.xunit Assemblies="$(_ManagedCacheTestAssembly)" Html="$(TestOutputDirectory)\ManagedCache.xunit.dll.html" Verbose="false"
84-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
101+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
85102
</Target>
86103

87104
<Target Name="TestResourceManager">
88105
<Xunit.Runner.MSBuild.xunit Assemblies="$(ResourceManagerTestDebug)" Html="$(TestOutputDirectory)\ResourceManagerTestDebug.xunit.dll.html" Verbose="false"
89-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
106+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
90107
</Target>
91108

92109
<Target Name="TestBatch">
93110
<Xunit.Runner.MSBuild.xunit Assemblies="$(BatchTestDebug)" Html="$(TestOutputDirectory)\BatchTestDebug.xunit.dll.html" Verbose="false"
94-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
111+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
95112
</Target>
96113

97114

98115
<Target Name="TestRemoteApp">
99116
<Xunit.Runner.MSBuild.xunit Assemblies="$(RemoteAppTestDebug)" Html="$(TestOutputDirectory)\RemoteAppTestDebug.xunit.dll.html" Verbose="false"
100-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
117+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
101118
</Target>
102119

103120
<Target Name="TestWebsites">
104121
<Xunit.Runner.MSBuild.xunit Assemblies="$(WebsitesTestDebug)" Html="$(TestOutputDirectory)\WebsitesTestDebug.xunit.dll.html" Verbose="false"
105-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
122+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
106123
</Target>
107124

108125
<Target Name="TestDataFactoryManager">
109126
<Xunit.Runner.MSBuild.xunit Assemblies="$(DataFactoryManagerTestDebug)" Html="$(TestOutputDirectory)\DataFactoryManagerTestDebug.xunit.dll.html" Verbose="false"
110-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
127+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
111128
</Target>
112129

113130
<Target Name="TestStreamAnalyticsManager">
114131
<Xunit.Runner.MSBuild.xunit Assemblies="$(StreamAnalyticsManagerTestDebug)" Html="$(TestOutputDirectory)\StreamAnalyticsManagerTestDebug.xunit.dll.html" Verbose="false"
115-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
132+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
116133
</Target>
117134

118135
<Target Name="TestServiceManagement">
@@ -150,15 +167,15 @@
150167
<_RecoveryServicesTestAssembly>.\src\ServiceManagement\RecoveryServices\Commands.RecoveryServices.Test\bin\Debug\Microsoft.Azure.Commands.RecoveryServices.Test.dll</_RecoveryServicesTestAssembly>
151168
</PropertyGroup>
152169
<Xunit.Runner.MSBuild.xunit Assemblies="$(_RecoveryServicesTestAssembly)" Html="$(TestOutputDirectory)\RecoveryServices.xunit.dll.html" Verbose="false"
153-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
170+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
154171
</Target>
155172

156173
<Target Name="TestStorSimple">
157174
<PropertyGroup>
158175
<_StorSimpleTestAssembly>.\src\ServiceManagement\StorSimple\Commands.StorSimple.Test\bin\Debug\Microsoft.WindowsAzure.Commands.StorSimple.Test.dll</_StorSimpleTestAssembly>
159176
</PropertyGroup>
160177
<Xunit.Runner.MSBuild.xunit Assemblies="$(_StorSimpleTestAssembly)" Html="$(TestOutputDirectory)\StorSimple.xunit.dll.html" Verbose="false"
161-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
178+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
162179
</Target>
163180

164181
<!-- Run the scenario tests -->
@@ -176,28 +193,28 @@
176193
<Target Name="CommonTests">
177194
<Message Importance="high" Text="Running Common tests" />
178195
<Xunit.Runner.MSBuild.xunit Assemblies="$(CommonTestDebug)" Html="$(TestOutputDirectory)\CommonTests.xunit.dll.html" Verbose="false"
179-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false"/>
196+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false"/>
180197
</Target>
181198

182199
<!-- Run the sql tests -->
183200
<Target Name="SqlTests">
184201
<Message Importance="high" Text="Running Sql tests" />
185202
<Xunit.Runner.MSBuild.xunit Assemblies="$(SqlTestDebug)" Html="$(TestOutputDirectory)\SqlTests.xunit.dll.html" Verbose="false"
186-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
203+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
187204
</Target>
188205

189206
<!-- Run the KeyVault tests -->
190207
<Target Name="KeyVaultTests">
191208
<Message Importance="high" Text="Running KeyVault tests" />
192209
<Xunit.Runner.MSBuild.xunit Assemblies="$(KeyVaultTestDebug)" Html="$(TestOutputDirectory)\KeyVaultTests.xunit.dll.html" Verbose="true"
193-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false"/>
210+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false"/>
194211
</Target>
195212

196213
<!-- Run the scenario tests with Mocks -->
197214
<Target Name="MockedScenarioTests">
198215
<Message Importance="high" Text="Running scenario tests with Mocks" />
199216
<Xunit.Runner.MSBuild.xunit Assemblies="$(ScenarioTestDebug)" Html="$(TestOutputDirectory)\MockedScenarioTests.xunit.dll.html" Verbose="true"
200-
ExcludeTraits="$(XUnitExcludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
217+
IncludeTraits="$(XUnitIncludedTrait)" MaxParallelThreads="0" ParallelizeAssemblies="false" ParallelizeTestCollections="false" />
201218
</Target>
202219

203220
<Target Name="RunOneSDKCIT" DependsOnTargets="Clean;BuildDebug;BeforeRunTests">

ChangeLog.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
2015.04.28 version 0.8.17
2+
* Azure Batch
3+
* Added cmdlets
4+
* New-AzureBatchVMUser
5+
* Remove-AzureBatchVMUser
6+
7+
2015.03.31 version 0.8.16
8+
* Azure Data Factory:
9+
* Fixes for clean install and subscription registration issues
10+
* Azure HDInsight:
11+
* Support for creating, deleting, listing, and submitting jobs to HDInsight clusters with Linux Operating System.
12+
* Azure Compute
13+
* Fix pipeline issues with Get-AzureVM (#3047)
14+
* Fixed DateTime Overflow issue
15+
* Azure Batch
16+
* Added cmdlets
17+
* Add/Remove Batch Pools
18+
* Get-BatchTaskFileContent
19+
* Get-BatchTaskFile
20+
* Azure Insights
21+
* Added cmdlets
22+
* Add-AutoscaleSetting
23+
* Get-AutoscaleHistory
24+
* Get-AutoscaleSetting
25+
* New-AutoscaleProfile
26+
* New-AutoscaleRule
27+
* Remove-AutoscaleSetting
28+
* Get-Metrics
29+
* Get-MetricDefinitions
30+
* Format-MetricsAsTable
31+
* Azure Websites
32+
* Added cmdlet Get-AzureWebhostingPlanMetrics
33+
* Added Premium support
34+
* Renamed WebSites to WebApp
35+
* AzureProfile
36+
* Made AzureProfile serializable to support workflow scenarios
37+
138
2015.03.11 version 0.8.15.1
239
* Fixes for clean install and subscription registration issues
340

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ This repository contains a set of PowerShell cmdlets for developers and administ
2828
* Log streaming
2929
* Save log
3030
* Cloud Services
31-
* Create scaffolding for cloud service and role. Role support includes Node.js, PHP, Django and Cache.
31+
* Create scaffolding for cloud service and role. Role support includes Node.js and PHP.
3232
* Manage cloud service and role, such as CRUD, start and stop.
33-
* Manage extension
33+
* Manage extension.
3434
* Start/Stop Azure emulator.
3535
* Manage certificate.
3636
* Manage cloud service extensions
@@ -294,4 +294,4 @@ If you encounter any bugs with the library please file an issue in the [Issues](
294294

295295
# Learn More
296296

297-
* [Microsoft Azure Script Center](http://www.azure.microsoft.com/en-us/documentation/scripts/)
297+
* [Microsoft Azure Script Center](http://www.azure.microsoft.com/en-us/documentation/scripts/)

build.proj

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
</ItemGroup>
2626

2727
<UsingTask
28-
AssemblyFile="$(MSBuildProjectDirectory)\packages\xunit.runners.2.0.0-beta4-build2738\tools\xunit.runner.msbuild.dll"
28+
AssemblyFile="$(MSBuildProjectDirectory)\packages\xunit.runner.console.2.0.0\tools\xunit.runner.msbuild.dll"
2929
TaskName="Xunit.Runner.MSBuild.xunit" />
3030

3131
<!-- Clean the build in all configurations -->
@@ -88,14 +88,25 @@
8888
<NuGetCache Include="$(LOCALAPPDATA)\NuGet\Cache\*.nupkg"/>
8989
</ItemGroup>
9090

91-
<!-- Delete NuGet cache-->
91+
<!-- Delete NuGet cache-->
9292
<Delete Files="@(NuGetCache)" />
93+
94+
<Delete Files="$(NuGetRestoreConfigFile)" />
95+
<WriteLinesToFile
96+
File="$(NuGetRestoreConfigFile)"
97+
Lines="&lt;configuration&gt;&lt;/configuration&gt;"
98+
Overwrite="true"
99+
Encoding="Unicode"/>
100+
101+
<Exec Command="$(NuGetCommand) sources add -Name LocalFeed -Source &quot;$(MSBuildProjectDirectory)\tools\LocalFeed&quot; $(NuGetRestoreConfigSwitch)"/>
93102

94103
<!-- Restore packages -->
95-
<Exec Command="$(NuGetCommand) restore $(MSBuildProjectDirectory)\src\AzurePowerShell.sln" ContinueOnError="false" />
104+
<Exec Command="$(NuGetCommand) restore $(MSBuildProjectDirectory)\src\AzurePowerShell.sln $(NuGetRestoreConfigSwitch)" ContinueOnError="false" />
96105

97106
<!--Restore the xunit runner needed to run unit tests-->
98107
<Exec Command="$(NuGetCommand) restore $(MSBuildProjectDirectory)\packages.config -PackagesDirectory $(MSBuildProjectDirectory)\packages" />
108+
109+
<Delete Files="$(NuGetRestoreConfigFile)" />
99110
</Target>
100111

101112
<!-- Build all flavors of the Cmdlets -->
@@ -154,7 +165,7 @@
154165
<!-- Do everything possible -->
155166
<Target
156167
Name="Full"
157-
DependsOnTargets="ForceRestorePackages;Clean;BuildDebug;BuildRelease;Test;BuildSetupDebug;BuildSetupRelease" />
168+
DependsOnTargets="ForceRestorePackages;Clean;BuildDebug;Test;BuildSetupDebug" />
158169

159170
<!-- Build the Cmdlets in Release configuration -->
160171
<Target Name="BuildRelease" DependsOnTargets="ForceRestorePackages">
@@ -180,15 +191,15 @@
180191

181192
<PropertyGroup>
182193
<RunTestLive Condition="'$(RunTestLive)' == ''">false</RunTestLive>
183-
<XUnitExcludedTrait Condition="!$(RunTestLive)">RunType=LiveOnly</XUnitExcludedTrait>
194+
<XUnitIncludedTrait Condition="!$(RunTestLive)">AcceptanceType=CheckIn</XUnitIncludedTrait>
184195
</PropertyGroup>
185196
<!-- Note: all testing related target should go to 'AzurePowershell.test.targets' file except the one used by CI run -->
186197
<Import Project="$(MSBuildThisFileDirectory)AzurePowershell.test.targets"/>
187198

188199
<!-- Run checkin tests for each pull request -->
189200
<Target Name="Test" DependsOnTargets="BuildDebug;BeforeRunTests">
190201
<Message Importance="high" Text="Running check in tests..." />
191-
<CallTarget Targets="InvokeXUnit; TestHDInsight; TestServiceManagement; TestServiceManagementExtensions; TestSqlDatabase; TestStorage; TestDSCExtension_x64"/>
202+
<CallTarget Targets="InvokeXUnit"/>
192203
</Target>
193204

194205
<!-- Run Full switch with scenario tests -->

packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="xunit.runners" version="2.0.0-beta4-build2738" />
3+
<package id="xunit.runner.console" version="2.0.0" />
44
<package id="xunit.runners" version="1.9.2" />
55
</packages>

setup/azurecmd.wxs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<?define sourceDir="$(var.SolutionDir)..\src\Package\$(var.Configuration)" ?>
66
<?define caSourceDir="$(var.SolutionDir)setup\bin\$(var.Configuration)" ?>
77

8-
<?define version="0.8.15.1" ?>
8+
<?define version="0.8.16.1" ?>
99
<?define versionedStartMenuFolder="Microsoft Azure" ?>
1010
<?define staleStartMenuFolder="Windows Azure" ?>
1111

0 commit comments

Comments
 (0)