port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>PostSharp</id>
<version>3.1.28</version>
<title>PostSharp</title>
<authors>SharpCrafters s.r.o.</authors>
<owners>SharpCrafters s.r.o.</owners>
<licenseUrl>http://www.postsharp.net/links/nuget-license</licenseUrl>
<projectUrl>http://www.postsharp.net/links/nuget-home</projectUrl>
<iconUrl>http://www.postsharp.net/nuget/icon.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Aspect-Oriented Programming and Design Pattern Automation.</description>
<summary>Eradicates boilerplate code and enables application developers to automate design pattern implementation and deliver higher quality software in less time.</summary>
<releaseNotes />
<copyright />
<language>en-US</language>
<tags>postsharp sharcrafters post-compiler postcompiler aop aspect aosd castle spring dynamic interceptor interception linfu unity dependency di monitoring instrumentation logging tracing design pattern</tags>
</metadata>
</package>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<PostSharp30Version>3.1.28</PostSharp30Version>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,489 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Import Project="PostSharp.tasks"/>
<ItemGroup>
<AvailableItemName Include="PostSharpHostConfigurationFile"/>
</ItemGroup>
<PropertyGroup>
<DefineConstants Condition="'$(PostSharpConstraintVerificationEnabled)'=='True'">$(DefineConstants);POSTSHARP_CONSTRAINTS</DefineConstants>
</PropertyGroup>
<Target Name="PostSharp30GetDirectory">
<CreateProperty Value="@(IntermediateAssembly->'%(FullPath)')">
<Output TaskParameter="Value" PropertyName="_PostSharp30IntermediateAssemblyFullPath"/>
</CreateProperty>
</Target>
<!-- Inspect project references for PostSharp.dll (with strict version checking) -->
<Target Name="PostSharp30InspectReferences"
Condition="'$(BuildingProject)'=='true' AND
'$(SkipPostSharp)'!='True' AND
'$(PostSharpProject)'=='' AND
'$(SkipPostSharp30)'!='True'"
DependsOnTargets="ResolveAssemblyReferences;PostSharp30ExtractBinaries;PostSharp30InspectConstants">
<Message Text="PostSharp parses the following references: @(ReferencePath -> '%(Filename)')."
Importance="low"/>
<PostSharp30ParseAssemblyNames AssemblyNames="@(ReferencePath);@(ReferenceDependencyPaths)" FilterFileName="PostSharp" Filter="PostSharp, Version=3\.[0-9]\..*, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7">
<Output TaskParameter="FilteredAssemblyNames" ItemName="_PostSharp30References"/>
</PostSharp30ParseAssemblyNames>
<PostSharp30ParseAssemblyNames AssemblyNames="@(ReferencePath);@(ReferenceDependencyPaths)" FilterFileName="PostSharp" Filter="PostSharp, Version=3\.[0-9]\.[0-9]+\.3, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7">
<Output TaskParameter="FilteredAssemblyNames" ItemName="_PostSharp30NetPortableReferences"/>
</PostSharp30ParseAssemblyNames>
<PostSharp30ParseAssemblyNames AssemblyNames="@(ReferencePath);@(ReferenceDependencyPaths)" FilterFileName="PostSharp" Filter="PostSharp, Version=3\.[0-9]\.[0-9]+\.9, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7">
<Output TaskParameter="FilteredAssemblyNames" ItemName="_PostSharp30NetFrameworkReferences"/>
</PostSharp30ParseAssemblyNames>
<PostSharp30ParseAssemblyNames AssemblyNames="@(ReferencePath);@(ReferenceDependencyPaths)" FilterFileName="PostSharp" Filter="PostSharp, Version=[12]\..*, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7">
<Output TaskParameter="FilteredAssemblyNames" ItemName="_OtherPostSharpReferences"/>
</PostSharp30ParseAssemblyNames>
<Message Text="Detected reference to '%(_PostSharp30References.FusionName)'." Condition="'@(_PostSharp30References)'!=''" />
<Message Text="Detected reference to '%(_OtherPostSharpReferences.FusionName)'." Condition="'@(_OtherPostSharpReferences)'!=''" />
<Error Text="Assembly $(AssemblyName) cannot have reference to both PostSharp 3 and an older version of PostSharp." Condition="'@(_PostSharp30References)'!='' AND '@(_OtherPostSharpReferences)'!=''"/>
<!-- Enable PostSharp 3.0 with the default project -->
<CreateProperty Condition="'@(_PostSharp30References)'!=''" Value="default">
<Output TaskParameter="Value" PropertyName="PostSharpProject" />
</CreateProperty>
<!-- TODO: Check that the max version of referenced PostSharp.dll is not higher than the version of the current build. -->
<!-- TODO: This target must be evaluated even if PostSharpProject is defined, otherwise warnings and errors are not defined. -->
</Target>
<!-- Determines whether the SkipPostSharp or PostSharpVerify constant has been defined -->
<Target Name="PostSharp30InspectConstants"
Condition="'$(BuildingProject)'=='true' AND
'$(SkipPostSharp)'!='True' AND
'$(SkipPostSharp30)'!='True'"
DependsOnTargets="PostSharp30GetDirectory"
>
<CreateItem Include="$(DefineConstants)">
<Output TaskParameter="Include" ItemName="_DefineConstants"/>
</CreateItem>
<CreateProperty Condition="'%(_DefineConstants.Identity)'=='SkipPostSharp'" Value="True">
<Output TaskParameter="Value" PropertyName="SkipPostSharp" />
</CreateProperty>
<Message Condition="'$(SkipPostSharp)'=='True'"
Importance="low"
Text="SkipPostSharp constant detected. The PostSharp target will be ignored." />
<CreateProperty Condition="'%(_DefineConstants.Identity)'=='PostSharpVerify'" Value="True">
<Output TaskParameter="Value" PropertyName="PostSharpVerify" />
</CreateProperty>
</Target>
<!-- Disable previous versions of PostSharp -->
<Target Name="PostSharp30DisablePreviousVersions" Condition="( '$(PostSharp20Project)'!='' OR '$(PostSharp21Project)'!='' ) AND
'$(SkipPostSharp)'!='True' AND
'$(SkipPostSharp30)'!='True'"
DependsOnTargets="PostSharp30InspectConstants;PostSharp30InspectReferences"
>
<CreateProperty Condition="'$(PostSharpProject)'!=''" Value="True">
<Output TaskParameter="Value" PropertyName="SkipPostSharp30"/>
</CreateProperty>
</Target>
<Target Name="PostSharp30DefineConstant" DependsOnTargets="PostSharpInspect"
Condition="'$(PostSharpProject)'!='' AND
'$(SkipPostSharp)'!='True' AND
'$(SkipPostSharp30)'!='True' ">
<!-- Define compiler constants if PostSharp has been detected. -->
<CreateProperty Value="POSTSHARP;$(DefineConstants)" Condition="'$(Language)'=='C#'">
<Output TaskParameter="Value" PropertyName="DefineConstants"/>
</CreateProperty>
<CreateProperty Value="POSTSHARP=300,$(FinalDefineConstants)" Condition="'$(Language)'=='VB'">
<Output TaskParameter="Value" PropertyName="FinalDefineConstants"/>
</CreateProperty>
</Target>
<Target Name="PostSharp30TimestampBeforeCompile">
<CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
<Output TaskParameter="Include" PropertyName="_PostSharp30AssemblyTimestampBeforeCompile"/>
</CreateItem>
</Target>
<Target Name="PostSharp30TimestampAfterCompile">
<CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
<Output TaskParameter="Include" PropertyName="_PostSharp30AssemblyTimestampAfterCompile"/>
</CreateItem>
</Target>
<!-- Task PostSharp: executes PostSharp if the PostSharpProject is defined. -->
<Target Name="PostSharp30"
Condition="'$(BuildingProject)'=='true' AND
'$(PostSharpProject)'!='' AND
'$(SkipPostSharp)'!='True' AND
'$(SkipPostSharp30)'!='True' AND
Exists('$(_PostSharp30IntermediateAssemblyFullPath)') AND
'$(_PostSharp30AssemblyTimestampBeforeCompile)'!='$(_PostSharp30AssemblyTimestampAfterCompile)'"
Inputs="@(PostSharpProject);@(IntermediateAssembly->'%(FullPath)')"
Outputs="@(IntermediateAssembly->'%(FullPath).postsharp')"
DependsOnTargets="_CopyFilesMarkedCopyLocal;ResolveKeySource;$(PostSharp30DependsOn);">
<!-- Check that PostSharp targets have not been imported twice. -->
<Error Text="PostSharp targets have been imported twice in the project. Be sure to set the 'DontImportPostSharp' property to 'True' when you import PostSharp manually, so that it does not get imported automatically."
Condition="'$(_PostSharp30ImportedTwice)'=='True'"/>
<!-- Emit warnings and errors -->
<Warning Condition="'$(PostSharpUsePipeServer)'!=''" Text="The MSBuild property PostSharpUsePipeServer is obsolete. Use property PostSharpHost instead (values: Managed, PipeServer, Native)."/>
<Error Condition="('$(PlatformTarget)'=='x64' OR '$(PlatformTarget)'=='AMD64') AND '$(PostSharpTargetProcessor)'=='x86'" Text="Platform mismatch. You cannot run PostSharp on a 64-bit application from a 32-bit operating system."/>
<Error Condition="'$(AssemblyName)'=='PostSharp' AND '$(ProjectSafelyNamedPostSharp)'==''" Text="Cannot run PostSharp on a project named 'PostSharp'."/>
<!-- Set framework-specific properties -->
<Error Condition="'$(CustomAfterMicrosoftCompactFrameworkCommonTargets)'!='' AND '$(TargetFrameworkVersion)'=='v2.0'"
Text="This version of PostSharp does not support .NET Compact Framework 2.0. The last version to support this framework is PostSharp 2.1."/>
<Error Condition="'$(CustomAfterMicrosoftCompactFrameworkCommonTargets)'!='' AND '$(TargetFrameworkVersion)'=='v3.5'"
Text="This version of PostSharp does not support .NET Compact Framework 3.5. The last version to support this framework is PostSharp 2.1."/>
<Error Condition="(('$(CreateSilverlightAppManifestDependsOn)'!='' AND '$(TargetFrameworkVersion)'!='v4.0' AND '$(TargetFrameworkVersion)'!='v5.0' AND '$(TargetFrameworkVersion)'!='v8.0') OR '$(XnaPlatform)'=='Windows Phone')"
Text="This version of PostSharp supports Silverlight from version 4. The last version to support previous releases of Silverlight is PostSharp 2.1."/>
<!--Define target and native framework monikers -->
<PropertyGroup>
<_PostSharpTargetFrameworkIdentifier>$(TargetFrameworkIdentifier)</_PostSharpTargetFrameworkIdentifier>
<_PostSharpTargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)'==''">.NETFramework</_PostSharpTargetFrameworkIdentifier>
<_PostSharpTargetFrameworkVersion>$(TargetFrameworkVersion)</_PostSharpTargetFrameworkVersion>
<_PostSharpTargetFrameworkVersion Condition="'$(_PostSharpTargetFrameworkIdentifier)'=='.NETFramework' AND ( '$(TargetFrameworkVersion)'=='v2.0' OR '$(TargetFrameworkVersion)'=='v3.0' )">v3.5</_PostSharpTargetFrameworkVersion>
<PostSharpTargetFrameworkMoniker>$(_PostSharpTargetFrameworkIdentifier),$(TargetFrameworkVersion)</PostSharpTargetFrameworkMoniker>
<_NetFramework4Version>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full@Release)</_NetFramework4Version>
<PostSharpNativeFrameworkMoniker>.NETFramework,v4.0</PostSharpNativeFrameworkMoniker>
<PostSharpNativeFrameworkMoniker Condition="'$(_NetFramework4Version)' != '' AND $(_NetFramework4Version) &gt;= 378389">.NETFramework,v4.5</PostSharpNativeFrameworkMoniker>
<PostSharpNativeFrameworkMoniker Condition="'$(_NetFramework4Version)' != '' AND $(_NetFramework4Version) &gt;= 378675">.NETFramework,v4.5.1</PostSharpNativeFrameworkMoniker>
<PostSharpDisableSystemBindingPolicies Condition="'$(PostSharpDisableSystemBindingPolicies)' == '' AND '$(_PostSharpTargetFrameworkIdentifier)'!='.NETFramework'">True</PostSharpDisableSystemBindingPolicies>
</PropertyGroup>
<PropertyGroup Condition="'@(_PostSharp30NetPortableReferences)'!='' AND '@(_PostSharp30NetFrameworkReferences)'==''">
<!--If we have only a reference to the portable profile of PostSharp.dll, we force usage of this profile for this library. -->
<PostSharpLibraryProfile>3</PostSharpLibraryProfile>
</PropertyGroup>
<ItemGroup>
<!--<PostSharpDirectReflectionMapFiles Include="$(PostSharp30ToolDirectory)\BindingMaps\$(PostSharpNativeFrameworkMoniker)\*.AssemblyMap"/> -->
<PostSharpReferenceMapFiles Include="$(PostSharp30ToolDirectory)\BindingMaps\$(PostSharpTargetFrameworkMoniker)\*.AssemblyMap"/>
<PostSharpInverseReflectionMapDirectories Include="$(PostSharp30ToolDirectory)\BindingMaps\$(PostSharpTargetFrameworkMoniker)\$(PostSharpNativeFrameworkMoniker)"/>
</ItemGroup>
<Message Text="Using reference map files: @(PostSharpReferenceMapFiles)" Importance="Low"/>
<Message Text="Using reflection direct map files: @(PostSharpDirectReflectionMapFiles)." Importance="Low"/>
<Message Text="Using reflection inverse map directories: @(PostSharpInverseReflectionMapDirectories)." Importance="Low"/>
<!-- Move the old intermediate files -->
<MakeDir Directories="$(PostSharpBackupDirectory)"/>
<CreateProperty Value="@(IntermediateAssembly->'$(PostSharpBackupDirectory)\%(Filename)%(Extension)')">
<Output TaskParameter="Value" PropertyName="_PostSharp30InputBin"/>
</CreateProperty>
<CreateProperty Value="@(IntermediateAssembly->'$(PostSharpBackupDirectory)\%(Filename).pdb')">
<Output TaskParameter="Value" PropertyName="_PostSharp30InputPdb"/>
</CreateProperty>
<CreateProperty Value="@(IntermediateAssembly->'$(PostSharpBackupDirectory)\%(Filename)%(Extension).mdb')">
<Output TaskParameter="Value" PropertyName="_PostSharp30InputMdb"/>
</CreateProperty>
<PostSharp30MoveWithRetry Source="$(_PostSharp30IntermediateAssemblyFullPath)" Destination="$(_PostSharp30InputBin)" />
<PostSharp30MoveWithRetry Source="@(IntermediateAssembly->'%(RelativeDir)%(Filename).pdb')" Destination="$(_PostSharp30InputPdb)"
Condition="Exists('@(IntermediateAssembly->'%(RelativeDir)%(Filename).pdb')')"/>
<PostSharp30MoveWithRetry Source="$(_PostSharp30IntermediateAssemblyFullPath).mdb" Destination="$(_PostSharp30InputMdb)"
Condition="Exists('$(_PostSharp30IntermediateAssemblyFullPath).mdb')"/>
<!-- Redefine the properties where FxCop expects the location of the source file. -->
<CreateProperty Value="$(_PostSharp30InputBin)">
<Output TaskParameter="Value" PropertyName="CodeAnalysisInputAssemblyForTask"/>
</CreateProperty>
<CreateProperty Value="$(_PostSharp30InputBin)">
<Output TaskParameter="Value" PropertyName="CodeAnalysisInputAssembly"/>
</CreateProperty>
<!-- If the private key is a PFX, we extract the public key into an SNK file,
because ILASM does not support PFX. ILASM will delay-sign the assembly
using the SNK, and we will resign it after. -->
<PostSharp30CheckPfx KeyFile="$(AssemblyOriginatorKeyFile)" Condition="'$(SignAssembly)' == 'true' And '$(KeyOriginatorFile)' != ''">
<Output TaskParameter="PostSharpKeyFile" PropertyName="_PostSharp30KeyFile"/>
</PostSharp30CheckPfx>
<!-- Prepare properties sent to PostSharp -->
<CreateItem Include="$(ReferencePath);$(PostSharpSearchPath);$(TargetFrameworkDirectory);@(PostSharpSearchPath)">
<Output TaskParameter="Include" ItemName="_PostSharpSearchPathItem"/>
</CreateItem>
<CreateItem Include="$(PostSharpHostConfigurationFile)">
<Output TaskParameter="Include" ItemName="PostSharpHostConfigurationFile"/>
</CreateItem>
<CreateProperty Value="@(_PostSharpSearchPathItem->'%(FullPath)', '|')">
<Output TaskParameter="Value" PropertyName="_ReferencePathAsCommaSeparatedList"/>
</CreateProperty>
<CreateProperty Value="@(_ResolveAssemblyReferenceResolvedFiles->'%(FullPath)', '|')">
<Output TaskParameter="Value" PropertyName="_ResolveAssemblyReferenceResolvedFilesAbsoluteAsCommaSeparatedList" />
</CreateProperty>
<CreateProperty Value="@(IntermediateAssembly->'%(FullPath)','|')">
<Output TaskParameter="Value" PropertyName="_PostSharpOutput"/>
</CreateProperty>
<CreateProperty Value="@(PostSharpAspectProviders->'%(Identity)','|')">
<Output TaskParameter="Value" PropertyName="_PostSharpAspectProviders"/>
</CreateProperty>
<!-- Convert PostSharp properties into an item group so that we can better format them. -->
<CreateProperty Value="
Output=$(_PostSharpOutput);
ReferenceDirectory=$(MSBuildProjectDirectory);
Configuration=$(Configuration);
Platform=$(Platform);
SearchPath=$(OutDir)|$(IntermediateOutputPath)|$(_ReferencePathAsCommaSeparatedList);
IntermediateDirectory=$(PostSharpIntermediateDirectory);
CleanIntermediate=$(PostSharpCleanIntermediate);
MSBuildProjectFullPath=$(MSBuildProjectFullPath);
SignAssembly=$(PostSharpSignAssembly);
PrivateKeyLocation=$(_PostSharp30KeyFile);
PrivateKeyContainer=$(KeyContainerName);
DelaySign=$(DelaySign);
ResolvedReferences=$(_ResolveAssemblyReferenceResolvedFilesAbsoluteAsCommaSeparatedList);
SymbolFile=$(PostSharpSymbolFile);
WriteWeavingSymbols=$(PostSharpWriteWeavingSymbols);
ConstraintVerificationEnabled=$(PostSharpConstraintVerificationEnabled);
TargetFrameworkVersion=$(_PostSharpTargetFrameworkVersion);
TargetFrameworkIdentifier=$(_PostSharpTargetFrameworkIdentifier);
TargetFrameworkProfile=$(TargetFrameworkProfile);
TargetFrameworkMoniker=$(PostSharpTargetFrameworkMoniker);
NativeFrameworkMoniker=$(PostSharpNativeFrameworkMoniker);
PostSharpLibraryProfile=$(PostSharpLibraryProfile);
AspectProviders=$(_PostSharpAspectProviders);
$(PostSharpProperties)">
<Output TaskParameter="Value" PropertyName="PostSharpProperties"/>
</CreateProperty>
<!-- Try find PostSharp solution-level project. -->
<PropertyGroup Condition="'$(SolutionDir)' != '' AND '$(SolutionDir)' != '*Undefined*'">
<PostSharpSolutionProject Condition=" '$(PostSharpSolutionProject)'=='' AND Exists('$(SolutionDir)\$(SolutionName).$(Configuration).$(Platform).pssln') ">$(SolutionDir)\$(SolutionName).$(Configuration).$(Platform).pssln</PostSharpSolutionProject>
<PostSharpSolutionProject Condition=" '$(PostSharpSolutionProject)'=='' AND Exists('$(SolutionDir)\$(SolutionName).$(Configuration).pssln') ">$(SolutionDir)\$(SolutionName).$(Configuration).pssln</PostSharpSolutionProject>
<PostSharpSolutionProject Condition=" '$(PostSharpSolutionProject)'=='' AND Exists('$(SolutionDir)\$(SolutionName).pssln') ">$(SolutionDir)\$(SolutionName).pssln</PostSharpSolutionProject>
</PropertyGroup>
<ItemGroup>
<_PostSharpProject Include="$(PostSharpSolutionProject)" Condition="$(PostSharpSolutionProject)!=''" />
<_PostSharpProject Include="$(PostSharpProject)"/>
</ItemGroup>
<!-- Create our working directory. -->
<MakeDir Directories="$(PostSharpIntermediateDirectory)"/>
<!-- Execute PostSharp. We support both in-process MSBuild task and standalone command line utility. -->
<Message Text="Passing parameters: $(PostSharpProperties)" Importance="low"/>
<PostSharp30 Projects="@(_PostSharpProject)"
Input="$(_PostSharp30InputBin)"
Properties="$(PostSharpProperties)"
AttachDebugger="$(PostSharpAttachDebugger)"
ClientAttachDebugger="$(PostSharpClientAttachDebugger)"
TraceCategories="$(PostSharpTrace)"
DisableReflection="$(PostSharpDisableReflection)"
DisableSystemBindingPolicies="$(PostSharpDisableSystemBindingPolicies)"
Host="$(PostSharpHost)"
TargetPlatform="$(PostSharpTargetPlatform)"
NoLogo="true"
ExpectedMessages="$(PostSharpExpectedMessages)"
IgnoreError="$(PostSharpIgnoreError)"
FailOnUnexpectedMessage="$(PostSharpFailOnUnexpectedMessage)"
License="$(PostSharpLicense)"
DisabledMessages="$(PostSharpDisabledMessages)"
EscalatedMessages="$(PostSharpEscalatedMessages)"
MetricsFile="$(PostSharpMetricsFile)"
ToolDirectory="$(PostSharp30BinDirectory)"
AddIns="@(PostSharpAddIn)"
DirectReflectionMapFiles="@(PostSharpDirectReflectionMapFiles)"
InverseReflectionMapDirectories="@(PostSharpInverseReflectionMapDirectories)"
ReferenceMapFiles="@(PostSharpReferenceMapFiles)"
HostConfigurationFiles="@(PostSharpHostConfigurationFile)"
MSBuildProjectFile="$(MSBuildProjectFullPath)"
>
<Output TaskParameter="ExitCode" PropertyName="PostSharpExitCode"/>
</PostSharp30>
<!-- If PostSharp failed and we are still here, we have to create a dummy output file so that the
build process can continue. -->
<Touch Files="$(_PostSharpOutput)" ForceTouch="True" AlwaysCreate="True" Condition="'$(PostSharpExitCode)'!='0'" />
<!-- Touch the semaphore file to enable incremental building (with a delay of 1 s
to avoid to post-compile the result of post-compilation during incremental rebuild -->
<PostSharp30TouchWithDelay Files="@(IntermediateAssembly->'%(FullPath).postsharp')"
ReferenceFile="@(IntermediateAssembly)"
Delay="100"
Condition="'$(PostSharpExitCode)'=='0'"/>
<!-- Create a property to remember we are done. -->
<CreateProperty Value="True">
<Output TaskParameter="Value" PropertyName="PostSharp30Completed" />
</CreateProperty>
<!-- Write our files to the list of files written by this build process (for later cleaning) -->
<CreateItem Include="$(PostSharpSymbolFile)" Condition="'$(PostSharpWriteWeavingSymbols)'=='True'" >
<Output TaskParameter="Include" ItemName="FileWritesShareable" />
</CreateItem>
<CreateItem Include="@(IntermediateAssembly->'%(FullPath).postsharp')">
<Output TaskParameter="Include" ItemName="FileWritesShareable" />
</CreateItem>
</Target>
<Target Name="PostSharp30Verify" DependsOnTargets="GetFrameworkPaths"
Condition="'$(PostSharpVerify)'!='' And '$(_PostSharpOutput)'!=''">
<Exec Command="&quot;$(FrameworkSDKDir)bin\peverify&quot; &quot;$(OutDir)$(TargetFileName)&quot; /nologo /verbose"
Condition="'$(FrameworkSDKDir)'!=''"/>
<Warning Text="PostSharp could not be verified because the .NET Framework SDK is not installed."
Condition="'$(FrameworkSDKDir)'==''"/>
</Target>
<Target Name="PostSharp30Clean">
<RemoveDir Directories="$(PostSharpBackupDirectory)" ContinueOnError="true" Condition="Exists('$(PostSharpBackupDirectory)')"/>
<RemoveDir Directories="$(PostSharpIntermediateDirectory)" ContinueOnError="true" Condition="Exists('$(PostSharpIntermediateDirectory)')"/>
</Target>
<Target Name="PostSharp30InstallVsx" Condition=" '$(BuildingInsideVisualStudio)'=='True' AND '$(PostSharpSkipVsxCheck)'=='' " DependsOnTargets="PostSharp30ExtractBinaries">
<!-- Check that the VSX is installed if MSBuild is running under Visual Studio.
The VSX is a weak requirement, ensuring optimal user experience. Strictly speaking, build is possible without the user interface.
You can disable this check by setting the MSBuild property PostSharpSkipVsxCheck=True. -->
<PostSharp30InstallVsx/>
</Target>
<Target Name="PostSharpInspect" DependsOnTargets="$(PostSharpInspectDependsOn)"/>
<!-- Support for Code Contracts -->
<Import Condition="'$(CodeContractsImported)' != 'true' And '$(CodeContractsAssemblyMode)' != '' AND Exists('$(CodeContractsInstallDir)\MsBuild\v4.0\Microsoft.CodeContracts.targets')" Project="$(CodeContractsInstallDir)\MsBuild\v4.0\Microsoft.CodeContracts.targets" />
<!-- Introduces PostSharp in the chain of compilation targets -->
<PropertyGroup Condition="'$(InjectPostSharp30)' != 'False'">
<PostSharp30DependsOn>
$(PostSharp30DependsOn);
PostSharp30ExtractBinaries;
PostSharp30InstallVsx;
</PostSharp30DependsOn>
<PostSharpInspectDependsOn>
$(PostSharpInspectDependsOn);
PostSharp30InspectConstants;
PostSharp30InspectReferences;
PostSharp30DisablePreviousVersions
</PostSharpInspectDependsOn>
<CoreCompileDependsOn>
PostSharpInspect;
PostSharp30DefineConstant;
$(CoreCompileDependsOn)
</CoreCompileDependsOn>
<CompileDependsOn>
PostSharp30TimestampBeforeCompile;
$(CompileDependsOn);
PostSharp30TimestampAfterCompile;
PostSharp30
</CompileDependsOn>
<BuildDependsOn>
$(BuildDependsOn);
PostSharp30Verify
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
PostSharp30Clean
</CleanDependsOn>
</PropertyGroup>
<!-- PostSharp must run before Code Contracts -->
<PropertyGroup Condition="'$(CodeContractsAssemblyMode)' != '' AND '$(CodeContractsImported)'=='True'">
<PostSharp30DependsOn>
$(PostSharp30DependsOn);
CodeContractInstrument;
CodeContractsPerformCodeAnalysis
</PostSharp30DependsOn>
<CodeContractCodeAnalysisRunInBackground>False</CodeContractCodeAnalysisRunInBackground>
</PropertyGroup>
<PropertyGroup>
<PrepareForRunDependsOn>
$(PrepareForRunDependsOn);
PostSharp30ChangeAppConfig
</PrepareForRunDependsOn>
</PropertyGroup>
<!-- If we have code analysis, we have to change the PrepareForRun chain so that
we copy output files to the backup directory before code analysis runs. -->
<PropertyGroup Condition="'$(RunCodeAnalysis)'=='true' or '$(RunCodeAnalysisOnce)'=='true'">
<RunCodeAnalysisDependsOn>
$(RunCodeAnalysisDependsOn);PostSharp30CopyOutputToCodeAnalysis
</RunCodeAnalysisDependsOn>
</PropertyGroup>
<Target Name="PostSharp30CopyOutputToCodeAnalysis" DependsOnTargets="CopyFilesToOutputDirectory" Condition="'$(PostSharp30Completed)'=='True'">
<!-- We copy all files from the output directory to the backup directory,
except the output assembly and pdb themselves (and xml serializers, since they could be invalid) -->
<CreateItem Include="$(OutDir)*.dll;$(OutDir)*.exe;$(OutDir)*.pdb"
Exclude="$(OutDir)*.vshost.*;
$(OutDir)$(TargetName).pdb;
$(OutDir)$(TargetFileName);
$(OutDir)$(_SGenDllName)">
<Output ItemName="_PostSharpCompanionFiles" TaskParameter="Include"/>
</CreateItem>
<Message Text="Copying file(s) @(_PostSharpCompanionFiles) to $(PostSharpBackupDirectory)" Importance="low" Condition="'@(_PostSharpCompanionFiles)'!=''"/>
<PostSharp30CopyWithRetry SourceFiles="@(_PostSharpCompanionFiles)" DestinationFolder="$(PostSharpBackupDirectory)" UseHardLink="$(PostSharpUseHardLink)"/>
</Target>
<Target Name="PostSharp30ExtractBinaries" Condition="'$(_PostSharpExtractDirectory)'!='' And !Exists('$(_PostSharpExtractDirectory)\bin.$(PostSharpBuild)\PostSharp.Sdk.dll')">
<MakeDir Directories="$(_PostSharpExtractDirectory)" />
<Exec Command="&quot;$(MSbuildThisFileDirectory)PostSharp-Tools.exe&quot; -o&quot;$(_PostSharpExtractDirectory)&quot; -y"/>
</Target>
<Target Name="PostSharp30ChangeAppConfig" DependsOnTargets="CopyFilesToOutputDirectory" Condition="'$(OutputType)'=='exe'">
<PostSharp30ChangeAppConfig ConfigFile="$(OutDir)$(TargetFileName).config" Version="$(PostSharp30Version).9"/>
</Target>
</Project>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="PostSharp.properties"/>
<!-- Import project overrides -->
<Import Project="$(MSBuildProjectDirectory)\..\..\..\..\..\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\..\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\..\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\..\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\PostSharp.Custom.targets')"/>
<Import Project="$(MSBuildProjectDirectory)\PostSharp.Custom.targets" Condition="Exists('$(MSBuildProjectDirectory)\PostSharp.Custom.targets')"/>
<PropertyGroup>
<_PostSharp30ImportedTwice Condition="'$(PostSharp30Imported)'=='True'">True</_PostSharp30ImportedTwice>
<PostSharp30Imported>True</PostSharp30Imported>
<!-- Determines whether a PostSharp project is named after the principal project. -->
<PostSharpProject Condition=" '$(PostSharpProject)'=='' AND Exists('$(MSBuildProjectDirectory)\$(MSBuildProjectName).$(Configuration).$(Platform).psproj') ">$(MSBuildProjectDirectory)\$(MSBuildProjectName).$(Configuration).$(Platform).psproj</PostSharpProject>
<PostSharpProject Condition=" '$(PostSharpProject)'=='' AND Exists('$(MSBuildProjectDirectory)\$(MSBuildProjectName).$(Configuration).psproj') ">$(MSBuildProjectDirectory)\$(MSBuildProjectName).$(Configuration).psproj</PostSharpProject>
<PostSharpProject Condition=" '$(PostSharpProject)'=='' AND Exists('$(MSBuildProjectDirectory)\$(MSBuildProjectName).psproj') ">$(MSBuildProjectDirectory)\$(MSBuildProjectName).psproj</PostSharpProject>
<!-- PostSharp properties -->
<PostSharpBuild Condition="'$(PostSharpBuild)'==''">Release</PostSharpBuild>
<PostSharpIgnoreError Condition="'$(PostSharpIgnoreError)'==''">False</PostSharpIgnoreError>
<PostSharpFailOnUnexpectedMessage Condition="'$(PostSharpFailOnUnexpectedMessage)'==''">False</PostSharpFailOnUnexpectedMessage>
<PostSharpIntermediateDirectory Condition="'$(PostSharpIntermediateDirectory)'==''">$(IntermediateOutputPath)PostSharp</PostSharpIntermediateDirectory>
<PostSharpBackupDirectory Condition="'$(PostSharpBackupDirectory)'==''">$(IntermediateOutputPath)Before-PostSharp</PostSharpBackupDirectory>
<PostSharpCleanIntermediate Condition="'$(PostSharpCleanIntermediate)'==''">False</PostSharpCleanIntermediate>
<PostSharpSignAssembly Condition="'$(PostSharpSignAssembly)'=='' AND '$(SignAssembly)'!=''">$(SignAssembly)</PostSharpSignAssembly>
<PostSharpSignAssembly Condition="'$(PostSharpSignAssembly)'==''">False</PostSharpSignAssembly>
<PostSharpAttachDebugger Condition="'$(PostSharpAttachDebugger)'==''">False</PostSharpAttachDebugger>
<PostSharpWriteWeavingSymbols Condition="'$(PostSharpWriteWeavingSymbols)'==''">True</PostSharpWriteWeavingSymbols>
<PostSharpSymbolFile Condition="'$(PostSharpSymbolFile)'==''">$(OutDir)$(AssemblyName).pssym</PostSharpSymbolFile>
<PostSharpClientAttachDebugger Condition="'$(PostSharpClientAttachDebugger)'==''">False</PostSharpClientAttachDebugger>
<PostSharpTargetFrameworkVersion Condition="'$(PostSharpTargetFrameworkVersion)'=='' OR '$(PostSharpTargetFrameworkVersion)'=='2.0' ">4.0</PostSharpTargetFrameworkVersion>
<PostSharpTargetProcessor Condition="'$(PostSharpTargetProcessor)'=='' AND ( '$(PlatformTarget)'=='AMD64' OR '$(PlatformTarget)'=='x64')">x64</PostSharpTargetProcessor>
<PostSharpTargetProcessor Condition="'$(PostSharpTargetProcessor)'==''">x86</PostSharpTargetProcessor>
<PostSharpTargetPlatform Condition="'$(PostSharpTargetPlatform)'==''">$(PostSharpTargetFrameworkVersion)-$(PostSharpTargetProcessor)</PostSharpTargetPlatform>
<PostSharpOptimizationMode Condition="'$(PostSharpOptimizationMode)'=='' AND '$(Optimize)'!='True'">OptimizeForBuildTime</PostSharpOptimizationMode>
<PostSharpOptimizationMode Condition="'$(PostSharpOptimizationMode)'==''">OptimizeForSize</PostSharpOptimizationMode>
<PostSharpUseHardLink Condition="'$(PostSharpUseHardLink)'==''">True</PostSharpUseHardLink>
<PostSharpHost Condition="'$(PostSharpHost)'=='' AND '$(PostSharpUsePipeServer)'=='False'">Native</PostSharpHost>
<PostSharpHost Condition="'$(PostSharpHost)'==''">PipeServer</PostSharpHost>
<PostSharpConstraintVerificationEnabled Condition="'$(PostSharpConstraintVerificationEnabled)'==''">True</PostSharpConstraintVerificationEnabled>
<SkipPostSharp Condition="'$(SkipPostSharp)'==''">False</SkipPostSharp>
<!-- Sets the tool directory in PostSharp's own development environment -->
<PostSharp30ToolDirectory Condition="'$(PostSharp30ToolDirectory)'=='' AND Exists('$(MSBuildThisFileDirectory)\bin.$(PostSharpBuild)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll')">$(MSBuildThisFileDirectory)</PostSharp30ToolDirectory>
</PropertyGroup>
<PropertyGroup Condition="'$(PostSharp30ToolDirectory)'==''">
<!--Set extract directory for Windows Vista and later -->
<PostSharpExtractDirectory Condition="'$(PostSharpExtractDirectory)'=='' AND '$(PROGRAMDATA)'!=''">$(PROGRAMDATA)</PostSharpExtractDirectory>
<!--Set extract directory for Windows XP -->
<PostSharpExtractDirectory Condition="'$(PostSharpExtractDirectory)'=='' AND '$(LOCALAPPDATA)'!=''">$(LOCALAPPDATA)</PostSharpExtractDirectory>
<!--Fallback to TEMP directory -->
<PostSharpExtractDirectory Condition="'$(PostSharpExtractDirectory)'==''">$(TEMP)</PostSharpExtractDirectory>
<_PostSharpExtractDirectory>$(PostSharpExtractDirectory)\PostSharp\$(PostSharp30Version)</_PostSharpExtractDirectory>
<PostSharp30ToolDirectory>$(_PostSharpExtractDirectory)</PostSharp30ToolDirectory>
</PropertyGroup>
<PropertyGroup>
<PostSharp30BinDirectory>$(PostSharp30ToolDirectory)\bin.$(PostSharpBuild)</PostSharp30BinDirectory>
</PropertyGroup>
<!-- Import tasks -->
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30" />
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30TouchWithDelay" />
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30CheckPfx" />
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30GetDirectory" />
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30MoveWithRetry"/>
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30CopyWithRetry"/>
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30Shutdown"/>
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30ParseAssemblyNames"/>
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30InstallVsx"/>
<UsingTask AssemblyFile="$(PostSharp30BinDirectory)\PostSharp.MSBuild.v$(PostSharp30Version).$(PostSharpBuild).dll" TaskName="PostSharp.MSBuild.PostSharp30ChangeAppConfig"/>
</Project>

View File

@@ -0,0 +1,238 @@
param($installPath, $toolsPath, $package, $project)
function PathToUri([string] $path)
{
return new-object Uri('file://' + $path.Replace("%","%25").Replace("#","%23").Replace("$","%24").Replace("+","%2B").Replace(",","%2C").Replace("=","%3D").Replace("@","%40").Replace("~","%7E").Replace("^","%5E"))
}
function UriToPath([System.Uri] $uri)
{
return [System.Uri]::UnescapeDataString( $uri.ToString() ).Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar)
}
$targetsFile = [System.IO.Path]::Combine($toolsPath, 'PostSharp.targets')
# Need to load MSBuild assembly if it's not loaded yet.
Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
# Grab the loaded MSBuild project for the project
$msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1
# Make the path to the targets file relative.
$projectUri = PathToUri $project.FullName
$targetUri = PathToUri $targetsFile
$relativePath = UriToPath $projectUri.MakeRelativeUri($targetUri)
# Remove elements from previous installations or versions.
$itemsToRemove = @()
$itemsToRemove += $msbuild.Xml.Properties | Where-Object {$_.Name.ToLowerInvariant() -eq "dontimportpostsharp" }
$itemsToRemove += $msbuild.Xml.Properties | Where-Object {$_.Name.ToLowerInvariant().EndsWith("postsharpignoredpackages") }
$itemsToRemove += $msbuild.Xml.Imports | Where-Object {$_.Project.ToLowerInvariant().EndsWith("postsharp.targets") }
$itemsToRemove += $msbuild.Xml.Targets | Where-Object {$_.Name.ToLowerInvariant() -eq "ensurepostsharpimported" }
$itemsToRemove += $project.Object.References | Where-Object {$_.Identity.ToLowerInvariant().StartsWith("postsharp.public") }
$itemsToRemove += $project.Object.References | Where-Object {$_.Identity.ToLowerInvariant().StartsWith("postsharp.laos") }
$itemsToRemove += $msbuild.Xml.Targets | Where-Object {$_.Name.ToLowerInvariant() -eq "ensurepostsharpimported" }
if ($itemsToRemove -and $itemsToRemove.length)
{
foreach ($itemToRemove in $itemsToRemove)
{
$msbuild.Xml.RemoveChild($itemToRemove) | out-null
}
}
# Set property DontImportPostSharp to prevent locally-installed previous versions of PostSharp to interfere.
$msbuild.Xml.AddProperty( "DontImportPostSharp", "True" ) | Out-Null
# Add import to PostSharp.targets
$import = $msbuild.Xml.AddImport($relativePath)
$import.set_Condition( "Exists('$relativePath')" ) | Out-Null
[string]::Format("Added import of '{0}'.", $relativePath )
# Add a target to fail the build when our targets are not imported
$target = $msbuild.Xml.AddTarget("EnsurePostSharpImported")
$target.BeforeTargets = "BeforeBuild"
$target.Condition = "'`$(PostSharp30Imported)' == ''"
# if the targets don't exist at the time the target runs, package restore didn't run
$errorTask = $target.AddTask("Error")
$errorTask.Condition = "!Exists('$relativePath')"
$errorTask.SetParameter("Text", "This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://www.postsharp.net/links/nuget-restore.");
# if the targets exist at the time the target runs, package restore ran but the build didn't import the targets.
$errorTask = $target.AddTask("Error")
$errorTask.Condition = "Exists('$relativePath')"
$errorTask.SetParameter("Text", "The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://www.postsharp.net/links/nuget-restore.");
$project.Save()
$project.Object.Refresh()
# Asynchronously run setup wizard if necessary. Since the setup wizard is compressed in PostSharp-Tools.exe, the easiest is to run it through MSBuild.
$msbuildExe = [System.IO.Path]::Combine( [System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory(), "msbuild.exe")
"Starting $msbuildExe"
Start-Process -FilePath $msbuildExe -ArgumentList @("""$toolsPath\PostSharp.targets""", "/t:PostSharp30InstallVsx /p:BuildingInsideVisualStudio=True") -WindowStyle Hidden
# SIG # Begin signature block
# MIId/AYJKoZIhvcNAQcCoIId7TCCHekCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUO//ssc5LpSyEsxuLHBNm3LCO
# McGgghjsMIID7jCCA1egAwIBAgIQfpPr+3zGTlnqS5p31Ab8OzANBgkqhkiG9w0B
# AQUFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIG
# A1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhh
# d3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
# Q0EwHhcNMTIxMjIxMDAwMDAwWhcNMjAxMjMwMjM1OTU5WjBeMQswCQYDVQQGEwJV
# UzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xMDAuBgNVBAMTJ1N5bWFu
# dGVjIFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EgLSBHMjCCASIwDQYJKoZIhvcN
# AQEBBQADggEPADCCAQoCggEBALGss0lUS5ccEgrYJXmRIlcqb9y4JsRDc2vCvy5Q
# WvsUwnaOQwElQ7Sh4kX06Ld7w3TMIte0lAAC903tv7S3RCRrzV9FO9FEzkMScxeC
# i2m0K8uZHqxyGyZNcR+xMd37UWECU6aq9UksBXhFpS+JzueZ5/6M4lc/PcaS3Er4
# ezPkeQr78HWIQZz/xQNRmarXbJ+TaYdlKYOFwmAUxMjJOxTawIHwHw103pIiq8r3
# +3R8J+b3Sht/p8OeLa6K6qbmqicWfWH3mHERvOJQoUvlXfrlDqcsn6plINPYlujI
# fKVOSET/GeJEB5IL12iEgF1qeGRFzWBGflTBE3zFefHJwXECAwEAAaOB+jCB9zAd
# BgNVHQ4EFgQUX5r1blzMzHSa1N197z/b7EyALt0wMgYIKwYBBQUHAQEEJjAkMCIG
# CCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMBIGA1UdEwEB/wQIMAYB
# Af8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NybC50aGF3dGUuY29tL1Ro
# YXd0ZVRpbWVzdGFtcGluZ0NBLmNybDATBgNVHSUEDDAKBggrBgEFBQcDCDAOBgNV
# HQ8BAf8EBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0y
# MDQ4LTEwDQYJKoZIhvcNAQEFBQADgYEAAwmbj3nvf1kwqu9otfrjCR27T4IGXTdf
# plKfFo3qHJIJRG71betYfDDo+WmNI3MLEm9Hqa45EfgqsZuwGsOO61mWAK3ODE2y
# 0DGmCFwqevzieh1XTKhlGOl5QGIllm7HxzdqgyEIjkHq3dlXPx13SYcqFgZepjhq
# IhKjURmDfrYwggSjMIIDi6ADAgECAhAOz/Q4yP6/NW4E2GqYGxpQMA0GCSqGSIb3
# DQEBBQUAMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh
# dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD
# QSAtIEcyMB4XDTEyMTAxODAwMDAwMFoXDTIwMTIyOTIzNTk1OVowYjELMAkGA1UE
# BhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTQwMgYDVQQDEytT
# eW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIFNpZ25lciAtIEc0MIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomMLOUS4uyOnREm7Dv+h8GEKU5Ow
# mNutLA9KxW7/hjxTVQ8VzgQ/K/2plpbZvmF5C1vJTIZ25eBDSyKV7sIrQ8Gf2Gi0
# jkBP7oU4uRHFI/JkWPAVMm9OV6GuiKQC1yoezUvh3WPVF4kyW7BemVqonShQDhfu
# ltthO0VRHc8SVguSR/yrrvZmPUescHLnkudfzRC5xINklBm9JYDh6NIipdC6Anqh
# d5NbZcPuF3S8QYYq3AhMjJKMkS2ed0QfaNaodHfbDlsyi1aLM73ZY8hJnTrFxeoz
# C9Lxoxv0i77Zs1eLO94Ep3oisiSuLsdwxb5OgyYI+wu9qU+ZCOEQKHKqzQIDAQAB
# o4IBVzCCAVMwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO
# BgNVHQ8BAf8EBAMCB4AwcwYIKwYBBQUHAQEEZzBlMCoGCCsGAQUFBzABhh5odHRw
# Oi8vdHMtb2NzcC53cy5zeW1hbnRlYy5jb20wNwYIKwYBBQUHMAKGK2h0dHA6Ly90
# cy1haWEud3Muc3ltYW50ZWMuY29tL3Rzcy1jYS1nMi5jZXIwPAYDVR0fBDUwMzAx
# oC+gLYYraHR0cDovL3RzLWNybC53cy5zeW1hbnRlYy5jb20vdHNzLWNhLWcyLmNy
# bDAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMjAdBgNV
# HQ4EFgQURsZpow5KFB7VTNpSYxc/Xja8DeYwHwYDVR0jBBgwFoAUX5r1blzMzHSa
# 1N197z/b7EyALt0wDQYJKoZIhvcNAQEFBQADggEBAHg7tJEqAEzwj2IwN3ijhCcH
# bxiy3iXcoNSUA6qGTiWfmkADHN3O43nLIWgG2rYytG2/9CwmYzPkSWRtDebDZw73
# BaQ1bHyJFsbpst+y6d0gxnEPzZV03LZc3r03H0N45ni1zSgEIKOq8UvEiCmRDoDR
# EfzdXHZuT14ORUZBbg2w6jiasTraCXEQ/Bx5tIB7rGn0/Zy2DBYr8X9bCT2bW+IW
# yhOBbQAuOA2oKY8s4bL0WqkBrxWcLC9JG9siu8P+eJRRw4axgohd8D20UaF5Mysu
# e7ncIAkTcetqGVvP6KUwVyyJST+5z3/Jvz4iaGNTmr1pdKzFHTx/kuDDvBzYBHUw
# ggTTMIIDu6ADAgECAhAY2tGeJn3ou0ohWM3MaztKMA0GCSqGSIb3DQEBBQUAMIHK
# MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT
# FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlT
# aWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZl
# cmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRo
# b3JpdHkgLSBHNTAeFw0wNjExMDgwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
# CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
# cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWdu
# LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
# aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
# dHkgLSBHNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8kCAgpejWe
# YAyq50s7Ttx8vDxFHLsr4P4pAvlXCKNkhRUn9fGtyDGJXSLoKqqmQrOP+LlVt7G3
# S7P+j34HV+zvQ9tmYhVhz2ANpNje+ODDYgg9VBPrScpZVIUm5SuPG5/r9aGRwjNJ
# 2ENjalJL0o/ocFFN0Ylpe8dw9rPcEnTbe11LVtOWvxV3obD0oiXyrxySZxjl9AYE
# 75C55ADk3Tq1Gf8CuvQ87uCL6zeL7PTXrPL28D2v3XWRMxkdHEDLdCQZIZPZFP6s
# KlLHj9UESeSNY0eIPGmDy/5HvSt+T8WVrg6d1NFDwGdz4xQIfuU/n3O4MwrPXT80
# h5aK7lPoJRUCAwEAAaOBsjCBrzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
# AwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcG
# BSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJp
# c2lnbi5jb20vdnNsb2dvLmdpZjAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8z
# MTMwDQYJKoZIhvcNAQEFBQADggEBAJMkSjBfYs/YGpgvPercmS29d/aleSI47MSn
# oHgSrWIORXBkxeeXZi2YCX5fr9bMKGXyAaoIGkfe+fl8kloIaSAN2T5tbjwNbtjm
# BpFAGLn4we3f20Gq4JYgyc1kFTiByZTuooQpCxNvjtsM3SUC26SLGUTSQXoFaUpY
# T2DKfoJqCwKqJRc5tdt/54RlKpWKvYbeXoEWgy0QzN79qIIqbSgfDQvE5ecaJhnh
# 9BFvELWV/OdCBTLbzp1RXii2noXTW++lfUVAco63DmsOBvszNUhxuJ0ni8RlXw2G
# dpxEevaVXPZdMggzpFS2GD9oXPJCSoU4VINf0egs8qwR1qjtY2owggVqMIIEUqAD
# AgECAhAMtnr7s7inKYYI4A6UzzU+MA0GCSqGSIb3DQEBBQUAMIG0MQswCQYDVQQG
# EwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWdu
# IFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
# L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMS4wLAYDVQQDEyVWZXJpU2lnbiBD
# bGFzcyAzIENvZGUgU2lnbmluZyAyMDEwIENBMB4XDTExMDYyNDAwMDAwMFoXDTE0
# MDcwMzIzNTk1OVowga0xCzAJBgNVBAYTAkNaMQ8wDQYDVQQIEwZQcmFndWUxDzAN
# BgNVBAcTBlByYWd1ZTEdMBsGA1UEChQUU2hhcnBDcmFmdGVycyBzLnIuby4xPjA8
# BgNVBAsTNURpZ2l0YWwgSUQgQ2xhc3MgMyAtIE1pY3Jvc29mdCBTb2Z0d2FyZSBW
# YWxpZGF0aW9uIHYyMR0wGwYDVQQDFBRTaGFycENyYWZ0ZXJzIHMuci5vLjCCASIw
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK0A6khiBRSzjcckXo8lVbY/TcZH
# K/LT5Gwkg7EyyiBivHnIRsuVNazEu8ka9ZmVHNH+8V0vTlRu9irToZVkOW0TqVc0
# KJxDa9Om32J5aauQ0VWBI13EI4Rzx7x+X6lZv65w7N11bdHjSwOdVZqNIwAH6YvF
# gUa1j8MOKYKTcPUb7Pr6slRRqvWNJaSzc5sKDo2u3ztoM6Mi8ZOLTvlIi2WAu9AO
# JrbJLnIS/SPbgL+A3s1Mt/GquVs3vocaHLg3/6Aol4XKmI/YFcOASD72b9ZfpVTg
# hd61qnQ9IXwtjHCDAkMHIxnyk/hUfXN2W+5EFt0AvGN7j+AY8wW8yoJM5o8CAwEA
# AaOCAXswggF3MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMEAGA1UdHwQ5MDcw
# NaAzoDGGL2h0dHA6Ly9jc2MzLTIwMTAtY3JsLnZlcmlzaWduLmNvbS9DU0MzLTIw
# MTAuY3JsMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHFwMwKjAoBggrBgEFBQcCARYc
# aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTATBgNVHSUEDDAKBggrBgEFBQcD
# AzBxBggrBgEFBQcBAQRlMGMwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz
# aWduLmNvbTA7BggrBgEFBQcwAoYvaHR0cDovL2NzYzMtMjAxMC1haWEudmVyaXNp
# Z24uY29tL0NTQzMtMjAxMC5jZXIwHwYDVR0jBBgwFoAUz5mp6nsm9EvJjo/X8AUm
# 7+PSp50wEQYJYIZIAYb4QgEBBAQDAgQQMBYGCisGAQQBgjcCARsECDAGAQEAAQH/
# MA0GCSqGSIb3DQEBBQUAA4IBAQBy6KC5DX/wo55ppitx2h/f8UxWmNsHvvArhQKQ
# zSfYtQYQ8fueV3FYaC/9vkd1Ard35A3AsT1UpLueZ4NVXA4ltqKeXM5F6e+hPWe5
# nc5zkDr8WFrLqjsPjXc9HiHpoQm+yZ9Lnc/wkA+eHvrLp+Dml5XJWOvbzHf9vWLz
# SiEaqI2miA6yzNcSZmALzaner1j3AjaMU8Omr0UvsIpJwoJVDFWopNzCJG7ovJwh
# ajBy1mthHS/l1pOoWa2D/GffHmseDgltdlwjVZ3EnUQ4HN8cZ7vSB/re1hzPskC5
# QLajNvHRjOsnjr4ZfGWZmDq3ZQ2E4mTyYXlIWFI4Yhh9G9XuMIIGCjCCBPKgAwIB
# AgIQUgDlqiVW/BqG7ZbJ1EszxzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UEBhMC
# VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
# cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAt
# IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFz
# cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUw
# HhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtDELMAkGA1UEBhMCVVMx
# FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
# dCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu
# dmVyaXNpZ24uY29tL3JwYSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3Mg
# MyBDb2RlIFNpZ25pbmcgMjAxMCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
# AQoCggEBAPUjS16l14q7MunUV/fv5Mcmfq0ZmP6onX2U9jZrENd1gTB/BGh/yyt1
# Hs0dCIzfaZSnN6Oce4DgmeHuN01fzjsU7obU0PUnNbwlCzinjGOdF6MIpauw+81q
# YoJM1SHaG9nx44Q7iipPhVuQAU/Jp3YQfycDfL6ufn3B3fkFvBtInGnnwKQ8PEEA
# Pt+W5cXklHHWVQHHACZKQDy1oSapDKdtgI6QJXvPvz8c6y+W+uWHd8a1VrJ6O1Qw
# UxvfYjT/HtH0WpMoheVMF05+W/2kk5l/383vpHXv7xX2R+f4GXLYLjQaprSnTH69
# u08MPVfxMNamNo7WgHbXGS6lzX40LYkCAwEAAaOCAf4wggH6MBIGA1UdEwEB/wQI
# MAYBAf8CAQAwcAYDVR0gBGkwZzBlBgtghkgBhvhFAQcXAzBWMCgGCCsGAQUFBwIB
# FhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vY3BzMCoGCCsGAQUFBwICMB4aHGh0
# dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwDgYDVR0PAQH/BAQDAgEGMG0GCCsG
# AQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l
# 0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92
# c2xvZ28uZ2lmMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24u
# Y29tL3BjYTMtZzUuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
# cDovL29jc3AudmVyaXNpZ24uY29tMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
# BQcDAzAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItODAd
# BgNVHQ4EFgQUz5mp6nsm9EvJjo/X8AUm7+PSp50wHwYDVR0jBBgwFoAUf9Nlp8Ld
# 7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFYi5jSkxGHLSLkBrVao
# ZA/ZjJHEu8wM5a16oCJ/30c4Si1s0X9xGnzscKmx8E/kDwxT+hVe/nSYSSSFgSYc
# kRRHsExjjLuhNNTGRegNhSZzA9CpjGRt3HGS5kUFYBVZUTn8WBRr/tSk7XlrCAxB
# cuc3IgYJviPpP0SaHulhncyxkFz8PdKNrEI9ZTbUtD1AKI+bEM8jJsxLIMuQH12M
# TDTKPNjlN9ZvpSC9NOsm2a4N58Wa96G0IZEzb4boWLslfHQOWP51G2M/zjF8m48b
# lp7FU3aEW5ytkfqs7ZO6XcghU8KCU2OvEg1QhxEbPVRSloosnD2SGgiaBS7Hk6VI
# kdMxggR6MIIEdgIBATCByTCBtDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlT
# aWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYD
# VQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw
# YSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3MgMyBDb2RlIFNpZ25pbmcg
# MjAxMCBDQQIQDLZ6+7O4pymGCOAOlM81PjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGC
# NwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUk51/HNXO
# wIDJhsxApDyv6Ne9K5gwDQYJKoZIhvcNAQEBBQAEggEATtMojnzLWW1Wn06aNor5
# vSEDUSo6BY3x8S38imYkHccVVjvTEJkFrS+gjlEP1McaUZO8Th6FDg22nyrEqAR/
# DvL9C0Bj547YPjubdE0C+KUizVVQxFnvPyBhNHFezwFSjCBJp8ECNNsG/4EXRgxq
# 7yFp721kYlWRSijT2u0ZdZD5xw+rpyj+gIm82NH0bTG1CeQ79hcpiDmCMUldxgkV
# YRVHoyCj5YAMmVkfUNOfgrNheB7Td1m1K9m+7FWgzLkNYIQ8t3g/vThrs7NPvkkQ
# rFWPyJsTETlL0y7PCsk2dWBLEAGrUnRnJFPi0VGh9lmCd+LBlAAVPJCtFPzdwUGW
# MKGCAgswggIHBgkqhkiG9w0BCQYxggH4MIIB9AIBATByMF4xCzAJBgNVBAYTAlVT
# MR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnU3ltYW50
# ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBDQSAtIEcyAhAOz/Q4yP6/NW4E2GqY
# GxpQMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG
# SIb3DQEJBTEPFw0xNDAxMDcxNTAyNTRaMCMGCSqGSIb3DQEJBDEWBBR1STbRZhg4
# 9+2yQuAc1iNe6amcUzANBgkqhkiG9w0BAQEFAASCAQB9zyt1Af1Dj5MGXYFGAFuN
# cBDD8Y7NXVw2R/ktlbyt3BSgsNDFUk8QYCZRGTh6Y0zIkDYug1b5gK3D19kY54Ic
# p+CM5hVdeX4pjW2omneLQ36Dod8vLV7TqLaHPgnA++0VqI32QmSplKPSjtSCX38C
# Vfi1hvUuIOCdWdsNFicMWWWhj0FLNW+DJcv2SOLQonqDXKJ4He1s/nH/pp91O0/O
# i5qVCrqfQ4H3xxVElB+/m+DPCBmHBD5We4wLtp28sbXZwJl53eCCI8TyXpGL0OJ6
# 0Q61Dw6lxaa45kLWuF0UpyDJRRBJ3TBFZX5IxIYnYG21VQ57AP7l3hOMTc0XMSm6
# SIG # End signature block

View File

@@ -0,0 +1,190 @@
param($installPath, $toolsPath, $package, $project)
$targetsFile = [System.IO.Path]::Combine($toolsPath, 'PostSharp.targets')
# Need to load MSBuild assembly if it's not loaded yet.
Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
# Grab the loaded MSBuild project for the project
$msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1
$itemsToRemove = @()
# Remove stuff from the project.
$itemsToRemove += $msbuild.Xml.Properties | Where-Object {$_.Name.ToLowerInvariant() -eq "dontimportpostsharp" }
$itemsToRemove += $msbuild.Xml.Imports | Where-Object { $_.Project.ToLowerInvariant().EndsWith("postsharp.targets") }
$itemsToRemove += $msbuild.Xml.Targets | Where-Object {$_.Name.ToLowerInvariant() -eq "ensurepostsharpimported" }
if ($itemsToRemove -and $itemsToRemove.length)
{
foreach ($itemToRemove in $itemsToRemove)
{
$msbuild.Xml.RemoveChild($itemToRemove) | out-null
}
$project.Save()
$project.Object.Refresh()
}
# SIG # Begin signature block
# MIId/AYJKoZIhvcNAQcCoIId7TCCHekCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU1QBeFOO+TvIrYZo4Daos0vX+
# NQygghjsMIID7jCCA1egAwIBAgIQfpPr+3zGTlnqS5p31Ab8OzANBgkqhkiG9w0B
# AQUFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIG
# A1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhh
# d3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
# Q0EwHhcNMTIxMjIxMDAwMDAwWhcNMjAxMjMwMjM1OTU5WjBeMQswCQYDVQQGEwJV
# UzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xMDAuBgNVBAMTJ1N5bWFu
# dGVjIFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EgLSBHMjCCASIwDQYJKoZIhvcN
# AQEBBQADggEPADCCAQoCggEBALGss0lUS5ccEgrYJXmRIlcqb9y4JsRDc2vCvy5Q
# WvsUwnaOQwElQ7Sh4kX06Ld7w3TMIte0lAAC903tv7S3RCRrzV9FO9FEzkMScxeC
# i2m0K8uZHqxyGyZNcR+xMd37UWECU6aq9UksBXhFpS+JzueZ5/6M4lc/PcaS3Er4
# ezPkeQr78HWIQZz/xQNRmarXbJ+TaYdlKYOFwmAUxMjJOxTawIHwHw103pIiq8r3
# +3R8J+b3Sht/p8OeLa6K6qbmqicWfWH3mHERvOJQoUvlXfrlDqcsn6plINPYlujI
# fKVOSET/GeJEB5IL12iEgF1qeGRFzWBGflTBE3zFefHJwXECAwEAAaOB+jCB9zAd
# BgNVHQ4EFgQUX5r1blzMzHSa1N197z/b7EyALt0wMgYIKwYBBQUHAQEEJjAkMCIG
# CCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMBIGA1UdEwEB/wQIMAYB
# Af8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NybC50aGF3dGUuY29tL1Ro
# YXd0ZVRpbWVzdGFtcGluZ0NBLmNybDATBgNVHSUEDDAKBggrBgEFBQcDCDAOBgNV
# HQ8BAf8EBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0y
# MDQ4LTEwDQYJKoZIhvcNAQEFBQADgYEAAwmbj3nvf1kwqu9otfrjCR27T4IGXTdf
# plKfFo3qHJIJRG71betYfDDo+WmNI3MLEm9Hqa45EfgqsZuwGsOO61mWAK3ODE2y
# 0DGmCFwqevzieh1XTKhlGOl5QGIllm7HxzdqgyEIjkHq3dlXPx13SYcqFgZepjhq
# IhKjURmDfrYwggSjMIIDi6ADAgECAhAOz/Q4yP6/NW4E2GqYGxpQMA0GCSqGSIb3
# DQEBBQUAMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh
# dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD
# QSAtIEcyMB4XDTEyMTAxODAwMDAwMFoXDTIwMTIyOTIzNTk1OVowYjELMAkGA1UE
# BhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTQwMgYDVQQDEytT
# eW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIFNpZ25lciAtIEc0MIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomMLOUS4uyOnREm7Dv+h8GEKU5Ow
# mNutLA9KxW7/hjxTVQ8VzgQ/K/2plpbZvmF5C1vJTIZ25eBDSyKV7sIrQ8Gf2Gi0
# jkBP7oU4uRHFI/JkWPAVMm9OV6GuiKQC1yoezUvh3WPVF4kyW7BemVqonShQDhfu
# ltthO0VRHc8SVguSR/yrrvZmPUescHLnkudfzRC5xINklBm9JYDh6NIipdC6Anqh
# d5NbZcPuF3S8QYYq3AhMjJKMkS2ed0QfaNaodHfbDlsyi1aLM73ZY8hJnTrFxeoz
# C9Lxoxv0i77Zs1eLO94Ep3oisiSuLsdwxb5OgyYI+wu9qU+ZCOEQKHKqzQIDAQAB
# o4IBVzCCAVMwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO
# BgNVHQ8BAf8EBAMCB4AwcwYIKwYBBQUHAQEEZzBlMCoGCCsGAQUFBzABhh5odHRw
# Oi8vdHMtb2NzcC53cy5zeW1hbnRlYy5jb20wNwYIKwYBBQUHMAKGK2h0dHA6Ly90
# cy1haWEud3Muc3ltYW50ZWMuY29tL3Rzcy1jYS1nMi5jZXIwPAYDVR0fBDUwMzAx
# oC+gLYYraHR0cDovL3RzLWNybC53cy5zeW1hbnRlYy5jb20vdHNzLWNhLWcyLmNy
# bDAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMjAdBgNV
# HQ4EFgQURsZpow5KFB7VTNpSYxc/Xja8DeYwHwYDVR0jBBgwFoAUX5r1blzMzHSa
# 1N197z/b7EyALt0wDQYJKoZIhvcNAQEFBQADggEBAHg7tJEqAEzwj2IwN3ijhCcH
# bxiy3iXcoNSUA6qGTiWfmkADHN3O43nLIWgG2rYytG2/9CwmYzPkSWRtDebDZw73
# BaQ1bHyJFsbpst+y6d0gxnEPzZV03LZc3r03H0N45ni1zSgEIKOq8UvEiCmRDoDR
# EfzdXHZuT14ORUZBbg2w6jiasTraCXEQ/Bx5tIB7rGn0/Zy2DBYr8X9bCT2bW+IW
# yhOBbQAuOA2oKY8s4bL0WqkBrxWcLC9JG9siu8P+eJRRw4axgohd8D20UaF5Mysu
# e7ncIAkTcetqGVvP6KUwVyyJST+5z3/Jvz4iaGNTmr1pdKzFHTx/kuDDvBzYBHUw
# ggTTMIIDu6ADAgECAhAY2tGeJn3ou0ohWM3MaztKMA0GCSqGSIb3DQEBBQUAMIHK
# MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT
# FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlT
# aWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZl
# cmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRo
# b3JpdHkgLSBHNTAeFw0wNjExMDgwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
# CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
# cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWdu
# LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
# aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
# dHkgLSBHNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8kCAgpejWe
# YAyq50s7Ttx8vDxFHLsr4P4pAvlXCKNkhRUn9fGtyDGJXSLoKqqmQrOP+LlVt7G3
# S7P+j34HV+zvQ9tmYhVhz2ANpNje+ODDYgg9VBPrScpZVIUm5SuPG5/r9aGRwjNJ
# 2ENjalJL0o/ocFFN0Ylpe8dw9rPcEnTbe11LVtOWvxV3obD0oiXyrxySZxjl9AYE
# 75C55ADk3Tq1Gf8CuvQ87uCL6zeL7PTXrPL28D2v3XWRMxkdHEDLdCQZIZPZFP6s
# KlLHj9UESeSNY0eIPGmDy/5HvSt+T8WVrg6d1NFDwGdz4xQIfuU/n3O4MwrPXT80
# h5aK7lPoJRUCAwEAAaOBsjCBrzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
# AwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcG
# BSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJp
# c2lnbi5jb20vdnNsb2dvLmdpZjAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8z
# MTMwDQYJKoZIhvcNAQEFBQADggEBAJMkSjBfYs/YGpgvPercmS29d/aleSI47MSn
# oHgSrWIORXBkxeeXZi2YCX5fr9bMKGXyAaoIGkfe+fl8kloIaSAN2T5tbjwNbtjm
# BpFAGLn4we3f20Gq4JYgyc1kFTiByZTuooQpCxNvjtsM3SUC26SLGUTSQXoFaUpY
# T2DKfoJqCwKqJRc5tdt/54RlKpWKvYbeXoEWgy0QzN79qIIqbSgfDQvE5ecaJhnh
# 9BFvELWV/OdCBTLbzp1RXii2noXTW++lfUVAco63DmsOBvszNUhxuJ0ni8RlXw2G
# dpxEevaVXPZdMggzpFS2GD9oXPJCSoU4VINf0egs8qwR1qjtY2owggVqMIIEUqAD
# AgECAhAMtnr7s7inKYYI4A6UzzU+MA0GCSqGSIb3DQEBBQUAMIG0MQswCQYDVQQG
# EwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWdu
# IFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
# L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMS4wLAYDVQQDEyVWZXJpU2lnbiBD
# bGFzcyAzIENvZGUgU2lnbmluZyAyMDEwIENBMB4XDTExMDYyNDAwMDAwMFoXDTE0
# MDcwMzIzNTk1OVowga0xCzAJBgNVBAYTAkNaMQ8wDQYDVQQIEwZQcmFndWUxDzAN
# BgNVBAcTBlByYWd1ZTEdMBsGA1UEChQUU2hhcnBDcmFmdGVycyBzLnIuby4xPjA8
# BgNVBAsTNURpZ2l0YWwgSUQgQ2xhc3MgMyAtIE1pY3Jvc29mdCBTb2Z0d2FyZSBW
# YWxpZGF0aW9uIHYyMR0wGwYDVQQDFBRTaGFycENyYWZ0ZXJzIHMuci5vLjCCASIw
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK0A6khiBRSzjcckXo8lVbY/TcZH
# K/LT5Gwkg7EyyiBivHnIRsuVNazEu8ka9ZmVHNH+8V0vTlRu9irToZVkOW0TqVc0
# KJxDa9Om32J5aauQ0VWBI13EI4Rzx7x+X6lZv65w7N11bdHjSwOdVZqNIwAH6YvF
# gUa1j8MOKYKTcPUb7Pr6slRRqvWNJaSzc5sKDo2u3ztoM6Mi8ZOLTvlIi2WAu9AO
# JrbJLnIS/SPbgL+A3s1Mt/GquVs3vocaHLg3/6Aol4XKmI/YFcOASD72b9ZfpVTg
# hd61qnQ9IXwtjHCDAkMHIxnyk/hUfXN2W+5EFt0AvGN7j+AY8wW8yoJM5o8CAwEA
# AaOCAXswggF3MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMEAGA1UdHwQ5MDcw
# NaAzoDGGL2h0dHA6Ly9jc2MzLTIwMTAtY3JsLnZlcmlzaWduLmNvbS9DU0MzLTIw
# MTAuY3JsMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHFwMwKjAoBggrBgEFBQcCARYc
# aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTATBgNVHSUEDDAKBggrBgEFBQcD
# AzBxBggrBgEFBQcBAQRlMGMwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz
# aWduLmNvbTA7BggrBgEFBQcwAoYvaHR0cDovL2NzYzMtMjAxMC1haWEudmVyaXNp
# Z24uY29tL0NTQzMtMjAxMC5jZXIwHwYDVR0jBBgwFoAUz5mp6nsm9EvJjo/X8AUm
# 7+PSp50wEQYJYIZIAYb4QgEBBAQDAgQQMBYGCisGAQQBgjcCARsECDAGAQEAAQH/
# MA0GCSqGSIb3DQEBBQUAA4IBAQBy6KC5DX/wo55ppitx2h/f8UxWmNsHvvArhQKQ
# zSfYtQYQ8fueV3FYaC/9vkd1Ard35A3AsT1UpLueZ4NVXA4ltqKeXM5F6e+hPWe5
# nc5zkDr8WFrLqjsPjXc9HiHpoQm+yZ9Lnc/wkA+eHvrLp+Dml5XJWOvbzHf9vWLz
# SiEaqI2miA6yzNcSZmALzaner1j3AjaMU8Omr0UvsIpJwoJVDFWopNzCJG7ovJwh
# ajBy1mthHS/l1pOoWa2D/GffHmseDgltdlwjVZ3EnUQ4HN8cZ7vSB/re1hzPskC5
# QLajNvHRjOsnjr4ZfGWZmDq3ZQ2E4mTyYXlIWFI4Yhh9G9XuMIIGCjCCBPKgAwIB
# AgIQUgDlqiVW/BqG7ZbJ1EszxzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UEBhMC
# VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
# cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAt
# IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFz
# cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUw
# HhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtDELMAkGA1UEBhMCVVMx
# FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
# dCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu
# dmVyaXNpZ24uY29tL3JwYSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3Mg
# MyBDb2RlIFNpZ25pbmcgMjAxMCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
# AQoCggEBAPUjS16l14q7MunUV/fv5Mcmfq0ZmP6onX2U9jZrENd1gTB/BGh/yyt1
# Hs0dCIzfaZSnN6Oce4DgmeHuN01fzjsU7obU0PUnNbwlCzinjGOdF6MIpauw+81q
# YoJM1SHaG9nx44Q7iipPhVuQAU/Jp3YQfycDfL6ufn3B3fkFvBtInGnnwKQ8PEEA
# Pt+W5cXklHHWVQHHACZKQDy1oSapDKdtgI6QJXvPvz8c6y+W+uWHd8a1VrJ6O1Qw
# UxvfYjT/HtH0WpMoheVMF05+W/2kk5l/383vpHXv7xX2R+f4GXLYLjQaprSnTH69
# u08MPVfxMNamNo7WgHbXGS6lzX40LYkCAwEAAaOCAf4wggH6MBIGA1UdEwEB/wQI
# MAYBAf8CAQAwcAYDVR0gBGkwZzBlBgtghkgBhvhFAQcXAzBWMCgGCCsGAQUFBwIB
# FhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vY3BzMCoGCCsGAQUFBwICMB4aHGh0
# dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwDgYDVR0PAQH/BAQDAgEGMG0GCCsG
# AQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l
# 0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92
# c2xvZ28uZ2lmMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24u
# Y29tL3BjYTMtZzUuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
# cDovL29jc3AudmVyaXNpZ24uY29tMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
# BQcDAzAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItODAd
# BgNVHQ4EFgQUz5mp6nsm9EvJjo/X8AUm7+PSp50wHwYDVR0jBBgwFoAUf9Nlp8Ld
# 7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFYi5jSkxGHLSLkBrVao
# ZA/ZjJHEu8wM5a16oCJ/30c4Si1s0X9xGnzscKmx8E/kDwxT+hVe/nSYSSSFgSYc
# kRRHsExjjLuhNNTGRegNhSZzA9CpjGRt3HGS5kUFYBVZUTn8WBRr/tSk7XlrCAxB
# cuc3IgYJviPpP0SaHulhncyxkFz8PdKNrEI9ZTbUtD1AKI+bEM8jJsxLIMuQH12M
# TDTKPNjlN9ZvpSC9NOsm2a4N58Wa96G0IZEzb4boWLslfHQOWP51G2M/zjF8m48b
# lp7FU3aEW5ytkfqs7ZO6XcghU8KCU2OvEg1QhxEbPVRSloosnD2SGgiaBS7Hk6VI
# kdMxggR6MIIEdgIBATCByTCBtDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlT
# aWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYD
# VQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw
# YSAoYykxMDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3MgMyBDb2RlIFNpZ25pbmcg
# MjAxMCBDQQIQDLZ6+7O4pymGCOAOlM81PjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGC
# NwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUhu8oQdXW
# b6iMUGPvRHuerBRI0UAwDQYJKoZIhvcNAQEBBQAEggEAHknlvBl/TQRRfaTVNJSZ
# qHyhUmRDlNkrgn0Qg80pWqHDKSMaJG7ZGd6C5DEaz8zLhGShsu6iElDVcu8sFqgE
# qb3XYfIqYTVjB5NSAq3K3Ueeq/FyMHEQq9Lz/3sMtE1a/iIR5DNgNwwBbYN5ocFc
# Xh0R6gYnxqlH6UD64U+qBFm5QfyNjwbLtIjhdS01p/CyA02swvTM8r4fI9mfeHru
# c06BCAH3PH5vUizpoSoILn5lrtRG4EVbortbRd5iQkMX7SuD/9XiYZCHufWA3bvK
# OcFYBoMKbKEr8ocZguhDUj7lyIXqn65sNYkX+S/VrF5Opc/xYpWvqTpOrlGdGSGk
# qqGCAgswggIHBgkqhkiG9w0BCQYxggH4MIIB9AIBATByMF4xCzAJBgNVBAYTAlVT
# MR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnU3ltYW50
# ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBDQSAtIEcyAhAOz/Q4yP6/NW4E2GqY
# GxpQMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG
# SIb3DQEJBTEPFw0xNDAxMDcxNTAyNTVaMCMGCSqGSIb3DQEJBDEWBBQno6Y2ta1H
# KE0MMoFhGkIWmEaF1DANBgkqhkiG9w0BAQEFAASCAQBT29Kd/MWj+6j6l7RnnMm5
# nyJTUfKvNx9oWKBTOK8Ji/eT6BX56uuG0SedNCwfHKnKQvWDPV0VPrnqpbx8Dhde
# UN3LHfi8q8teh1heAxa4sU+1zGBfqDpG9kJScnh9mJTepSxoojK00FUdnyfxrpVh
# AdcMQ5e+YwP16woCeaqkGZIYQhzreOwsahOnHcfHqev/9FrcTGK1jIMG0YKvCCYq
# WxPGFWvatoSKh7aEvOjwMCIYmXBhA96dYvsy2s+9MdVw6iNvUwUfhL63kscEmHIG
# H7vEqV6WMt8/IcI65GZ+fHzHcF4CwieFAp3dQ1Gp4gzpF6Fo3i35cs2xx8YECXO3
# SIG # End signature block