This commit is contained in:
Christian Wade 2019-09-13 22:26:01 -07:00
parent fd682bcd78
commit bb73c063d8
200 changed files with 32946 additions and 9 deletions

View File

@ -0,0 +1,460 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.props')" />
<Import Project="..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.3.3239.1723\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.3.3239.1723\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.3.3239.1723\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.3.3239.1723\build\cef.redist.x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{765C0612-BB8F-4261-87AE-B5B842BE3C26}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>AlmToolkit</RootNamespace>
<AssemblyName>AlmToolkit</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.AnalysisServices, Version=18.0.5.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AnalysisServices.retail.amd64.18.0.5\lib\net45\Microsoft.AnalysisServices.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AnalysisServices.Core, Version=18.0.5.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AnalysisServices.retail.amd64.18.0.5\lib\net45\Microsoft.AnalysisServices.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AnalysisServices.SPClient.Interfaces, Version=18.0.5.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AnalysisServices.retail.amd64.18.0.5\lib\net45\Microsoft.AnalysisServices.SPClient.Interfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AnalysisServices.Tabular, Version=18.0.5.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AnalysisServices.retail.amd64.18.0.5\lib\net45\Microsoft.AnalysisServices.Tabular.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AnalysisServices.Tabular.Json, Version=18.0.5.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AnalysisServices.retail.amd64.18.0.5\lib\net45\Microsoft.AnalysisServices.Tabular.Json.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\BismNormalizer\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows.Forms.Ribbon, Version=4.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\System.Windows.Forms.Ribbon.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ChromeDebugger.cs" />
<Compile Include="ComparisonForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ComparisonForm.Designer.cs">
<DependentUpon>ComparisonForm.cs</DependentUpon>
</Compile>
<Compile Include="ComparisonJSInteraction.cs" />
<Compile Include="Model\AngularComposite.cs" />
<Compile Include="Model\ComparisonNode.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="WarningListForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="WarningListForm.Designer.cs">
<DependentUpon>WarningListForm.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="ComparisonForm.resx">
<DependentUpon>ComparisonForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.manifest" />
<None Include="html-resources\.angular-cli.json" />
<None Include="html-resources\.editorconfig" />
<None Include="html-resources\e2e\tsconfig.e2e.json" />
<None Include="html-resources\package-lock.json" />
<None Include="html-resources\package.json" />
<None Include="html-resources\src\assets\.gitkeep" />
<None Include="html-resources\src\tsconfig.app.json" />
<None Include="html-resources\src\tsconfig.spec.json" />
<None Include="html-resources\tsconfig.json" />
<None Include="html-resources\tslint.json" />
<None Include="packages.config" />
<EmbeddedResource Include="WarningListForm.resx">
<DependentUpon>WarningListForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BismNormalizer\BismNormalizer.csproj">
<Project>{e54d1347-06ae-41ac-a750-5bf8ecc80ec5}</Project>
<Name>BismNormalizer</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="html-resources\dist\0.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\1.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\10.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\11.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\12.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\13.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\14.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\15.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\16.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\17.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\18.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\19.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\2.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\20.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\21.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\22.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\23.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\24.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\25.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\26.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\27.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\28.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\29.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\3.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\30.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\31.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\32.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\33.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\34.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\35.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\36.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\37.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\38.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\39.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\3rdpartylicenses.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\4.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\40.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\41.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\42.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\43.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\5.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\6.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\7.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\8.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\9.chunk.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\action-Create-Grey.png" />
<Content Include="html-resources\dist\assets\action-Create.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\action-Delete-Grey.png" />
<Content Include="html-resources\dist\assets\action-Delete.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\action-Skip-Grey.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\action-Skip.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\action-Update.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\dropdown.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Action.png" />
<Content Include="html-resources\dist\assets\node-type-Model.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Calculation-Group.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Culture.png" />
<Content Include="html-resources\dist\assets\node-type-Data-Source.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Expression.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Calculation-Item.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-KPI.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Measure.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Perspective.png" />
<Content Include="html-resources\dist\assets\node-type-Refresh-Policy.png" />
<Content Include="html-resources\dist\assets\node-type-Relationship.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\assets\node-type-Role.png" />
<Content Include="html-resources\dist\assets\node-type-Table.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\favicon.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\index.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\inline.bundle.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\main.bundle.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\polyfills.bundle.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\styles.bundle.css">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\dist\symbol-sprite.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\karma.conf.js" />
<Content Include="html-resources\protractor.conf.js" />
<Content Include="html-resources\src\app\app.component.css" />
<Content Include="html-resources\src\app\app.component.html" />
<Content Include="html-resources\src\app\codeeditor\codeeditor.component.css" />
<Content Include="html-resources\src\app\codeeditor\codeeditor.component.html" />
<Content Include="html-resources\src\app\grid\grid.component.css" />
<Content Include="html-resources\src\app\grid\grid.component.html" />
<Content Include="html-resources\src\app\shared\model\database-objects.ts">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\src\app\tree-control-context-menu\tree-control-context-menu.component.css" />
<Content Include="html-resources\src\app\tree-control-context-menu\tree-control-context-menu.component.html" />
<Content Include="html-resources\src\app\tree-control-context-menu\tree-control-context-menu.component.spec.ts" />
<Content Include="html-resources\src\app\tree-control-context-menu\tree-control-context-menu.component.ts" />
<Content Include="html-resources\src\assets\action-Create-Grey.png" />
<Content Include="html-resources\src\assets\action-Create.png" />
<Content Include="html-resources\src\assets\action-Delete-Grey.png" />
<Content Include="html-resources\src\assets\action-Delete.png" />
<Content Include="html-resources\src\assets\action-Skip-Grey.png" />
<Content Include="html-resources\src\assets\action-Skip.png" />
<Content Include="html-resources\src\assets\action-Update.png" />
<Content Include="html-resources\src\assets\dropdown.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\src\assets\node-type-Action.png" />
<Content Include="html-resources\src\assets\node-type-Calculation-Group.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\src\assets\node-type-Calculation-Item.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\src\assets\node-type-Culture.png" />
<Content Include="html-resources\src\assets\node-type-Data-Source.png" />
<Content Include="html-resources\src\assets\node-type-Expression.png" />
<Content Include="html-resources\src\assets\node-type-KPI.png" />
<Content Include="html-resources\src\assets\node-type-Measure.png" />
<Content Include="html-resources\src\assets\node-type-Model.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="html-resources\src\assets\node-type-Perspective.png" />
<Content Include="html-resources\src\assets\node-type-Refresh-Policy.png" />
<Content Include="html-resources\src\assets\node-type-Relationship.png" />
<Content Include="html-resources\src\assets\node-type-Role.png" />
<Content Include="html-resources\src\assets\node-type-Table.png" />
<Content Include="html-resources\src\favicon.ico" />
<Content Include="html-resources\src\index.html" />
<Content Include="html-resources\src\styles.css" />
<Content Include="Images\AlmToolkit.ico" />
<Content Include="Images\Compare.png" />
<Content Include="Images\Exit.png" />
<Content Include="Images\Help.png" />
<Content Include="Images\MAQSoftware.png" />
<Content Include="Images\Open.png" />
<Content Include="Images\Options.png" />
<Content Include="Images\PowerBi.png" />
<Content Include="Images\Report.png" />
<Content Include="Images\Save.png" />
<Content Include="Images\SaveAs.png" />
<Content Include="Images\Script.png" />
<Content Include="Images\SelectActions.png" />
<Content Include="Images\Update.png" />
<Content Include="Images\Validate.png" />
<None Include="System.Windows.Forms.Ribbon.dll.copy-rename" />
</ItemGroup>
<ItemGroup>
<TypeScriptCompile Include="html-resources\e2e\app.e2e-spec.ts" />
<TypeScriptCompile Include="html-resources\e2e\app.po.ts" />
<TypeScriptCompile Include="html-resources\src\app\app-log\app-log.service.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\app-log\app-log.service.ts" />
<TypeScriptCompile Include="html-resources\src\app\app.component.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\app.component.ts" />
<TypeScriptCompile Include="html-resources\src\app\app.module.ts" />
<TypeScriptCompile Include="html-resources\src\app\codeeditor\codeeditor.component.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\codeeditor\codeeditor.component.ts" />
<TypeScriptCompile Include="html-resources\src\app\grid\grid.component.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\grid\grid.component.ts" />
<TypeScriptCompile Include="html-resources\src\app\service\grid-data.service.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\service\grid-data.service.ts" />
<TypeScriptCompile Include="html-resources\src\app\service\window-reference.service.spec.ts" />
<TypeScriptCompile Include="html-resources\src\app\service\window-reference.service.ts" />
<TypeScriptCompile Include="html-resources\src\app\shared\mocks\data-list.ts" />
<TypeScriptCompile Include="html-resources\src\app\shared\model\comparison-node.ts" />
<TypeScriptCompile Include="html-resources\src\environments\environment.prod.ts" />
<TypeScriptCompile Include="html-resources\src\environments\environment.ts" />
<TypeScriptCompile Include="html-resources\src\main.ts" />
<TypeScriptCompile Include="html-resources\src\polyfills.ts" />
<TypeScriptCompile Include="html-resources\src\test.ts" />
<TypeScriptCompile Include="html-resources\src\typings.d.ts" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\cef.redist.x64.3.3239.1723\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.3.3239.1723\build\cef.redist.x64.props'))" />
<Error Condition="!Exists('..\packages\cef.redist.x86.3.3239.1723\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.3.3239.1723\build\cef.redist.x86.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets'))" />
<Error Condition="!Exists('..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.targets'))" />
</Target>
<Import Project="..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.63.0.3\build\CefSharp.Common.targets')" />
<Import Project="..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.targets" Condition="Exists('..\packages\CefSharp.WinForms.63.0.3\build\CefSharp.WinForms.targets')" />
</Project>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="x86" />
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV1" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>

View File

@ -0,0 +1,29 @@
namespace AlmToolkit
{
using CefSharp;
using CefSharp.WinForms;
class ChromeDebugger
{
// Declare a local instance of chromium and the main form in order to execute things from here in the main thread
private static ChromiumWebBrowser _instanceBrowser = null;
// The form class needs to be changed according to yours
private static ComparisonForm _instanceMainForm = null;
public ChromeDebugger(ChromiumWebBrowser originalBrowser, ComparisonForm mainForm)
{
_instanceBrowser = originalBrowser;
_instanceMainForm = mainForm;
}
/// <summary>
/// Used for debugging chrome application embedded in Form
/// </summary>
public void showDevTools()
{
_instanceBrowser.ShowDevTools();
}
}
}

View File

@ -0,0 +1,248 @@
namespace AlmToolkit
{
partial class ComparisonControl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ComparisonControl));
this.scDifferenceResults = new System.Windows.Forms.SplitContainer();
this.treeGridComparisonResults = new BismNormalizer.TabularCompare.UI.TreeGridViewComparison();
this.TreeGridImageList = new System.Windows.Forms.ImageList(this.components);
this.scObjectDefinitions = new System.Windows.Forms.SplitContainer();
this.txtSourceObjectDefinition = new BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtTargetObjectDefinition = new BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox();
this.label5 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.scDifferenceResults)).BeginInit();
this.scDifferenceResults.Panel1.SuspendLayout();
this.scDifferenceResults.Panel2.SuspendLayout();
this.scDifferenceResults.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.treeGridComparisonResults)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.scObjectDefinitions)).BeginInit();
this.scObjectDefinitions.Panel1.SuspendLayout();
this.scObjectDefinitions.Panel2.SuspendLayout();
this.scObjectDefinitions.SuspendLayout();
this.SuspendLayout();
//
// scDifferenceResults
//
this.scDifferenceResults.Dock = System.Windows.Forms.DockStyle.Fill;
this.scDifferenceResults.Location = new System.Drawing.Point(0, 0);
this.scDifferenceResults.Name = "scDifferenceResults";
this.scDifferenceResults.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// scDifferenceResults.Panel1
//
this.scDifferenceResults.Panel1.Controls.Add(this.treeGridComparisonResults);
//
// scDifferenceResults.Panel2
//
this.scDifferenceResults.Panel2.Controls.Add(this.scObjectDefinitions);
this.scDifferenceResults.Size = new System.Drawing.Size(653, 565);
this.scDifferenceResults.SplitterDistance = 411;
this.scDifferenceResults.TabIndex = 2;
//
// treeGridComparisonResults
//
this.treeGridComparisonResults.AllowUserToAddRows = false;
this.treeGridComparisonResults.AllowUserToDeleteRows = false;
this.treeGridComparisonResults.AllowUserToResizeRows = false;
this.treeGridComparisonResults.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.treeGridComparisonResults.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.treeGridComparisonResults.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.treeGridComparisonResults.Comparison = null;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.treeGridComparisonResults.DefaultCellStyle = dataGridViewCellStyle2;
this.treeGridComparisonResults.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeGridComparisonResults.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
this.treeGridComparisonResults.ImageList = this.TreeGridImageList;
this.treeGridComparisonResults.Location = new System.Drawing.Point(0, 0);
this.treeGridComparisonResults.Name = "treeGridComparisonResults";
this.treeGridComparisonResults.RowHeadersVisible = false;
this.treeGridComparisonResults.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
this.treeGridComparisonResults.Size = new System.Drawing.Size(653, 411);
this.treeGridComparisonResults.TabIndex = 0;
this.treeGridComparisonResults.Unloading = false;
this.treeGridComparisonResults.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.treeGridComparisonResults_DataError);
this.treeGridComparisonResults.MouseUp += new System.Windows.Forms.MouseEventHandler(this.treeGridComparisonResults_MouseUp);
//
// TreeGridImageList
//
this.TreeGridImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("TreeGridImageList.ImageStream")));
this.TreeGridImageList.TransparentColor = System.Drawing.Color.Transparent;
this.TreeGridImageList.Images.SetKeyName(0, "Connection.png");
this.TreeGridImageList.Images.SetKeyName(1, "Table.png");
this.TreeGridImageList.Images.SetKeyName(2, "Relationship.png");
this.TreeGridImageList.Images.SetKeyName(3, "BismMeasure.png");
this.TreeGridImageList.Images.SetKeyName(4, "KPI.png");
this.TreeGridImageList.Images.SetKeyName(5, "DeleteAction.png");
this.TreeGridImageList.Images.SetKeyName(6, "UpdateAction.png");
this.TreeGridImageList.Images.SetKeyName(7, "CreateAction.png");
this.TreeGridImageList.Images.SetKeyName(8, "SkipAction.png");
this.TreeGridImageList.Images.SetKeyName(9, "Plus.png");
this.TreeGridImageList.Images.SetKeyName(10, "Minus.png");
this.TreeGridImageList.Images.SetKeyName(11, "Informational.png");
this.TreeGridImageList.Images.SetKeyName(12, "Warning.png");
this.TreeGridImageList.Images.SetKeyName(13, "WarningToolWindow.png");
this.TreeGridImageList.Images.SetKeyName(14, "Role.png");
this.TreeGridImageList.Images.SetKeyName(15, "Perspective.png");
this.TreeGridImageList.Images.SetKeyName(16, "Action.png");
this.TreeGridImageList.Images.SetKeyName(17, "CompareBismModels_Small.png");
this.TreeGridImageList.Images.SetKeyName(18, "DeleteActionGrey.png");
this.TreeGridImageList.Images.SetKeyName(19, "SkipActionGrey.png");
this.TreeGridImageList.Images.SetKeyName(20, "CreateActionGrey.png");
this.TreeGridImageList.Images.SetKeyName(21, "Culture.png");
this.TreeGridImageList.Images.SetKeyName(22, "Expression.png");
this.TreeGridImageList.Images.SetKeyName(23, "CalculationGroup.png");
this.TreeGridImageList.Images.SetKeyName(24, "CalculationItem.png");
this.TreeGridImageList.Images.SetKeyName(25, "Model.png");
this.TreeGridImageList.Images.SetKeyName(26, "RefreshPolicy.png");
//
// scObjectDefinitions
//
this.scObjectDefinitions.Dock = System.Windows.Forms.DockStyle.Fill;
this.scObjectDefinitions.Location = new System.Drawing.Point(0, 0);
this.scObjectDefinitions.Name = "scObjectDefinitions";
//
// scObjectDefinitions.Panel1
//
this.scObjectDefinitions.Panel1.BackColor = System.Drawing.SystemColors.Control;
this.scObjectDefinitions.Panel1.Controls.Add(this.txtSourceObjectDefinition);
this.scObjectDefinitions.Panel1.Controls.Add(this.label4);
//
// scObjectDefinitions.Panel2
//
this.scObjectDefinitions.Panel2.BackColor = System.Drawing.SystemColors.Control;
this.scObjectDefinitions.Panel2.Controls.Add(this.txtTargetObjectDefinition);
this.scObjectDefinitions.Panel2.Controls.Add(this.label5);
this.scObjectDefinitions.Size = new System.Drawing.Size(653, 150);
this.scObjectDefinitions.SplitterDistance = 331;
this.scObjectDefinitions.TabIndex = 0;
//
// txtSourceObjectDefinition
//
this.txtSourceObjectDefinition.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtSourceObjectDefinition.BackColor = System.Drawing.Color.White;
this.txtSourceObjectDefinition.Font = new System.Drawing.Font("Consolas", 9.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.txtSourceObjectDefinition.Location = new System.Drawing.Point(0, 16);
this.txtSourceObjectDefinition.Name = "txtSourceObjectDefinition";
this.txtSourceObjectDefinition.ReadOnly = true;
this.txtSourceObjectDefinition.Size = new System.Drawing.Size(331, 134);
this.txtSourceObjectDefinition.TabIndex = 1;
this.txtSourceObjectDefinition.Text = "";
this.txtSourceObjectDefinition.WordWrap = false;
this.txtSourceObjectDefinition.vScroll += new BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox.vScrollEventHandler(this.txtSourceObjectDefinition_vScroll);
this.txtSourceObjectDefinition.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtSourceObjectDefinition_KeyUp);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(4, 1);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(122, 13);
this.label4.TabIndex = 0;
this.label4.Text = "Source Object Definition";
//
// txtTargetObjectDefinition
//
this.txtTargetObjectDefinition.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtTargetObjectDefinition.BackColor = System.Drawing.Color.White;
this.txtTargetObjectDefinition.Font = new System.Drawing.Font("Consolas", 9.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.txtTargetObjectDefinition.Location = new System.Drawing.Point(0, 16);
this.txtTargetObjectDefinition.Name = "txtTargetObjectDefinition";
this.txtTargetObjectDefinition.ReadOnly = true;
this.txtTargetObjectDefinition.Size = new System.Drawing.Size(313, 134);
this.txtTargetObjectDefinition.TabIndex = 2;
this.txtTargetObjectDefinition.Text = "";
this.txtTargetObjectDefinition.WordWrap = false;
this.txtTargetObjectDefinition.vScroll += new BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox.vScrollEventHandler(this.txtTargetObjectDefinition_vScroll);
this.txtTargetObjectDefinition.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtTargetObjectDefinition_KeyUp);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(3, 1);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(119, 13);
this.label5.TabIndex = 1;
this.label5.Text = "Target Object Definition";
//
// ComparisonControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.scDifferenceResults);
this.Name = "ComparisonControl";
this.Size = new System.Drawing.Size(653, 565);
this.Load += new System.EventHandler(this.ComparisonControl_Load);
this.scDifferenceResults.Panel1.ResumeLayout(false);
this.scDifferenceResults.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.scDifferenceResults)).EndInit();
this.scDifferenceResults.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.treeGridComparisonResults)).EndInit();
this.scObjectDefinitions.Panel1.ResumeLayout(false);
this.scObjectDefinitions.Panel1.PerformLayout();
this.scObjectDefinitions.Panel2.ResumeLayout(false);
this.scObjectDefinitions.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.scObjectDefinitions)).EndInit();
this.scObjectDefinitions.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private BismNormalizer.TabularCompare.UI.TreeGridViewComparison treeGridComparisonResults;
private System.Windows.Forms.SplitContainer scDifferenceResults;
private System.Windows.Forms.SplitContainer scObjectDefinitions;
private BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox txtSourceObjectDefinition;
private System.Windows.Forms.Label label4;
private BismNormalizer.TabularCompare.UI.SynchronizedScrollRichTextBox txtTargetObjectDefinition;
private System.Windows.Forms.Label label5;
public System.Windows.Forms.ImageList TreeGridImageList;
}
}

View File

@ -0,0 +1,661 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Windows.Forms;
using BismNormalizer;
using BismNormalizer.TabularCompare;
using BismNormalizer.TabularCompare.UI;
using BismNormalizer.TabularCompare.Core;
using System.Runtime.InteropServices;
using System.Linq;
namespace AlmToolkit
{
public enum CompareState { NotCompared, Compared, Validated };
/// <summary>
/// The main comparison control, containing the differences grid, and source/target object definition text boxes.
/// </summary>
public partial class ComparisonControl : UserControl
{
#region Private variables
private ComparisonInfo _comparisonInfo;
private Comparison _comparison;
private ContextMenu _menuComparisonGrid = new ContextMenu();
private CompareState _compareState = CompareState.NotCompared;
#endregion
#region Public properties
public ComparisonInfo ComparisonInfo
{
get { return _comparisonInfo; }
set { _comparisonInfo = value; }
}
public Comparison Comparison
{
get { return _comparison; }
set { _comparison = value; }
}
public CompareState CompareState
{
get { return _compareState; }
set { _compareState = value; }
}
#endregion
#region DiffVariables
// this is the diff object;
DiffMatchPatch _diff = new DiffMatchPatch();
// these are the diffs
List<Diff> _diffs;
// chunks for formatting the two RTBs:
List<Chunk> _chunklistSource;
List<Chunk> _chunklistTarget;
// color list:
Color[] _backColors = new Color[3] { ColorTranslator.FromHtml("#e2f6c5"), ColorTranslator.FromHtml("#ffd6d5"), Color.White, };
Color[] _backColorsMerge = new Color[3] { ColorTranslator.FromHtml("#e2f6c5"), Color.LightGray, Color.White, };
public struct Chunk
{
public int StartPosition;
public int Length;
public Color BackColor;
}
#endregion
#region DPI
private float _dpiScaleFactor = 1;
private void Rescale()
{
this._dpiScaleFactor = HighDPIUtils.GetDpiFactor();
if (this._dpiScaleFactor == 1) return;
float fudgedDpiScaleFactor = _dpiScaleFactor * HighDPIUtils.PrimaryFudgeFactor;
this.Scale(new SizeF(fudgedDpiScaleFactor, fudgedDpiScaleFactor));
this.Font = new Font(this.Font.FontFamily,
this.Font.Size * fudgedDpiScaleFactor,
this.Font.Style);
scDifferenceResults.Font = new Font(scDifferenceResults.Font.FontFamily,
scDifferenceResults.Font.Size * fudgedDpiScaleFactor,
scDifferenceResults.Font.Style);
// set up splitter distance/widths/visibility
scDifferenceResults.SplitterDistance = Convert.ToInt32(Convert.ToDouble(scDifferenceResults.Height) * 0.74);
scObjectDefinitions.SplitterDistance = Convert.ToInt32(Convert.ToDouble(scObjectDefinitions.Width) * 0.5);
scDifferenceResults.IsSplitterFixed = false;
txtSourceObjectDefinition.Width = scObjectDefinitions.Panel1.Width;
txtSourceObjectDefinition.Height = Convert.ToInt32(Convert.ToDouble(scObjectDefinitions.Panel1.Height) * 0.86);
txtTargetObjectDefinition.Width = scObjectDefinitions.Panel2.Width;
txtTargetObjectDefinition.Height = Convert.ToInt32(Convert.ToDouble(scObjectDefinitions.Panel2.Height) * 0.86);
if (_dpiScaleFactor > 1) HighDPIUtils.ScaleStreamedImageListByDpi(TreeGridImageList);
treeGridComparisonResults.ResetColumnWidths(fudgedDpiScaleFactor);
}
#endregion
#region Methods
public ComparisonControl()
{
InitializeComponent();
}
private void ComparisonControl_Load(object sender, EventArgs e)
{
treeGridComparisonResults.SetupForComparison();
treeGridComparisonResults.SetObjectDefinitionsCallBack(PopulateObjectDefinitions);
treeGridComparisonResults.SetCellEditCallBack(TriggerComparisonChanged);
_menuComparisonGrid.MenuItems.Add("Skip selected objects", new EventHandler(Skip_Select));
_menuComparisonGrid.MenuItems.Add("Create selected objects Missing in Target", new EventHandler(Create_Select));
_menuComparisonGrid.MenuItems.Add("Delete selected objects Missing in Source", new EventHandler(Delete_Select));
_menuComparisonGrid.MenuItems.Add("Update selected objects with Different Definitions", new EventHandler(Update_Select));
//hdpi
Rescale();
}
public void TriggerComparisonChanged()
{
EventHandler handler = ComparisonChanged;
if (handler != null)
{
handler(this, new EventArgs());
}
}
private void txt_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = true;
}
public void SetNotComparedState()
{
_compareState = CompareState.NotCompared;
treeGridComparisonResults.Unloading = true;
treeGridComparisonResults.Nodes.Clear();
treeGridComparisonResults.Unloading = false;
txtSourceObjectDefinition.Text = "";
txtTargetObjectDefinition.Text = "";
//txtSource.Text = "";
//txtTarget.Text = "";
//Just in case did an AMO comparison and messed up the fonts
txtSourceObjectDefinition.Font = new System.Drawing.Font("Consolas", 9.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
txtTargetObjectDefinition.Font = new System.Drawing.Font("Consolas", 9.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
public void SetComparedState()
{
_compareState = CompareState.Compared;
}
public void SetValidatedState()
{
_compareState = CompareState.Validated;
}
private void Skip_Select(object sender, EventArgs e)
{
treeGridComparisonResults.SkipItems(true);
}
private void Create_Select(object sender, EventArgs e)
{
treeGridComparisonResults.CreateItems(true);
}
private void Update_Select(object sender, EventArgs e)
{
treeGridComparisonResults.UpdateItems(true);
}
private void Delete_Select(object sender, EventArgs e)
{
treeGridComparisonResults.DeleteItems(true);
}
private void treeGridComparisonResults_MouseUp(object sender, MouseEventArgs e)
{
// Load context menu on right mouse click
if (e.Button == MouseButtons.Right)
{
_menuComparisonGrid.Show(treeGridComparisonResults, new Point(e.X, e.Y));
}
}
private void PopulateObjectDefinitions(string objDefSource, string objDefTarget, ComparisonObjectType objType, ComparisonObjectStatus objStatus)
{
try
{
IterateJson(txtSourceObjectDefinition, objDefSource);
IterateJson(txtTargetObjectDefinition, objDefTarget);
}
catch (Exception)
{
txtSourceObjectDefinition.Text = "";
txtSourceObjectDefinition.Text = objDefSource;
txtTargetObjectDefinition.Text = "";
txtTargetObjectDefinition.Text = objDefTarget;
}
#region Difference Highlighting
if ( objStatus == ComparisonObjectStatus.DifferentDefinitions ||
(objStatus == ComparisonObjectStatus.SameDefinition && objType == ComparisonObjectType.Perspective && _comparisonInfo.OptionsInfo.OptionMergePerspectives) ||
(objStatus == ComparisonObjectStatus.SameDefinition && objType == ComparisonObjectType.Culture && _comparisonInfo.OptionsInfo.OptionMergeCultures)
)
{
_diffs = _diff.diff_main(objDefSource, objDefTarget);
_diff.diff_cleanupSemantic(_diffs);
//_diff.diff_cleanupSemanticLossless(_diffs);
//_diff.diff_cleanupEfficiency(_diffs);
// NG: Evaluate if this needs to be added
//Are we merging perspectives/cultures?
if ( (objType == ComparisonObjectType.Perspective && _comparisonInfo.OptionsInfo.OptionMergePerspectives) ||
(objType == ComparisonObjectType.Culture && _comparisonInfo.OptionsInfo.OptionMergeCultures)
)
{
_chunklistSource = CollectChunks(source: true, backColors: _backColorsMerge);
_chunklistTarget = CollectChunks(source: false, backColors: _backColorsMerge);
//If same definition with merge perspectives/cultures option, just want to highlight differences in target that will not be applied, so do not paint chunks for source
if (objStatus == ComparisonObjectStatus.DifferentDefinitions)
{
PaintChunks(txtSourceObjectDefinition, _chunklistSource);
}
PaintChunks(txtTargetObjectDefinition, _chunklistTarget);
}
else
{
_chunklistSource = CollectChunks(source: true, backColors: _backColors);
_chunklistTarget = CollectChunks(source: false, backColors: _backColors);
PaintChunks(txtSourceObjectDefinition, _chunklistSource);
PaintChunks(txtTargetObjectDefinition, _chunklistTarget);
}
}
#endregion
//select 1st characters so not scrolled at bottom
if (txtSourceObjectDefinition.Text != "")
{
txtSourceObjectDefinition.SelectionStart = 0;
txtSourceObjectDefinition.SelectionLength = 0;
txtSourceObjectDefinition.ScrollToCaret();
}
if (txtTargetObjectDefinition.Text != "")
{
txtTargetObjectDefinition.SelectionStart = 0;
txtTargetObjectDefinition.SelectionLength = 0;
txtTargetObjectDefinition.ScrollToCaret();
}
}
#region Text formatting private methods
private void IterateJson(RichTextBox textBox, string text)
{
System.Diagnostics.Debug.WriteLine("In ColorCodeJson for {0}", textBox.Name);
textBox.Text = "";
if (String.IsNullOrEmpty(text))
return;
int start = 0;
int end = 0;
bool inString = false;
while ((end = text.IndexOf('"', start + 1)) != -1)
{
int length = end - start;
//following to ensure close bracket gets same color
if (start > 0)
{
if (inString)
length += 1;
else
{
start += 1;
length -= 1;
}
}
Color color = Color.Black;
if (inString)
{
if (text.Substring(start + length, 1) == ":")
color = Color.SteelBlue;
else
color = Color.Brown;
}
AppendText(textBox, color, text.Substring(start, length));
start = end;
inString = !inString;
}
//close out the last string
start += 1;
AppendText(textBox, Color.Black, text.Substring(start, text.Length - start));
}
private void AppendText(RichTextBox textBox, Color color, string text)
{
int start = textBox.TextLength;
textBox.AppendText(text);
int end = textBox.TextLength;
// Textbox may transform chars, so (end-start) != text.Length
textBox.Select(start, end - start);
{
textBox.SelectionColor = color;
// could set box.SelectionBackColor, box.SelectionFont too.
}
textBox.SelectionLength = 0; // clear
}
private List<Chunk> CollectChunks(bool source, Color[] backColors)
{
RichTextBox textBox = new RichTextBox();
textBox.Text = "";
List<Chunk> chunkList = new List<Chunk>();
foreach (Diff diff in _diffs)
{
if (!source && diff.operation == Operation.DELETE)
continue; // **
if (source && diff.operation == Operation.INSERT)
continue; // **
Chunk chunk = new Chunk();
int length = textBox.TextLength;
textBox.AppendText(diff.text);
chunk.StartPosition = length;
chunk.Length = diff.text.Length;
chunk.BackColor = backColors[(int)diff.operation];
chunkList.Add(chunk);
}
return chunkList;
}
private void PaintChunks(RichTextBox textBox, List<Chunk> theChunks)
{
foreach (Chunk chunk in theChunks)
{
textBox.Select(chunk.StartPosition, chunk.Length);
textBox.SelectionBackColor = chunk.BackColor;
}
}
private void FormatAmoDefinitions(string objDefSource, string objDefTarget, ComparisonObjectType objType)
{
ClearObjDefFormatting(txtSourceObjectDefinition);
ClearObjDefFormatting(txtTargetObjectDefinition);
txtSourceObjectDefinition.Text = objDefSource;
txtSourceObjectDefinition.SelectAll();
txtSourceObjectDefinition.SelectionFont = new Font("Lucida Console", 9, FontStyle.Regular);
if (objType == ComparisonObjectType.Table)
{
SetObjDefFontBold("Base Columns:", txtSourceObjectDefinition);
SetObjDefFontBold("Calculated Columns:", txtSourceObjectDefinition);
SetObjDefFontBold("Columns:", txtSourceObjectDefinition);
SetObjDefFontBold("Hierarchies:", txtSourceObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
SetObjDefFontBold("Partitions:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.Measure)
{
SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.Kpi)
{
SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
SetObjDefFontBold("Goal:", txtSourceObjectDefinition);
SetObjDefFontBold("Status:", txtSourceObjectDefinition);
SetObjDefFontBold("Trend:", txtSourceObjectDefinition);
SetObjDefFontBold("Status Graphic:", txtSourceObjectDefinition);
SetObjDefFontBold("Trend Graphic:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.CalculationItem)
{
SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.Role)
{
SetObjDefFontBold("Permissions:", txtSourceObjectDefinition);
SetObjDefFontBold("Row Filters:", txtSourceObjectDefinition);
SetObjDefFontBold("Members:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.Perspective) //Cultures not supported by AMO version
{
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
}
else if (objType == ComparisonObjectType.Action)
{
SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
SetObjDefFontBold("Drillthrough Columns:", txtSourceObjectDefinition);
SetObjDefFontBold("Report Parameters:", txtSourceObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
}
txtTargetObjectDefinition.Text = objDefTarget;
txtTargetObjectDefinition.SelectAll();
txtTargetObjectDefinition.SelectionFont = new Font("Lucida Console", 9, FontStyle.Regular);
if (objType == ComparisonObjectType.Table)
{
SetObjDefFontBold("Base Columns:", txtTargetObjectDefinition);
SetObjDefFontBold("Calculated Columns:", txtTargetObjectDefinition);
SetObjDefFontBold("Columns:", txtTargetObjectDefinition);
SetObjDefFontBold("Hierarchies:", txtTargetObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
SetObjDefFontBold("Partitions:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.Measure)
{
SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.Kpi)
{
SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
SetObjDefFontBold("Goal:", txtTargetObjectDefinition);
SetObjDefFontBold("Status:", txtTargetObjectDefinition);
SetObjDefFontBold("Trend:", txtTargetObjectDefinition);
SetObjDefFontBold("Status Graphic:", txtTargetObjectDefinition);
SetObjDefFontBold("Trend Graphic:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.CalculationItem)
{
SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.Role)
{
SetObjDefFontBold("Permissions:", txtTargetObjectDefinition);
SetObjDefFontBold("Row Filters:", txtTargetObjectDefinition);
SetObjDefFontBold("Members:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.Perspective) //Cultures not supported by AMO version
{
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
}
else if (objType == ComparisonObjectType.Action)
{
SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
SetObjDefFontBold("Drillthrough Columns:", txtTargetObjectDefinition);
SetObjDefFontBold("Report Parameters:", txtTargetObjectDefinition);
SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
}
}
private void ClearObjDefFormatting(RichTextBox txt)
{
txt.SelectAll();
txt.SelectionFont = new Font(txt.SelectionFont.Name, 9, FontStyle.Regular);
txt.SelectionBackColor = Color.White;
}
private void SetObjDefFontBold(string searchString, RichTextBox txt)
{
int startSelect;
startSelect = txt.Text.IndexOf(searchString);
if (startSelect != -1)
{
txt.Select(startSelect, searchString.Length);
txt.SelectionFont = new Font(txt.SelectionFont.Name, 10, FontStyle.Bold);
}
}
#endregion
public void DataBindComparison()
{
treeGridComparisonResults.Comparison = _comparison;
treeGridComparisonResults.DataBindComparison();
SetComparedState();
}
public void RefreshSkipSelections()
{
if (_compareState != CompareState.NotCompared && _comparison != null)
{
treeGridComparisonResults.RefreshDiffResultsFromGrid();
_comparison.RefreshSkipSelectionsFromComparisonObjects();
}
}
public void ShowHideNodes(bool hide, bool sameDefinitionFilter = false)
{
treeGridComparisonResults.ShowHideNodes(hide, sameDefinitionFilter);
}
/// <summary>
/// Sets Action property of objects to Skip within given range.
/// </summary>
/// <param name="selectedOnly"></param>
/// <param name="comparisonStatus"></param>
public void SkipItems(bool selectedOnly, ComparisonObjectStatus comparisonObjectStatus = ComparisonObjectStatus.Na) //Na because won't take null cos it's an enum
{
treeGridComparisonResults.SkipItems(selectedOnly, comparisonObjectStatus);
}
/// <summary>
/// Sets Action property of objects to Delete within given range.
/// </summary>
/// <param name="selectedOnly"></param>
public void DeleteItems(bool selectedOnly)
{
treeGridComparisonResults.DeleteItems(selectedOnly);
}
/// <summary>
/// Sets Action property of objects to Create within given range.
/// </summary>
/// <param name="selectedOnly"></param>
public void CreateItems(bool selectedOnly)
{
treeGridComparisonResults.CreateItems(selectedOnly);
}
/// <summary>
/// Sets Action property of objects to Update within given range.
/// </summary>
/// <param name="selectedOnly"></param>
public void UpdateItems(bool selectedOnly)
{
treeGridComparisonResults.UpdateItems(selectedOnly);
}
public void RefreshDiffResultsFromGrid()
{
treeGridComparisonResults.RefreshDiffResultsFromGrid();
}
#endregion
#region Event handlers
public EventHandler ComparisonChanged;
#region To Delete
//private Document NewXmlaFile(bool jsonEditor, string targetName)
//{
// try
// {
// //Generate next file name (if try to get NewFile method to do this by leaving filename param blank, the name will not have custom name and will not have xmla extension)
// int maxFileNameNumber = 1;
// int fileNameNumber;
// string fileName = targetName + "_UpdateScript";
// foreach (Window window in _bismNormalizerPackage.Dte.Windows)
// {
// if (window.Document != null &&
// window.Caption != null &&
// window.Caption.EndsWith(".xmla") &&
// window.Caption.Replace(".xmla", "").Length > fileName.Length &&
// window.Caption.Substring(0, fileName.Length) == fileName &&
// Int32.TryParse(window.Caption.Replace(".xmla", "").Remove(0, fileName.Length), out fileNameNumber)
// )
// {
// if (fileNameNumber >= maxFileNameNumber)
// {
// maxFileNameNumber = fileNameNumber + 1;
// }
// }
// }
// fileName += Convert.ToString(maxFileNameNumber) + (jsonEditor ? ".json" : ".xmla");
// return _bismNormalizerPackage.Dte.ItemOperations.NewFile(Name: fileName, ViewKind: Constants.vsViewKindCode).Document;
// }
// catch
// {
// return null;
// }
//}
#endregion
private void txtSourceObjectDefinition_vScroll(Message message)
{
message.HWnd = txtTargetObjectDefinition.Handle;
txtTargetObjectDefinition.PubWndProc(ref message);
}
private void txtTargetObjectDefinition_vScroll(Message message)
{
message.HWnd = txtSourceObjectDefinition.Handle;
txtSourceObjectDefinition.PubWndProc(ref message);
}
private void txtSourceObjectDefinition_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.PageDown ||
e.KeyCode == Keys.PageUp ||
(e.Modifiers == Keys.Control && e.KeyCode == Keys.End) ||
(e.Modifiers == Keys.Control && e.KeyCode == Keys.Home)
)
{
txtTargetObjectDefinition.SelectionStart = txtSourceObjectDefinition.SelectionStart;
txtTargetObjectDefinition.ScrollToCaret();
}
}
private void txtTargetObjectDefinition_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.PageDown ||
e.KeyCode == Keys.PageUp ||
(e.Modifiers == Keys.Control && e.KeyCode == Keys.End) ||
(e.Modifiers == Keys.Control && e.KeyCode == Keys.Home)
)
{
txtSourceObjectDefinition.SelectionStart = txtTargetObjectDefinition.SelectionStart;
txtSourceObjectDefinition.ScrollToCaret();
}
}
private void treeGridComparisonResults_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
if (!(e.Exception is ArgumentException)) //ignore ArgumentException because happens on hpi scaling
{
throw new Exception(e.Exception.Message, e.Exception);
}
}
#endregion
}
}

View File

@ -0,0 +1,538 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="TreeGridImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="TreeGridImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACI
XwAAAk1TRnQBSQFMAgEBGwEAAZQBAgGUAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABcAMAAQEBAAEgBgABcBIAA8IBzwP2Af8D9gH/A4EBj4AAA/YB/wPgAewDawF4AwoBDAMKAQwDawF4
A+AB7AP1Af9QAAP2Af8DQQH/A0EB/wO+Af8DkAGfA2MBcAOBAY8DKAEwA2MBcAOQAZ8DVAFgOAAD9gH/
A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/EAAD9gH/A14B/wO4Af8D4AHsA+AB7AO4Af8DXgH/A+sB/1AA
A7EBvwP2Af8DpwH/A0wB/wP2Af8DyQH/A0EB/wPrAf8D1AH/A5EB/wPUAf8DcgGANAAD9gH/A0EB/wNB
Af8DQQH/A0EB/wNBAf8D9gH/EAAD9gH/A0EB/wFaAlkB/wNeAf8DXgH/A14B/wNBAf8D6wH/VAADKAEw
A9QB/wNBAf8DvgH/A8kB/wOcAf8DQQH/A24B/wNBAf8DnAH/A/YB/xgAA/YB/wP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8QAAP2Af8DQQH/
AeUB4wHkAf8DtQH/A7UB/wHwAe4B7wH/A0EB/wPrAf9YAAPkAe8DTAH/A5EB/wPRAd8DoQGvA74B/wNB
Af8DswH/A+QB7wNyAYAYAAP2Af8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/EAAD9gH/A0EB/wHmAeQB5QH/AfEB7wHwAf8B8QHvAfAB/wHx
Ae8B8AH/A0EB/wPrAf9UAAMoATAD5AHvA3kB/wNjAf8D9gH/A/YB/wOzAf8DQQH/A6cB/wP2Af8DwgHP
GAAD9gH/A0EB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xAA
A/YB/wNBAf8B5gHkAeUB/wHwAe4B7wH/AfAB7gHvAf8B8QHvAfAB/wNBAf8D6wH/VAADDQEQA/YB/wNB
Af8DQQH/A0EB/wOGAf8DTAH/A24B/wOGAf8DQQH/A/YB/wMNARAUAAP2Af8DQQH/A/YB/xAAA/YB/wNB
Af8DQQH/A0EB/wNBAf8DQQH/A/YB/xAAA/YB/wNBAf8DagH/A0YB/wNGAf8DbwH/A0EB/wPrAf9YAAPC
Ac8D4AH/A0wB/wOzAf8D1AH/A/YB/wPJAf8DpwH/A9QB/wPJAf8DwgHPFAAD9gH/A0EB/wP2Af8QAAP2
Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8MAAONAZwDtQH/A0sB/wGpAagBqQH/Ad8B3QHeAf8B3wHd
Ad4B/wGpAagBqQH/A0sB/wO0Af8DjQGcWAADgQGPA7MB/wNBAf8DQQH/A9QB/wNBAf8BjwKOAf8BjwKO
Af8DVwH/A7MB/wOQAZ8IAAP2Af8D9gH/A/YB/wNBAf8D9gH/A/YB/wP2Af8IAAP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8IAAMdASMD5QH+A0sB/wHLAckBygH/AZgClwH/A0gB/wNIAf8BmAKXAf8BywHJ
AcoB/wNLAf8D5QH+Ax0BI1gAA4EBjwP2Af8D4AH/A5AB/wGkAaMBpAH/AdsB2QHaAf8B2wHZAdoB/wGk
AaMBpAH/A0EB/wPUAf8DYwFwBAAD9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAAD9gH/A0EB/wNB
Af8DQQH/A0EB/wNBAf8D9gH/CAADXgFrA64B/wN0Af8BuwG6AbsB/wNTAf8BzwHOAc8B/wHPAc4BzwH/
A1MB/wG7AboBuwH/A3QB/wOuAf8DXgFrWAADRQFQA+sB/wNBAf8B0ALPAf8DQQH/AfEB7wHwAf8B8QHv
AfAB/wNBAf8B0ALPAf8DQQH/A+sB/wNFAVAD9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNB
Af8D9gH/A/YB/wP2Af8D9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/CAADcwGB
A5sB/wOPAf8BmAGXAZgB/wGJAogB/wHxAe8B8AH/AfEB7wHwAf8BiQKIAf8BmAKXAf8DjwH/A5oB/wN0
AYJYAAPkAe8DYwH/AdACzwH/AcUBxAHFAf8BugG5AboB/wHxAe8B8AH/AfEB7wHwAf8BugG5AboB/wHF
AcQBxQH/AdACzwH/A0EB/wPkAe8D9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8DQQH/
A0EB/wNBAf8DQQH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/CAADXgFrA64B/wN0
Af8BuwG6AbsB/wNTAf8BzwHOAc8B/wHPAc4BzwH/A1MB/wG7AboBuwH/A3QB/wOuAf8DXgFrWAAD9gH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wP2Af8D9gH/A0EB/wNBAf8DQQH/
A0EB/wNBAf8D9gH/A/YB/wP2Af8D9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAADIAEmA+YB/wNJ
Af8BywHJAcoB/wGYApcB/wNIAf8DSAH/AZgClwH/AcsByQHKAf8DSQH/A+YB/wMgASZYAAP2Af8DTAH/
Aa8BrgGvAf8B0ALPAf8BpAGjAaQB/wHxAe8B8AH/AfEB7wHwAf8BpAGjAaQB/wHQAs8B/wGvAa4BrwH/
A0wB/wP2Af8D9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAAD9gH/A0EB/wNBAf8DQQH/A0EB/wNB
Af8D9gH/DAADkgGgA7IB/wNMAf8BqQGoAakB/wHgAd4B3wH/AeAB3gHfAf8BqQGoAakB/wNMAf8DsgH/
A5IBoFwAA5ABnwPUAf8DTAH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0wB/wPUAf8DkAGfA/YB/wP2
Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wgAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wwAAwkBCwOx
Ab8DxgH/A2wB/wNFAf8DRQH/A2wB/wPGAf8DsQG/AwkBC2AAA5ABnwP2Af8D9gH/A/YB/wP2Af8D9gH/
A/YB/wP2Af8D9gH/A5ABn1QAAwQBBQNeAWsDwgHPA/AB+gPwAfoDwgHPA14BawMEAQX/ABEAA8IBzwP2
Af8D9gH/A4EBj0gAA58B/wOfAf8DnwH/A58B/2QAA1sBuwOAAf8sAAP2Af8DQQH/A2MB/wO+Af8DkAGf
A2MBcAOBAY8DKAEwA2MBcAOQAZ8DVAFgLAADnwH/A58B/wOfAf8DnwH/MAADBwEKA1YBwQMuAUcQAAM0
AVQDVgG7AzoBYRAAAwcBCQNOAZkoAAOxAb8D9gH/A6cB/wNMAf8D9gH/A8kB/wORAf8D6wH/A9QB/wOR
Af8D1AH/A/YB/wP2Af8D9gH/A/YB/wP2Af8YAAOhAf8DnwH/A58B/wOhAf83AAH/A1MBrRAAA1gBwAMP
AfwDPQFpFAADgAH/CAADgAH/AxMBGgQAA0cBgANDAXcQAAP2Af8DvgH/A0EB/wO+Af8DyQH/A5wB/wN5
Af8DbgH/A1gB/wOcAf8DyQH/A0EB/wNBAf8DQQH/A/YB/xgAA6EB/wOfAf8DnwH/A58B/xgAAxIBGQMq
AUEUAANMAZEDAAH/DAADBAEFAwAB/wNHAYIDBgEIFAADaAHeAxMBGgQAA0MBdwNAAW8EAANzAfMEAAMq
AUAMAAP2Af8DswH/A0wB/wORAf8B9ALzAf8DeQH/A74B/wNBAf8DswH/A6cB/wHyAfAB8QH/AfEB7wHw
Af8B8QHvAfAB/wNBAf8D9gH/GAADoQH/A58B/wOfAf8DnwH/GAADOQFgAwAB/wNLAY4QAAMjATQDAAH/
A1kBxANZAdIDWwHQA1oBygMAAf8DGgElGAADVQGqA1UBqgwAA2IBzANvAeYUAAP2Af8DyQH/A3kB/wNj
Af8D9QH/A7MB/wOzAf8DQQH/A6cB/wPJAf8B8wLyAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8EAAOh
Af8DnwH/A58B/wOfAf8DnwH/A6EB/wOfAf8DnwH/A58B/wOfAf8DoQH/A58B/wOfAf8DnwH/CAADPAFn
AwAB/wM/AW8IAANZAckDKgFAA1kBxAMAAf8DVwHFA1cBxQMAAf8DWQHXHAADOgFiA4AB/wwAAzUBVQNO
AZkUAAP2Af8DyQH/A1gB/wNBAf8DkQH/A4YB/wNMAf8DbgH/A4YB/wNBAf8DyQH/A0EB/wNBAf8DQQH/
A/YB/wQAA58B/wOhAf8DnwH/A58B/wOhAf8DoQH/A6EB/wOfAf8DoQH/A6EB/wOhAf8DnwH/A6EB/wOf
Af8MAANJAYkDAAH/BAADOAFcAwAB/wMKAQ4DRAF5AwAB/wsAAf8DSgGNHAADEwEaA4AB/wwAA4AB/wNS
AaIUAAP2Af8DhgH/A98B/wNMAf8DswH/A9QB/wP2Af8D9AH/AfQC8wH/A8kB/wHzAvIB/wHxAe8B8AH/
AfEB7wHwAf8DQQH/A/YB/wQAA58B/wOfAf8DoQH/A58B/wOhAf8DnwH/A6EB/wOfAf8DnwH/A58B/wOf
Af8DnwH/A6EB/wOfAf8QAANMAe8DWQHJAyEB+gNIAYgEAAMfASwDAAH/Ax4BKwMdASoDAAH/Ax0BKSAA
A4AB/wMmATgEAANNAZEDgAH/BAADTgGZA28B6gwAA/YB/wNBAf8B8gHwAfEB/wOyAf8DWAH/A1gB/wPU
Af8B8QHvAfAB/wHxAe8B8AH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/BAADnwH/
A6EB/wOfAf8DoQH/A58B/wOhAf8DoQH/A58B/wOhAf8DnwH/A58B/wOhAf8DnwH/A58B/xAAAzEBTgMA
Af8DWgHVDAADIQH6A0oBiwNKAYoDMQH4JAADcgHuA0MBdyQAA/YB/wNBAf8DQQH/A2MB/wO+Af8DyQH/
A4YB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/GAADnwH/A58B/wOfAf8DnwH/GAADJQE3
A0IBdAM4AV0DOwFlAwAB/wNTAbADKAE9A0IBdgMOARMDQgF1AwAB/wMAAf8DSAGGIAADPgFrA28B5gNp
Ad0DRwGAIAAD9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8B8QHvAfAB/wHxAe8B8AH/
AfEB7wHwAf8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8YAAOfAf8DnwH/A6EB/wOh
Af8YAANKAYwDAAH/AwAB/wMAAf4DAAH+Aw8B/AMAAf8DAAH/A1YBuwMMARADAAH/AwAB/wMdASooAAN3
AfckAAP2Af8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHv
AfAB/wNBAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DQQH/A/YB/xgAA6EB/wOfAf8DnwH/A6EB/xgA
AwQBBQMJAQwDAAEBAwoBDQMAAf8DOwFkBAADBQEHAw8BFAMEBAYBCAMHAQksAANyAe4kAAP2Af8DQQH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xgAA6EB/wOh
Af8DoQH/A58B/yQAAwIBAwMAAf8DNwFbRAADPAFmAxgBIgNiAcwcAAP2Af8DQQH/A0EB/wNBAf8DQQH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xgAA58B/wOfAf8DnwH/A6EB/3gA
AzUBVQM+AWscAAP2Af8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNB
Af8DQQH/A/YB/yAAAwEBAqAAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8D9gH//wABAAH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHy
Af8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+
AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/BAADJwH/AycB/wMnAf8DJwH/AycB/wMnAf8DJwH/
AycB/xAAAcABlQFGAf8BwAGVAUYB/4QAAf4B8wHyAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wH+AfMB8gH/BAADJwH/A/gB/wP4Af8D+AH/A/gB/wP4
Af8D+AH/AycB/wwAAcABlQFGAf8BoQE5AQAB/wHAAZUBRgH/DAADwAH/A5IB/wPqAf8gAANfAegDwAH/
FAAD/gH/A/EB/wPHAf8DjwH/A4AB/wOiAf8D7AH/FAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/
Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP4Af8D+AH/A/oB/wP8Af8D0AH/CAABwAGVAUYB/wGhATkBAAH/
AcABlQFGAf8QAAOSAf8DkgH/A5IB/wNfAegYAAPrAf8DsAH/Aw0BERAAA/0B/wPWAf8DlQH/A5UB/wOd
Af8DlgH/A4kB/wNQAf8D1QH/EAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMn
Af8D+AH/A/gB/wP4Af8D/AH/AcYBnwFWAf8BoQE5AQAB/wGhATkBAAH/AaEBOQEAAf8BswFZARIB/wGh
ATkBAAH/AcABlQFGAf8UAAPrAf8DkAH/A5IB/wOSAf8DUgGpDAADEAEWA98B/wOdAf8DMQFNFAAD1wH/
A6IB/wOiAf8DogH/A50B/wOcAf8DnAH/A5wB/wNaAf8D0gH/DAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8DGgH/Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP6Af8BxgGfAVYB/wG3AWEBIQH/AfIB8AHrAf8D+AH/
AfIB8AHrAf8BtwFhASEB/wGzAVkBEgH/HAADXQHKA5IB/wOQAf8DoAH/AzEBTQQAAw0BEQPAAf8DkgH/
A1IBqRQAA/QB/wOuAf8DrgH/A7AB/wOwAf8DrgH/A6gB/wOiAf8DnAH/A5wB/wNQAf8D7AH/CAAB/gHz
AfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP8Af8BoQE5AQAB/wHy
AfAB6wH/A/gB/wP4Af8D+AH/AfIB8AHrAf8BoQE5AQAB/wPEAf8DJwH/AycB/xQAA1YBqwOQAf8DkgH/
A50B/wM+AWsDwAH/A5AB/wNfAegDAwEEFAAD3QH/A7wB/wPCAf8DxgH/A8cB/wPBAf8DvAH/A64B/wOi
Af8DnAH/A4kB/wOiAf8IAAH+AfMB8gH/AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5
AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8B/gHzAfIB/wQAAycB/wP4
Af8D+AH/A/0B/wGhATkBAAH/A/gB/wP4Af8D+AH/A/gB/wP4Af8BoQE5AQAB/wP9Af8D+AH/AycB/xgA
Az4BawOdAf8DkgH/A5AB/wOSAf8D6wH/AwMEBAEFFAAD1gH/A8IB/wP+Af8D/gH/A/4B/wP9Af8D/AH/
A/wB/wP8Af8D+gH/A48B/wOAAf8IAAH+AfMB8gH/AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5
AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8B/gHzAfIB/wQA
AycB/wP4Af8D+AH/A/wB/wGhATkBAAH/AfIB8AHrAf8D+AH/A/gB/wP4Af8B8gHwAesB/wGhATkBAAH/
A/wB/wP4Af8DJwH/HAADXAHJA5IB/wOQAf8DnQH/Aw0BERwAA9YB/wPPDf8D/gH/A/4B/wP9Af8D/AH/
A/sB/wOPAf8DjgH/CAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMnAf8DJwH/
AycB/wNhAf8BxgGfAVYB/wG5AYgBNAH/AfIB8AHrAf8D+AH/AfIB8AHrAf8BuQGIATQB/wHGAZ8BVgH/
A/oB/wP4Af8DJwH/GAADUgGpA5IB/wOSAf8DkAH/A5IB/wNcAckQAAMLAQ8IAAPpAf8D2QH/A+wB/wPw
Af8D8AH/A+wB/wPhAf8D1wH/A8AB/wOoAf8DjwH/A8YB/wgAAf4B8wHyAf8DGgH/AfkC6gH/AfkC6gH/
AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AxoB/wH+AfMB8gH/GAABxgGfAVYB/wGhATkBAAH/AaEBOQEAAf8BoQE5AQAB/wHGAZ8BVgH/A/wB/wP4
Af8D+AH/AycB/xQAA1wByQOSAf8DkAH/A50B/wM+AWsDwAH/A5IB/wNKAYwYAAP3Af8D2QH/A+wB/wPx
Af8D8AH/A+wB/wPgAf8D1gH/A8AB/wOoAf8DnAH/A/AB/wgAAf4B8wHyAf8DGgH/AfkC6gH/AfkC6gH/
AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AxoB/wH+AfMB8gH/HAADxAH/A/0B/wP8Af8D+gH/A/gB/wP4Af8D+AH/AycB/xAAA+oB/wOSAf8DkAH/
A5AB/wNSAakEAAMNARED4AH/A6AB/wMxAU0UAAP+Af8D7AH/A+AB/wPxAf8D8QH/A+oB/wPiAf8D0gH/
A8EB/wOoAf8D1wH/A/4B/wgAAf4B8wHyAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wH+AfMB8gH/HAADJwH/A/gB/wP4Af8D+AH/A/gB/wMnAf8DJwH/
A4oB/xAAA5IB/wOSAf8DkAH/A18B6BAAA+oB/wOwAf8DDQERFAAD/QH/A+wB/wPdAf8D4wH/A+YB/wPc
Af8DywH/A7sB/wPWAf8D/QH/DAAB/gHzAfIB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/Af4B8wHyAf8cAAMnAf8D+AH/A/gB/wP4Af8D+AH/AycB/wOK
Af8UAAPAAf8DkgH/A+oB/xgAA18B6APAAf8YAAP9Af8D9wH/A+kB/wPcAf8D1QH/A+IB/wPvAf8D/gH/
EAAB/gHzAfIB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/Af4B8wHyAf8cAAMnAf8DJwH/AycB/wMnAf8DJwH/A4oB/xMAAQF4AAH+AfMB8gH/Af4B8wHy
Af8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+
AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH//wABAAH/
AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/
AQAC/wMrAUIDKwFCAzMBUgM3AVoDNwFbA0oBiQNLAY4DSgGNAz0BZwM3AVsDNwFbAzQBVAMnAToDEQEX
CAADKwFCAysBQgMrAUIDMgFQAzcBWgNIAYMDSwGOA0oBjQNEAXoDNwFbAzcBWxQAASIBuQHTAf8BAAGM
AakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/
AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/ASIBuQHTAf8BAAG5
AdMB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/
AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAG5
AdMB/wMrAUIDGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/A0ABcQMaAf8DGgH/AzEB/wNcAeoDVgG0
Az4BawQAAy4BSAMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wM3AVsUAAERAbQB0QH/
AQAByQHpAf8BAAHGAfEB/wEAAcIB8AH/AQABwQHwAf8BAAHAAfAB/wEAAcEB8AH/AQABwQHwAf8BAAHB
AfAB/wEAAcEB8AH/AQABwgHwAf8BAAHDAfAB/wEAAcMB8AH/AQABxAHxAf8BAAHDAeQB/wERAbQB0QH/
AQABtAHRAf8BAAHJAekB/wEAAcYB8QH/AQABwgHwAf8BAAHBAfAB/wEAAcAB8AH/AQABwQHwAf8BAAHB
AfAB/wEAAcEB8AH/AQABwQHwAf8BAAHCAfAB/wEAAcMB8AH/AQABwwHwAf8BAAHEAfEB/wEAAcMB5AH/
AQABtAHRAf8DKwFCAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wNIAYMDGgH/AxoB/wMaAf8DGgH/
AxoB/wNKAY0DPwFtAzUBVQMiAf8B+QLqAf8B+QLqAf8B+QLqAf8DIgH/AfkC6gH/AfkC6gH/AfkC6gH/
AyIB/wM3AVsDNwFbAzcBWwwAAUsByAHcAf8BAAGuAc8B/wEAAc0B8gH/AQAByAHxAf8BAAHFAfEB/wEA
AcQB8QH/AQABwwHwAf8DAAH/AwAB/wEAAcYB8QH/AQAByAHxAf8BAAHKAfIB/wEAAcoB8gH/AQABzAHx
Af8BAAGrAc0B/wFLAcgB3AL/AQAC/wEAAa4BzwH/AQABzQHyAf8BAAHIAfEB/wEAAcUB8QH/AQABxAHx
Af8BAAHDAfAB/wMAAf8DAAH/AQABxgHxAf8BAAHIAfEB/wEAAcoB8gH/AQABygHyAf8BAAHMAfEB/wEA
AasBzQL/AQAC/wMrAUIDGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/A0wBkwMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wM3AVsDNgFYAyIB/wH5AuoB/wH5AuoB/wH5AuoB/wMiAf8B+QLqAf8B+QLqAf8B+QLq
Af8DIgH/AzcBWwMiAf8DQAFuDAAB4gHuAfIB/wERAbQB0QH/AQEBxgHkAf8BAQHRAfMB/wEAAc0B8gH/
AQABywHyAf8BAAHKAfIB/wMAAf8DAAH/AQABzQHzAf8BAQHRAfMB/wECAdIB9AH/AQMB0wH0Af8BAAHF
AeMB/wERAbQB0QH/AeIB7gHyAv8BAAL/AQABtAHRAf8BAAHGAeQB/wEAAdEB8wH/AQABzQHyAf8BAAHL
AfIB/wEAAcoB8gH/AwAB/wMAAf8BAAHNAfMB/wEAAdEB8wH/AQAB0gH0Af8BAAHTAfQB/wEAAcUB4wH/
AQABtAHRAv8BAAL/AzUBVQMaAf8DGgH/AxoB/wNiAekDGgH/AxoB/wMaAf8DUQGcAxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AzcBWwMyAVADIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DNwFb
AyIB/wNKAYoQAAGAAc0B3wH/AQABrAHNAf8BDwHbAfQB/wELAdkB9QH/AQgB1wH1Af8BBwHWAfQB/wEH
AdYB9AH/AQkB1wH1Af8BCwHZAfUB/wELAdkB9QH/AQ0B2wH1Af8BDgHaAfMB/wEAAaoBywH/AYABzQHf
Af8EAAH/AQAD/wEAAv8BAAGsAc0B/wEAAdsB9AH/AQAB2QH1Af8BAAHXAfUB/wEAAdYB9AH/AQAB1gH0
Af8BAAHXAfUB/wEAAdkB9QH/AQAB2QH1Af8BAAHbAfUB/wEAAdoB8wH/AQABqgHLAv8BAAP/AQAC/wM2
AVgDGgH/AxoB/wNdAdMDVAGmA10B0wMaAf8DGgH/A1oBvQMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wM3
AVsDMQFOAzcBWgNAAW4DSgGNA1IBpANcAeoDYgHvA2IB7wNdAe0DXAHMA0gBhQMiAf8DSAGFAzcBWwM3
AVsDNwFbBAAB6gHyAfUB/wERAbQB0QH/AQYBxgHfAf8BGgHmAfgB/wEZAeQB9wH/ARgB4wH3Af8BAAFD
AUwB/wEAAUMBTAH/ARYB4gH3Af8BFgHiAfcB/wEXAeMB9wH/AQUBxwHgAf8BEQG0AdEB/wHqAfIB9QH/
BAAB/wEAA/8BAAL/AQABtAHRAf8BAAHGAd8B/wEAAeYB+AH/AQAB5AH3Af8BAAHjAfcB/wEAARQBHQH/
AQABFAEdAf8BAAHiAfcB/wEAAeIB9wH/AQAB4wH3Af8BAAHHAeAB/wEAAbQB0QL/AQAD/wEAAv8DLgFH
AzMBUgM9AWcDRgF/A04BlQNSAaMBXAJaAfUBeAJ2AfoBeAJ2AfoDGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DNwFbAwABAQM5AV8DIgH/A04BlANSAacDIgH/AYECfQH6AYUCgwH5AyIB/wF/AX0BegH3A1sByAMi
Af8DSAGFAyIB/wMiAf8DNwFbCAABjgHTAeMB/wEAAaoBywH/ASIB6gH2Af8BJgHwAfoB/wEkAe4B+QH/
AwAB/wMAAf8BIAHqAfkB/wEgAeoB+QH/ARsB5QH1Af8BAAGqAcsB/wGOAdMB4wH/CAAB/wEAA/8BAAP/
AQAC/wEAAaoBywH/AQAB6gH2Af8BAAHwAfoB/wEAAe4B+QH/AwAB/wMAAf8BAAHqAfkB/wEAAeoB+QH/
AQAB5QH1Af8BAAGqAcsC/wEAA/8BAAP/AQAC/wQAAyABLwNMAZIDJQH/AxoB/wMlAf8BbgFsAWsB+gM8
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AzgBXgQAAzkBXwMiAf8DIgH/AyIB/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DSAGFA04BlQMiAf8DNwFbCAAB7wH0AfYB/wERAbQB0QH/AQQBwgHb
Af8BKgHzAfsB/wEpAfEB+gH/AwAB/wMAAf8BJQHvAfoB/wElAe8B+gH/AQYBxgHfAf8BEQG0AdEB/wHv
AfQB9gH/CAAB/wEAA/8BAAP/AQAC/wEAAbQB0QH/AQABwgHbAf8BAAHzAfsB/wEAAfEB+gH/AwAB/wMA
Af8BAAHvAfoB/wEAAe8B+gH/AQABxgHfAf8BAAG0AdEC/wEAA/8BAAP/AQAC/wQAAzgBXAMlAf8DGgH/
AxoB/wMaAf8DJQH/A18B6AMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DSgGLBAADOQFfAyIB/wH5
AuoB/wH5AuoB/wMiAf8B+QLqAf8B+QLqAf8DIgH/AfkC6gH/AfkC6gH/AyIB/wNeAdkDIgH/AyIB/wM3
AVsMAAGcAdcB5QH/AQABqQHLAf8BJAHqAfQB/wEsAfQB+wH/AwAB/wMAAf8BKgHyAfoB/wEjAeoB9gH/
AQABqQHLAf8BnAHXAeUB/wwAAf8BAAP/AQAD/wEAA/8BAAL/AQABqQHLAf8BAAHqAfQB/wEAAfQB+wH/
AwAB/wMAAf8BAAHyAfoB/wEAAeoB9gH/AQABqQHLAv8BAAP/AQAD/wEAA/8BAAL/BAADOAFcAxoB/wMa
Af8DGgH/AxoB/wMaAf8DVAGvAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wNEAXsEAAM5AV8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/A2IB6QNiAekDIgH/A0gBhhAAAREBtAHR
Af8BAQG/AdkB/wE2AfYB+wH/AwAB/wMAAf8BLQH1AfsB/wEIAcYB3QH/AREBtAHRAf8B9QH2AfcB/wwA
Af8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG/AdkB/wEHAfYB+wH/AwAB/wMAAf8BAAH1AfsB/wEA
AcYB3QH/AQABtAHRAv8BAAP/AQAD/wEAA/8BAAL/BAADOAFcAyUB/wMaAf8DGgH/AxoB/wMlAf8DVgGr
A14B0ANcAeoDXAHqA1wB6gNcAeoDJQH/AxoB/wM3AVsEAAM5AV8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DIgH/A2EB3AMiAf8DIgH/Az0BZxAAAasB3QHpAf8BAAGpAcoB/wEjAegB8wH/
AS0B9QH7Af8BLQH1AfsB/wEmAe0B9gH/AQABqQHLAf8BqwHdAekB/xAAAf8BAAP/AQAD/wEAA/8BAAP/
AQAC/wEAAakBygH/AQAB6AHzAf8BAAH1AfsB/wEAAfUB+wH/AQAB7QH2Af8BAAGpAcsC/wEAA/8BAAP/
AQAD/wEAA/8BAAL/BAADIAEvA0wBkgMlAf8DGgH/AyUB/wNUAa8DVgGrA1UBrQNfAegDXAHqA1wB6gNc
AeoDXAHqAxoB/wM3AVsEAANDAXgDIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/
A04BlQNdAdMDIgH/AzcBWxQAARIBtAHRAf8BAAG7AdYB/wEtAfUB+wH/AS0B9QH7Af8BBwHGAd0B/wES
AbQB0QH/FAAB/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG7AdYB/wEAAfUB+wH/AQAB9QH7
Af8BAAHGAd0B/wEAAbQB0QL/AQAD/wEAA/8BAAP/AQAD/wEAAv8IAANLAY4DTAGSA1cBugNWAasDVgGr
A1YBqwNWAasDYQHkA1wB6gNcAeoDXAHqA1wB6gMaAf8DNwFbBAADSQGHAz4BawM3AVsDNwFbAzcBWwM6
AWIDUAGeA1IBowNSAaMDUgGjA1IBowNOAZUDIgH/AyIB/wM3AVsUAAG7AeIB7QH/AQABqAHKAf8BIAHl
AfEB/wEmAewB9QH/AQABqQHLAf8BuwHiAe0B/xQAAf8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv8BAAGo
AcoB/wEAAeUB8QH/AQAB7AH1Af8BAAGpAcsC/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/wgAAz4BawNK
AYwDJQH/A1YBsQNYAbkDVgGrA1YBqwNhAeEDXAHqA1wB6gNcAeoDJQH/A0oBjAMuAUgQAAM3AVsDIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AzYBWRgAARIBtAHRAf8BAAG5AdUB/wEH
AcYB3QH/ARIBtAHRAf8YAAH/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG5AdUB/wEA
AcYB3QH/AQABtAHRAv8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv8MAAM9AWgDVgG0A1wB6gMxAf8DGgH/
AxoB/wMaAf8DGgH/AzEB/wNcAeoDVwG6Az4BaxQAAzcBWwMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DNAFUGAAByQHpAfEB/wECAa8BzgH/AQIBrwHOAf8ByQHpAfEB/xgAAf8BAAP/
AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABrwHOAf8BAAGvAc4C/wEAA/8BAAP/AQAD/wEAA/8BAAP/
AQAD/wEAAv8QAAMNAREDJwE6AzMBUwM3AVsDOwFlA0oBjQNLAY4DSAGEAzgBXgMSARkYAAM3AVsDNwFb
A0kBhwNLAY4DSwGOA0oBjQNFAXwDNwFbAzcBWwM3AVsDNQFXAzcBWv8AQQADKgFAAyoBQAMqAUADKgFA
AyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyYBOAMMARAEAAMqAUADKgFAAyoBQAMq
AUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADJgE4AwwBEBQAAdYBvgGtAf8BtQGa
AYQB/wGcARwBAQH/AZQBEAEAAf8BlAEQAQAB/wGlASQBEgH/Ab0BpgGUAf8B1gG+AbUB/yAAAfcB8wHv
Af8B1gG+AbUB/wGtAY4BWAH/AZQBRgEvAf8BjAE+AScB/wGUAVIBQAH/AcYBtgGtAf8UAANcAd8DXAHf
A1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DWwHDAyYBOAQAA1wB3wNc
Ad8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNbAcMDJgE4EAABxgGu
AZwB/wGtAYYBEgH/Aa0BkgEiAf8B1gHPAc4B/wHnAfMB9wH/AecB7wH3Af8BxgHDAb0B/wGlAYYBGgH/
AaUBIAEKAf8BxgGuAZwB/xgAAfcB6wHnAf8BvQGaAYwB/wGcAUoBLwH/AZwBSgEvAf8BnAFOATcB/wGc
AUoBNwH/AZQBQgEvAf8BWAEuARYB/wGtAZoBjAH/EAABpwKmAf8CswGyAf8DugH/A7oB/wO6Af8DugH/
A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/AbECsAH/A1wB3wMqAUAEAAGnAqYB/wKzAbIB/wO6Af8DugH/
A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8BsQKwAf8DXAHfAyoBQAwAAc4BrgGcAf8BtQGa
AYwB/wHvAesB5wX/AfcB+wL/Ae8B+wH3Af8B7wL3Af8C7wH3Af8B5wHzAv8BvQG2AbUB/wGUARABAAH/
AcYBrgGcAf8UAAG9AZoBjAH/AaUBUgE3Af8BpQFSATcB/wGlAVIBNwH/AZwBTgE3Af8BnAFOATcB/wGc
AU4BNwH/AZwBTgE3Af8BhAEyAR8B/wGtAZYBjAH/DAADkQH/A8QB/wPjAf8D4wH/A+MB/wLhAeAB/wHY
AdQB0gH/AdoB1gHVAf8D4wH/A+MB/wPjAf8D4wH/A7oB/wNcAd8DKgFABAADkQH/A8QB/wPjAf8D4wH/
A+MB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8DugH/A1wB3wMqAUAIAAHWAboBrQH/AbUBkgEi
Af8D9wn/Ad4BtgGlAf8BpQIAAf8BpQIAAf8B1gG+Aa0B/wH3A/8B7wH3Av8BvQGuAaUB/wGcARQBAAH/
AdYBvgG1Af8MAAHnAccBtQH/Aa0BWgFAAf8BrQFaAUAB/wGtAVoBSAH/Aa0BWgFIAf8BrQFaAUAB/wGl
AVYBQAH/AaUBUgE3Af8BnAFOATcB/wGcAU4BNwH/AVgBLgEWAf8BxgG2Aa0B/wgAA5EB/wPEAf8D4wH/
A+MB/wPjAf8B2QHUAdIB/wGjAYgBIQH/Aa4BlwGMAf8D4wH/A+MB/wPjAf8D4wH/A7oB/wNcAd8DKgFA
BAADkQH/A8QB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8DugH/A1wB3wMq
AUAIAAG9AZ4BhAH/Ad4BxwG9Df8B7wHXAcYB/wGtAgAB/wGlAgAB/wH3Ae8B5wX/Ae8B6wHvAf8B5wHz
AfcB/wGcASQBEgH/AbUBkgEiAf8MAAHOAaIBjAH/Aa0BhgFIAf8BtQGKAVAB/wG9AY4BUAH/Ab0BjgFQ
Af8BtQGKAVAB/wG1AYYBSAH/Aa0BWgFAAf8BpQFSATcB/wGcAU4BNwH/AZQBQgEvAf8BlAFSAUAB/wgA
A5EB/wHGAscB/wHmAucB/wHmAucB/wHmAucB/wHYAdIBzwH/AY8BEQEAAf8BngGAARcB/wHmAucB/wHm
AucB/wHmAucB/wHmAucB/wO8Af8DXAHfAyoBQAQAA5EB/wHGAscB/wHmAucB/wHmAucB/wHmAucB/wHm
AucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wO8Af8DXAHfAyoBQAQAAdYBugGt
Af8BvQGaAYQC/wH7Dv8B7wHjAdYB/wG9AgAB/wG1AQwBAAH/AfcB+wH3Bf8B9wHzAfcB/wHvAfMB9wH/
AcYBvgG9Af8BnAEcAQEB/wwAAcYBmgGEAf8BvQGKAVAC/wH7A/8C9wL/AfMB7wH/AfcB6wHnAf8B9wHj
Ad4B/wH3AeMB1gH/AfcB4wHeAf8B9wHbAc4B/wGcAUYBLwH/AYwBPgEnAf8IAAORAf8BygLLAf8B7ALt
Af8B7ALtAf8B7ALtAf8B3QHYAdUB/wGRARMBAAH/AaABggEZAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALt
Af8DvwH/A1wB3wMqAUAEAAORAf8BygLLAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALt
Af8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8DvwH/A1wB3wMqAUAEAAHOAa4BnAH/Ac4BpgGMEf8B7wHf
AdYB/wG9AgAB/wG1AQwBAAH/AfcC7wn/Ae8B8wH3Af8B1gHbAd4B/wGcARwBAQH/DAABxgGaAYQB/wHG
AZYBWA7/AfsD/wHzAe8B/wH3AesB5wH/AfcB4wHeAf8B9wHfAdYB/wGcAUYBLwH/AZQBRgEvAf8IAAOR
Af8D0AH/AegB3gHaAf8ByAGjAZYB/wHBAZcBiAH/AbsBjwElAf8BnwENAQAB/wGkARUBAAH/AcEBlwGI
Af8BwQGXAYgB/wHOAa8BowH/Ae8B6gHnAf8DwwH/A1wB3wMqAUAEAAORAf8BygLLAf8B4QHYAdQB/wHH
AaEBlAH/AcEBlwGIAf8BwQGXAYgB/wHBAZcBiAH/AcEBlwGIAf8BwQGXAYgB/wHBAZcBiAH/AcwBrQGh
Af8B5gHiAeEB/wO/Af8DXAHfAyoBQAQAAc4BpgGUAf8BzgGqAZQR/wHvAdsBzgH/AcYCAAH/AbUBCAEA
Af8B7wHrAecJ/wP3Af8B3gHjAecB/wGcASABCgH/DAAB3gGyAZwB/wHOAZ4BhAH/AecBtgGcAf8B5wG+
Aa0B/wHnAb4BrQH/AecBtgGcAf8B1gGmAYwB/wHOAZoBhAH/AbUBigFIAf8BpQFWAUAB/wGcAUYBLwH/
Aa0BjgFYAf8IAAORAf8D0wH/AesB3wHZAf8BxAGXAYcB/wG8AYkBHQH/AbgBgwEWAf8BogEMAQAB/wGn
ARIBAAH/AbwBiQEdAf8BvAGJAR0B/wHMAaYBmAH/AfQB7QHqAf8DxgH/A1wB3wMqAUAEAAORAf8BzALN
Af8B4wHXAdIB/wHDAZYBhgH/AbwBiQEdAf8BvAGJAR0B/wG8AYkBHQH/AbwBiQEdAf8BvAGJAR0B/wG8
AYkBHQH/AckBowGWAf8B6QHkAeEB/wPBAf8DXAHfAyoBQAQAAcYBogGMAf8BzgGqAZQR/wHeAcMBrQH/
Ab0BBAEAAf8BvQEcAQAB/wH3Au8G/wH7Av8B9wH7Av8B3gHXAd4B/wGcARwBAQH/DAAB7wHPAb0B/wHO
AZ4BhAH/AecBtgGcAf8B5wG+Aa0B/wHnAb4BrQH/AecBtgGcAf8B1gGmAYwB/wHOAZoBhAH/AbUBigFI
Af8BpQFWAUAB/wGcAU4BNwH/AdYBvgG1Af8IAAORAf8D0wH/AfgB9gH1Af8B8gHqAecB/wHxAegB5AH/
AeIB1AHNAf8BlgEUAQEB/wGlAYMBGAH/AfEB6AHkAf8B8QHoAeQB/wHzAe0B6gH/AfoB+QH3Af8DxgH/
A1wB3wMqAUAEAAORAf8D0gH/AfcB9QHzAf8B8gHqAecB/wHxAegB5AH/AfEB6AHkAf8B8QHoAeQB/wHx
AegB5AH/AfEB6AHkAf8B8QHoAeQB/wHzAewB6QH/AfgB9wH2Af8DxQH/A1wB3wMqAUAEAAHWAbIBnAH/
Ac4BogGMEf8B9wHrAecB/wHvAdsB1gH/AfcB6wHnCv8B+wL/AfcD/wHOAb4BvQH/AaUBJAEKAf8MAAH/
AfMB7wH/Ad4BtgGlAf8B1gGmAYwB/wHnAb4BrQH/Ae8BvgGtAf8B5wGyAZwB/wHWAaYBlAH/AcYBlgGE
Af8BtQGKAVAB/wGlAVYBQAH/Ab0BmgGMAf8B9wLvAf8IAAORAf8D1AH/AvwB+wH/AvwB+wH/AvwB+wH/
AesB5QHhAf8BlQEXAQQB/wGmAYgBHgH/AvwB+wH/AvwB+wH/AvwB+wH/AvwB+wH/A8cB/wNcAd8DKgFA
BAADkQH/A9MB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7
AfoB/wL7AfoB/wPGAf8DXAHfAyoBQAgAAdYBpgGMAf8B7wHnAd4O/wH7Av8B1gGiAYQB/wHWAaIBhAL/
AfsO/wGlASQBCgH/AcYBpgGUAf8QAAH3AesB5wH/Ad4BtgGlAf8B1gGiAYwB/wHWAaoBlAH/Ad4BrgGU
Af8BzgGiAYwB/wG9AZIBWAH/AbUBhgFIAf8BvQGaAYwB/wH3AesB5wH/DAADkQH/A9QB/wP8Af8D/AH/
A/wB/wHtAegB5QH/AaIBggEYAf8BsQGXAYkB/wP8Af8D/AH/A/wB/wP8Af8DxwH/A1wB3wMqAUAEAAOR
Af8D0wH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/
AvsB+gH/A8YB/wNcAd8DKgFACAAB1gG2AZwB/wHnAbIBlA3/AfcB7wHnAf8BxgEUAQAB/wG9AQwBAAH/
AfcC7wn/AcYBrgGcAf8BrQGGARIB/wHWAcMBtQH/FAAB/wHvAecB/wHvAc8BvQH/Ad4BsgGcAf8BzgGe
AYwB/wHGAZoBhAH/AdYBpgGUAf8B1gG6Aa0C/wL3Af8QAAORAf8D1AH/A/wB/wP8Af8D/AH/AfgC9gH/
AeIB2QHVAf8B5wHfAdsB/wP8Af8D/AH/A/wB/wP8Af8DxwH/A1wB3wMqAUAEAAORAf8D0wH/AvsB+gH/
AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/A8YB/wNc
Ad8DKgFADAAB3gGyAZQB/wHvAccBrQ7/AvcC/wH3Ae8G/wL3Af8BzgG2AaUB/wGtAYYBEgH/AdYBwwG1
Af9IAAKhAaAB/wPBAf8D1AH/A9QB/wPUAf8D1AH/A9QB/wPUAf8D1AH/A9QB/wPUAf8D1AH/A7sB/wNc
Ad8DKgFABAACoQGgAf8DwAH/A9MB/wPTAf8D0wH/A9MB/wPTAf8D0wH/A9MB/wPTAf8D0wH/A9MB/wO6
Af8DXAHfAyoBQBAAAd4BtgGcAf8B5wG2AZQB/wH3Ad8BxgL/AecB3gL/AesB5wH/AfcB5wHeAf8B5wHP
AcYB/wHOAaoBlAH/Ab0BmgGEAf8B1gHDAbUB/0wAAbwBuwG6Af8CoQGgAf8DkQH/A5EB/wORAf8DkQH/
A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/AacCpgH/A1wB3wMqAUAEAAG8AbsBugH/AqEBoAH/A5EB/wOR
Af8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wGnAqYB/wNcAd8DKgFAFAAB3gG+Aa0B/wHe
AbYBnAH/AecBtgGcAf8B5wGyAZQB/wHeAaoBjAH/AdYBrgGcAf8B1gG+AbUB//8A7QABDQGPARIB/wEN
AY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8DWwHE
JAABEwEnAbcB/wIAAaYB/wFDAVIBxAH/IAADXwHoARMBJwG3Af8MAAH/AUMBMQL/AUMBMQH/SAABDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPa
Af8DZQH0AwEBAgMAAQEHAAEBFgABpgH/AgABpgH/AgABpgH/A18B6BgAAUMBUgHEAf8BAwEZAbIB/wMN
AREMAAH/AUMBMQH/CAAB/wFDATEB/0AAAQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8YAAPa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8D2gH/A1EBnAQAAwEBAgMEAQUDAAEBFAABQwFSAcQB/wIA
AaYB/wIAAaYB/wIAAaYB/wNSAakMAAMQARYBNQFFAb4B/wEAAQwBrAH/AzEBTRgAAf8BQwExAv8BQwEx
Av8BQwExAf88AAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/GAAD2gH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/A9oB/wNgAesDXQHSA1kBwgNbAcYDVAGsAxsBJhQAA10BygIAAaYB/wIAAaYB/wEA
AQwBrAH/AzEBTQQAAw0BEQETAScBtwH/AgABpgH/A1IBqRgAAf8BQwExAv8BQwExAv8BQwExAv8BQwEx
Av8BQwExAf84AAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/GAAD2gH/A9oB/wPaAf8D2gH/
A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8DQwF3AwABARgAA1YBqwIAAaYB/wIAAaYB/wEA
AQwBrAH/Az4BawETAScBtwH/AgABpgH/A18B6AMDAQQcAAH/AUMBMQL/AUMBMQL/AUMBMQL/AUMBMQL/
AUMBMQH/IAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
BAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPaAf8DNQFXAwQBBQMP
ARQDAAEBFAADPgFrAQABDAGsAf8CAAGmAf8CAAGmAf8CAAGmAf8BQwFSAcQB/wMDBAQBBSAAAf8BQwEx
Av8BQwExAv8BQwExAv8BQwExAv8BQwExAf8cAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8EAAPaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/A9oB/wMKAQ4kAANcAckCAAGmAf8CAAGmAf8BAAEMAawB/wMNAREsAAH/AUMBMQL/AUMBMQL/
AUMBMQL/AUMBMQL/AUMBMQH/GAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/BAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPa
Af8DLwFKAwUBBwMgAS4DLAFDFAADUgGpAgABpgH/AgABpgH/AgABpgH/AgABpgH/A1wByRAAAwsBDxwA
Af8BQwExAv8BQwExAv8BQwExAv8BQwExAv8BQwExAf8UAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wEN
AY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwES
Af8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8EAAPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/
A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8QAANcAckCAAGmAf8CAAGmAf8BAAEMAawB/wM+
AWsBEwEnAbcB/wIAAaYB/wNKAYwwAAH/AUMBMQL/AUMBMQL/AUMBMQH/LAABDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/xgAA9oB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/A9oB/wwAAUMBUgHEAf8CAAGmAf8CAAGmAf8CAAGmAf8DUgGpBAADDQER
ATUBRQG+Af8BAAEMAawB/wMxAU0wAAH/AUMBMQH/CAAB/wFDATEC/wFDATEB/yAAAQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8YAAPaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wPaAf8OAAGmAf8CAAGmAf8CAAGmAf8DXwHoEAABQwFSAcQB/wED
ARkBsgH/Aw0BETQAAf8BQwExAv8BQwExAv8BQwExAf8gAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wEN
AY8BEgH/GAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8D2gH/DAABEwEnAbcB/wIAAaYB/wFDAVIBxAH/GAADXwHoARMBJwG3Af80AAH/AUMBMQL/
AUMBMQH/JAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wPaAf8D2gH/A9oB/wPa
Af8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wcAAQGQAAENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/+AADAQECnAADPQFpAz4BagNBAXIDNwFaAzcBWwM3AVsDOgFi
A0oBiwNLAY4kAAP9Af8D9wH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP3Af8D/QH/HAADigH/
AzoB/wMiAf8DIgH/AyIB/wMiAf8DOgH/A4oB/xAAA/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1
Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/BAADPQFpAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wNKAYkkAAP3Af8DhgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wOGAf8D9wH/FAADuQH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wO5Af8IAAP1Af8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/A/UB/wQAAzsBZQMaAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Az4BawM3AVsDNwFbAzcBWwM3AVsUAAP2Af8DGgH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DGgH/
A/YB/xAABP8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8IAAP1
Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8B7gLvAf8B7gLv
Af8B7gLvAf8DGQH/A/UB/wQAAy4BSAMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wM3AVsUAAP2Af8DGgH/AfEB7wHwAf8DGgH/AfEB7wHwAf8DGgH/AfEB7wHw
Af8DGgH/AfEB7wHwAf8DGgH/A/YB/xAABP8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8IAAP1Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHu
Au8B/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/A/UB/wQAAywBQwMaAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8DGgH/AzcBWwM3AVsDNwFbAxoB/wM3AVsUAAP2Af8DGgH/AfEB7wHwAf8B8QHv
AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8D9QH/BAADKwFCAxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wM3AVsEAAM3AVsDGgH/AzcBWxQAA/YB/wMaAf8B8QHvAfAB/wMaAf8B8QHv
AfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMiAf8DIgH/AyIB/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/
Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8D9QH/BAADKAE8AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wM3AVsEAAM3AVsDGgH/A0ABcRQAA/YB/wMaAf8B8QHvAfAB/wHx
Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMi
Af8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8B7gLv
Af8B7gLvAf8B7gLvAf8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZ
Af8D9QH/BAADKgFBAyoBQQMoAT0DJQE3AycBOwMuAUgDNgFZAzcBWwM3AVsEAAM3AVsDGgH/A0oBjRQA
A/YB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/
EAAE/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8D9QH/HAADNQFW
AzcBWwM3AVsDNwFbAzcBWwMaAf8DSwGOA0oBjANHAYEMAAP2Af8DGgH/AfEB7wHwAf8B8QHvAfAB/wHx
Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DGgH/A/YB/xAABP8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8IAAP1Af8DGQH/Ae4C7wH/Ae4C7wH/
Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/A/UB/xwA
AykBPgMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DPQFoDAAD9gH/AxoB/wHxAe8B8AH/AxoB/wHx
Ae8B8AH/AxoB/wHxAe8B8AH/AxoB/wHxAe8B8AH/AxoB/wP2Af8QAAT/AyIB/wMtAf8DqQH/AuEB4gH/
A/gB/wP4Af8D+AH/A/gB/wLhAeIB/wOpAf8DLQH/AyIB/wgAA/UB/wMZAf8B7gLvAf8B7gLvAf8B7gLv
Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8D9QH/HAADJQE3
AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8DOwFjDAAD9gH/AxoB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AxoB/wP2Af8QAAPz
Af8DLQH/A+0B/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A+0B/wMiAf8IAAP1Af8DGQH/
AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/A/UB/xwAAyUBNwMa
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Ay8BSgwAA/YB/wMaAf8B8QHvAfAB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AfEB7wHwAf8DGgH/A/YB/xQAAy0B/wPtAf8D+AH/A/gB/wP4Af8D+AH/
A/gB/wP4Af8D+AH/A/gB/wPtAf8DIgH/CAAD9QH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wP1Af8cAAMlATcDGgH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AfkC6gH/AxoB/wMrAUIMAAP2Af8DGgH/AfEB7wHwAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wHxAe8B8AH/
AxoB/wP2Af8UAAO5Af8DLQH/A6kB/wLhAeIB/wP4Af8D+AH/A/gB/wP4Af8C4QHiAf8DqQH/Ay0B/wO5
Af8IAAP1Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/
A/UB/xwAAyoBQAMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DKwFCDAAD9gH/AxoB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AxoB/wP2Af8YAAPo
Af8DigH/AzoB/wMiAf8DIgH/AyIB/wMiAf8DOgH/A4oB/wPoAf8MAAP1Af8D9QH/A/UB/wP1Af8D9QH/
A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/xwAAysBQgMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DMwFTDAAD9wH/A4YB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DhgH/
A/cB/6QAAysBQgMuAUcDPgFqA0cBgQNKAYkDNwFbAzcBWwM3AVoDNwFaDAAD/QH/A/cB/wP2Af8D9gH/
A/YB/wP2Af8D9gH/A/YB/wP2Af8D9wH/A/0B/wwAAUIBTQE+BwABPgMAASgDAAFAAwABcAMAAQEBAAEB
BQABgAEDFgAD/wEAAQ8D/wHwAQ8DAAEfAf8BgAHwAQ8DAAEPAf8BgAHwAQ8CAAGAAQ8BwAEAAfABDwIA
AcABDwHAAQAB8AEPAgABgAEPAcABAAHwAQ8CAAGAAQcBxwGAAfABDwIAAcABBwHHAYAB4AEHAgAB4AED
AQEBgAHAAQMCAAHwAgEBgAHAAQMCAAHwAwABwAEDAgAB8AMAAcABAwIAAfADAAHAAQMCAAHwAQABAQGA
AeABBwIAAfABAAEBAYAB4AEHAgAB+AEBAv8B8AEPAgAG/wEPAf8B/AE/Av8B5wH/AQABHwH8AT8B/AF4
AfMB/wIAAfwBPwH+AXgB+wEnAYABAAH8AT8BPgFwAfkBKwGAAQAB/AE/AR4BAQH5Ac8BgAEAAYABAQGM
AQMB+QHPAYABAAGAAQEByAEzAfkBzwGAAQABgAEBAeEBAwH8AZMBgAEAAYABAQHjAYcB/AH/AYABAAH8
AT8BAAEHAfgBfwGAAQAB/AE/AQABBwH+Af8BgAEAAfwBPwECAQ8B/gH/AYABAAH8AT8B4wH/Af4BPwGA
AQAB/AE/A/8BPwGAAQAB/wF/BP8BgAEACP8CAAGAAXkE/wIAAYABcQHHAfkB8AEfAgABgAFjAcMB8QHg
AQ8CAAGAAQcBwQHDAeABBwIAAYABDwHgAYcBwAEDAgABgAEBAfABBwHAAQMCAAGAAQEB+AEHAcABAwIA
AYABAQH8AR8BwAEDAgABgAEBAfgBHgHAAQMCAAH8AQEB8AEPAcABAwIAAf4BAQHgAYcBwAEDAgAB/gEB
AeEB4wHgAQcCAAH+AQMB4wHzAfABDwIAAf4BBwG/A/8CAAj/AwABAwEAAR8FAAEBAQABHwcAAQcHAAEH
BwABBwGAAQEGAAGAAQEGAAHAAQMCAAGAAQABgAEAAcABAwIAAYABAAGAAQAB4AEHAgABgAEAAYABAAHw
AQcCAAGAAQABgAEAAfABDwIAAYABAAGAAQAB+AEfAgABwAEAAYABAAH4AR8CAAHAAQAB8AEAAfwBPwIA
AeABAQHwAQAB/AE/AgAB8AEDAfABAAr/AQABAQEAAQEB8AEPAfABHwEAAQEBAAEBAeABBwHgAQ8BAAEB
AQABAQHAAQMB4AEHAQABAQEAAQEBgAEBAcABAwEAAQEBAAEBAYABAQHAAQMBAAEBAQABAQEAAQEBwAED
AQABAQEAAQEBAAEBAcABAwEAAQEBAAEBAQABAQHAAQMBAAEBAQABAQEAAQEBwAEDAQABAQEAAQEBAAEB
AcABAwEAAQEBAAEBAYABAQHgAQcBAAEBAQABAQGAAQEB8AEPAQABAQEAAQEBwAEDAv8BAAEBAQABAQHg
AQcC/wEAAQEBAAEBAfABHw7/AfwBPwEAAX8BxwH5Ac8B/wH8AT8BAAEXAcMB8QHbAf8B/AE/AQABRwHB
AcMB8QH/AfwBPwEAAQMB4AGHAeAB/wH8AT8BAAEDAfABBwHwAX8BgAEBAgAB+AEHAfgBPwGAAQEBAAEH
AfwBHwH8AR8BgAEBAgAB+AEeAf4BDwGAAQECAAHwAQ8B/wEfAfwBPwIAAeABhwH/AbMB/AE/AgAB4QHj
Af8B4wH8AT8CAAHjAfMB/wHnAfwBPwIAAb8D/wH8AT8H/wF/BP8BAAF/AcABBwHwAQ8BAAEBAQABfwHA
AQcBwAEDAQABAQEAAQcBwAEHAYABAwEAAQEBAAEHAcABBwGAAQMBAAEBAQABBwHAAQcBgAEDAQABAQEA
AUcBwAEHAYABAwEAAQEBAAFHAcABBwGAAQMBAAEBAQABRwHAAQcBgAEDAQABAQH8AQEBwAEHAYABAwEA
AQEB/AEBAcABBwGAAQMBAAEBAfwBAQHAAQcBgAEDAQABAQH8AQEBwAEHAcABAwEAAQEB/AEBAcABBwHA
AQMBAAEBAfwBAQHAAQcB4AEHAQABAQH8AQEBwAEHBP8B/AEBAcABBws=
</value>
</data>
</root>

View File

@ -0,0 +1,580 @@
namespace AlmToolkit
{
partial class ComparisonForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ComparisonForm));
this.StatusBarComparsion = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.tabHome = new System.Windows.Forms.RibbonTab();
this.panelCompare = new System.Windows.Forms.RibbonPanel();
this.btnCompareTabularModels = new System.Windows.Forms.RibbonButton();
this.ddSelectActions = new System.Windows.Forms.RibbonButton();
this.mnuHideSkipObjects = new System.Windows.Forms.RibbonButton();
this.mnuHideSkipObjectsWithSameDefinition = new System.Windows.Forms.RibbonButton();
this.mnuShowSkipObjects = new System.Windows.Forms.RibbonButton();
this.ribbonSeparator1 = new System.Windows.Forms.RibbonSeparator();
this.mnuSkipAllObjectsMissingInSource = new System.Windows.Forms.RibbonButton();
this.mnuDeleteAllObjectsMissingInSource = new System.Windows.Forms.RibbonButton();
this.mnuSkipAllObjectsMissingInTarget = new System.Windows.Forms.RibbonButton();
this.mnuCreateAllObjectsMissingInTarget = new System.Windows.Forms.RibbonButton();
this.mnuSkipAllObjectsWithDifferentDefinitions = new System.Windows.Forms.RibbonButton();
this.mnuUpdateAllObjectsWithDifferentDefinitions = new System.Windows.Forms.RibbonButton();
this.btnValidateSelection = new System.Windows.Forms.RibbonButton();
this.btnUpdate = new System.Windows.Forms.RibbonButton();
this.btnGenerateScript = new System.Windows.Forms.RibbonButton();
this.panelMisc = new System.Windows.Forms.RibbonPanel();
this.btnOptions = new System.Windows.Forms.RibbonButton();
this.btnReportDifferences = new System.Windows.Forms.RibbonButton();
this.tabHelp = new System.Windows.Forms.RibbonTab();
this.panelHelp = new System.Windows.Forms.RibbonPanel();
this.btnHelp = new System.Windows.Forms.RibbonButton();
this.pnlRibbon = new System.Windows.Forms.Panel();
this.maqSoftwareLogo = new System.Windows.Forms.PictureBox();
this.powerBiLogo = new System.Windows.Forms.PictureBox();
this.ribbonMain = new System.Windows.Forms.Ribbon();
this.mnuOpen = new System.Windows.Forms.RibbonOrbMenuItem();
this.mnuSave = new System.Windows.Forms.RibbonOrbMenuItem();
this.mnuSaveAs = new System.Windows.Forms.RibbonOrbMenuItem();
this.mnuExit = new System.Windows.Forms.RibbonOrbMenuItem();
this.pnlHeader = new System.Windows.Forms.Panel();
this.spltSourceTarget = new System.Windows.Forms.SplitContainer();
this.label1 = new System.Windows.Forms.Label();
this.txtSource = new System.Windows.Forms.TextBox();
this.txtTarget = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.StatusBarComparsion.SuspendLayout();
this.pnlRibbon.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.maqSoftwareLogo)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.powerBiLogo)).BeginInit();
this.pnlHeader.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spltSourceTarget)).BeginInit();
this.spltSourceTarget.Panel1.SuspendLayout();
this.spltSourceTarget.Panel2.SuspendLayout();
this.spltSourceTarget.SuspendLayout();
this.SuspendLayout();
//
// StatusBarComparsion
//
this.StatusBarComparsion.ImageScalingSize = new System.Drawing.Size(36, 36);
this.StatusBarComparsion.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripProgressBar1});
this.StatusBarComparsion.Location = new System.Drawing.Point(0, 454);
this.StatusBarComparsion.Name = "StatusBarComparsion";
this.StatusBarComparsion.Size = new System.Drawing.Size(825, 22);
this.StatusBarComparsion.TabIndex = 48;
this.StatusBarComparsion.Text = "Comparison Status";
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 17);
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
this.toolStripProgressBar1.Visible = false;
//
// tabHome
//
this.tabHome.Name = "tabHome";
this.tabHome.Panels.Add(this.panelCompare);
this.tabHome.Panels.Add(this.panelMisc);
this.tabHome.Text = "Home";
//
// panelCompare
//
this.panelCompare.ButtonMoreVisible = false;
this.panelCompare.Items.Add(this.btnCompareTabularModels);
this.panelCompare.Items.Add(this.ddSelectActions);
this.panelCompare.Items.Add(this.btnValidateSelection);
this.panelCompare.Items.Add(this.btnUpdate);
this.panelCompare.Items.Add(this.btnGenerateScript);
this.panelCompare.Name = "panelCompare";
this.panelCompare.Text = "";
//
// btnCompareTabularModels
//
this.btnCompareTabularModels.Image = ((System.Drawing.Image)(resources.GetObject("btnCompareTabularModels.Image")));
this.btnCompareTabularModels.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnCompareTabularModels.LargeImage")));
this.btnCompareTabularModels.Name = "btnCompareTabularModels";
this.btnCompareTabularModels.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnCompareTabularModels.SmallImage")));
this.btnCompareTabularModels.Text = "Compare";
this.btnCompareTabularModels.Click += new System.EventHandler(this.btnCompareTabularModels_Click);
//
// ddSelectActions
//
this.ddSelectActions.DrawDropDownIconsBar = false;
this.ddSelectActions.DropDownItems.Add(this.mnuHideSkipObjects);
this.ddSelectActions.DropDownItems.Add(this.mnuHideSkipObjectsWithSameDefinition);
this.ddSelectActions.DropDownItems.Add(this.mnuShowSkipObjects);
this.ddSelectActions.DropDownItems.Add(this.ribbonSeparator1);
this.ddSelectActions.DropDownItems.Add(this.mnuSkipAllObjectsMissingInSource);
this.ddSelectActions.DropDownItems.Add(this.mnuDeleteAllObjectsMissingInSource);
this.ddSelectActions.DropDownItems.Add(this.mnuSkipAllObjectsMissingInTarget);
this.ddSelectActions.DropDownItems.Add(this.mnuCreateAllObjectsMissingInTarget);
this.ddSelectActions.DropDownItems.Add(this.mnuSkipAllObjectsWithDifferentDefinitions);
this.ddSelectActions.DropDownItems.Add(this.mnuUpdateAllObjectsWithDifferentDefinitions);
this.ddSelectActions.Image = ((System.Drawing.Image)(resources.GetObject("ddSelectActions.Image")));
this.ddSelectActions.LargeImage = ((System.Drawing.Image)(resources.GetObject("ddSelectActions.LargeImage")));
this.ddSelectActions.Name = "ddSelectActions";
this.ddSelectActions.SmallImage = ((System.Drawing.Image)(resources.GetObject("ddSelectActions.SmallImage")));
this.ddSelectActions.Style = System.Windows.Forms.RibbonButtonStyle.DropDown;
this.ddSelectActions.Text = "Select Actions";
//
// mnuHideSkipObjects
//
this.mnuHideSkipObjects.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuHideSkipObjects.Image = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjects.Image")));
this.mnuHideSkipObjects.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjects.LargeImage")));
this.mnuHideSkipObjects.Name = "mnuHideSkipObjects";
this.mnuHideSkipObjects.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjects.SmallImage")));
this.mnuHideSkipObjects.Text = "Hide Skip Objects";
this.mnuHideSkipObjects.Click += new System.EventHandler(this.mnuHideSkipObjects_Click);
//
// mnuHideSkipObjectsWithSameDefinition
//
this.mnuHideSkipObjectsWithSameDefinition.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuHideSkipObjectsWithSameDefinition.Image = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjectsWithSameDefinition.Image")));
this.mnuHideSkipObjectsWithSameDefinition.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjectsWithSameDefinition.LargeImage")));
this.mnuHideSkipObjectsWithSameDefinition.Name = "mnuHideSkipObjectsWithSameDefinition";
this.mnuHideSkipObjectsWithSameDefinition.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuHideSkipObjectsWithSameDefinition.SmallImage")));
this.mnuHideSkipObjectsWithSameDefinition.Text = "Hide Skip Objects with Same Definition";
this.mnuHideSkipObjectsWithSameDefinition.Click += new System.EventHandler(this.mnuHideSkipObjectsWithSameDefinition_Click);
//
// mnuShowSkipObjects
//
this.mnuShowSkipObjects.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuShowSkipObjects.Image = ((System.Drawing.Image)(resources.GetObject("mnuShowSkipObjects.Image")));
this.mnuShowSkipObjects.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuShowSkipObjects.LargeImage")));
this.mnuShowSkipObjects.Name = "mnuShowSkipObjects";
this.mnuShowSkipObjects.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuShowSkipObjects.SmallImage")));
this.mnuShowSkipObjects.Text = "Show Skip Objects";
this.mnuShowSkipObjects.Click += new System.EventHandler(this.mnuShowSkipObjects_Click);
//
// ribbonSeparator1
//
this.ribbonSeparator1.Name = "ribbonSeparator1";
//
// mnuSkipAllObjectsMissingInSource
//
this.mnuSkipAllObjectsMissingInSource.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuSkipAllObjectsMissingInSource.Image = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInSource.Image")));
this.mnuSkipAllObjectsMissingInSource.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInSource.LargeImage")));
this.mnuSkipAllObjectsMissingInSource.Name = "mnuSkipAllObjectsMissingInSource";
this.mnuSkipAllObjectsMissingInSource.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInSource.SmallImage")));
this.mnuSkipAllObjectsMissingInSource.Text = "Skip all objects Missing in Source";
this.mnuSkipAllObjectsMissingInSource.Click += new System.EventHandler(this.mnuSkipAllObjectsMissingInSource_Click);
//
// mnuDeleteAllObjectsMissingInSource
//
this.mnuDeleteAllObjectsMissingInSource.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuDeleteAllObjectsMissingInSource.Image = ((System.Drawing.Image)(resources.GetObject("mnuDeleteAllObjectsMissingInSource.Image")));
this.mnuDeleteAllObjectsMissingInSource.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuDeleteAllObjectsMissingInSource.LargeImage")));
this.mnuDeleteAllObjectsMissingInSource.Name = "mnuDeleteAllObjectsMissingInSource";
this.mnuDeleteAllObjectsMissingInSource.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuDeleteAllObjectsMissingInSource.SmallImage")));
this.mnuDeleteAllObjectsMissingInSource.Text = "Delete all objects Missing in Source";
this.mnuDeleteAllObjectsMissingInSource.Click += new System.EventHandler(this.mnuDeleteAllObjectsMissingInSource_Click);
//
// mnuSkipAllObjectsMissingInTarget
//
this.mnuSkipAllObjectsMissingInTarget.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuSkipAllObjectsMissingInTarget.Image = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInTarget.Image")));
this.mnuSkipAllObjectsMissingInTarget.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInTarget.LargeImage")));
this.mnuSkipAllObjectsMissingInTarget.Name = "mnuSkipAllObjectsMissingInTarget";
this.mnuSkipAllObjectsMissingInTarget.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsMissingInTarget.SmallImage")));
this.mnuSkipAllObjectsMissingInTarget.Text = "Skip all objects Missing In Target";
this.mnuSkipAllObjectsMissingInTarget.Click += new System.EventHandler(this.mnuSkipAllObjectsMissingInTarget_Click);
//
// mnuCreateAllObjectsMissingInTarget
//
this.mnuCreateAllObjectsMissingInTarget.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuCreateAllObjectsMissingInTarget.Image = ((System.Drawing.Image)(resources.GetObject("mnuCreateAllObjectsMissingInTarget.Image")));
this.mnuCreateAllObjectsMissingInTarget.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuCreateAllObjectsMissingInTarget.LargeImage")));
this.mnuCreateAllObjectsMissingInTarget.Name = "mnuCreateAllObjectsMissingInTarget";
this.mnuCreateAllObjectsMissingInTarget.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuCreateAllObjectsMissingInTarget.SmallImage")));
this.mnuCreateAllObjectsMissingInTarget.Text = "Create all objects Missing in Target";
this.mnuCreateAllObjectsMissingInTarget.Click += new System.EventHandler(this.mnuCreateAllObjectsMissingInTarget_Click);
//
// mnuSkipAllObjectsWithDifferentDefinitions
//
this.mnuSkipAllObjectsWithDifferentDefinitions.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuSkipAllObjectsWithDifferentDefinitions.Image = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsWithDifferentDefinitions.Image")));
this.mnuSkipAllObjectsWithDifferentDefinitions.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsWithDifferentDefinitions.LargeImage")));
this.mnuSkipAllObjectsWithDifferentDefinitions.Name = "mnuSkipAllObjectsWithDifferentDefinitions";
this.mnuSkipAllObjectsWithDifferentDefinitions.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuSkipAllObjectsWithDifferentDefinitions.SmallImage")));
this.mnuSkipAllObjectsWithDifferentDefinitions.Text = "Skip all objects with Different Definitions";
this.mnuSkipAllObjectsWithDifferentDefinitions.Click += new System.EventHandler(this.mnuSkipAllObjectsWithDifferentDefinitions_Click);
//
// mnuUpdateAllObjectsWithDifferentDefinitions
//
this.mnuUpdateAllObjectsWithDifferentDefinitions.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuUpdateAllObjectsWithDifferentDefinitions.Image = ((System.Drawing.Image)(resources.GetObject("mnuUpdateAllObjectsWithDifferentDefinitions.Image")));
this.mnuUpdateAllObjectsWithDifferentDefinitions.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuUpdateAllObjectsWithDifferentDefinitions.LargeImage")));
this.mnuUpdateAllObjectsWithDifferentDefinitions.Name = "mnuUpdateAllObjectsWithDifferentDefinitions";
this.mnuUpdateAllObjectsWithDifferentDefinitions.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuUpdateAllObjectsWithDifferentDefinitions.SmallImage")));
this.mnuUpdateAllObjectsWithDifferentDefinitions.Text = "Update all objects with Different Definitions";
this.mnuUpdateAllObjectsWithDifferentDefinitions.Click += new System.EventHandler(this.mnuUpdateAllObjectsWithDifferentDefinitions_Click);
//
// btnValidateSelection
//
this.btnValidateSelection.Image = ((System.Drawing.Image)(resources.GetObject("btnValidateSelection.Image")));
this.btnValidateSelection.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnValidateSelection.LargeImage")));
this.btnValidateSelection.Name = "btnValidateSelection";
this.btnValidateSelection.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnValidateSelection.SmallImage")));
this.btnValidateSelection.Text = "Validate Selection";
this.btnValidateSelection.Click += new System.EventHandler(this.btnValidateSelection_Click);
//
// btnUpdate
//
this.btnUpdate.Image = ((System.Drawing.Image)(resources.GetObject("btnUpdate.Image")));
this.btnUpdate.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnUpdate.LargeImage")));
this.btnUpdate.Name = "btnUpdate";
this.btnUpdate.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnUpdate.SmallImage")));
this.btnUpdate.Text = "Update";
this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
//
// btnGenerateScript
//
this.btnGenerateScript.Image = ((System.Drawing.Image)(resources.GetObject("btnGenerateScript.Image")));
this.btnGenerateScript.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnGenerateScript.LargeImage")));
this.btnGenerateScript.Name = "btnGenerateScript";
this.btnGenerateScript.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnGenerateScript.SmallImage")));
this.btnGenerateScript.Text = "Generate Script";
this.btnGenerateScript.Click += new System.EventHandler(this.btnGenerateScript_Click);
//
// panelMisc
//
this.panelMisc.ButtonMoreVisible = false;
this.panelMisc.Items.Add(this.btnOptions);
this.panelMisc.Items.Add(this.btnReportDifferences);
this.panelMisc.Name = "panelMisc";
this.panelMisc.Text = null;
//
// btnOptions
//
this.btnOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnOptions.Image")));
this.btnOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnOptions.LargeImage")));
this.btnOptions.Name = "btnOptions";
this.btnOptions.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnOptions.SmallImage")));
this.btnOptions.Text = "Options";
this.btnOptions.Click += new System.EventHandler(this.btnOptions_Click);
//
// btnReportDifferences
//
this.btnReportDifferences.Image = ((System.Drawing.Image)(resources.GetObject("btnReportDifferences.Image")));
this.btnReportDifferences.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnReportDifferences.LargeImage")));
this.btnReportDifferences.Name = "btnReportDifferences";
this.btnReportDifferences.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnReportDifferences.SmallImage")));
this.btnReportDifferences.Text = "Report Differences";
this.btnReportDifferences.Click += new System.EventHandler(this.btnReportDifferences_Click);
//
// tabHelp
//
this.tabHelp.Name = "tabHelp";
this.tabHelp.Panels.Add(this.panelHelp);
this.tabHelp.Text = "Help";
//
// panelHelp
//
this.panelHelp.ButtonMoreVisible = false;
this.panelHelp.Items.Add(this.btnHelp);
this.panelHelp.Name = "panelHelp";
this.panelHelp.Text = null;
//
// btnHelp
//
this.btnHelp.Image = ((System.Drawing.Image)(resources.GetObject("btnHelp.Image")));
this.btnHelp.LargeImage = ((System.Drawing.Image)(resources.GetObject("btnHelp.LargeImage")));
this.btnHelp.Name = "btnHelp";
this.btnHelp.SmallImage = ((System.Drawing.Image)(resources.GetObject("btnHelp.SmallImage")));
this.btnHelp.Text = "Info";
//
// pnlRibbon
//
this.pnlRibbon.Controls.Add(this.maqSoftwareLogo);
this.pnlRibbon.Controls.Add(this.powerBiLogo);
this.pnlRibbon.Controls.Add(this.ribbonMain);
this.pnlRibbon.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlRibbon.Location = new System.Drawing.Point(0, 0);
this.pnlRibbon.Margin = new System.Windows.Forms.Padding(1, 1, 1, 1);
this.pnlRibbon.Name = "pnlRibbon";
this.pnlRibbon.Size = new System.Drawing.Size(825, 115);
this.pnlRibbon.TabIndex = 49;
//
// maqSoftwareLogo
//
this.maqSoftwareLogo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.maqSoftwareLogo.BackColor = System.Drawing.Color.White;
this.maqSoftwareLogo.Cursor = System.Windows.Forms.Cursors.Hand;
this.maqSoftwareLogo.Image = ((System.Drawing.Image)(resources.GetObject("maqSoftwareLogo.Image")));
this.maqSoftwareLogo.Location = new System.Drawing.Point(511, 32);
this.maqSoftwareLogo.Margin = new System.Windows.Forms.Padding(1, 1, 1, 1);
this.maqSoftwareLogo.Name = "maqSoftwareLogo";
this.maqSoftwareLogo.Size = new System.Drawing.Size(163, 50);
this.maqSoftwareLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.maqSoftwareLogo.TabIndex = 3;
this.maqSoftwareLogo.TabStop = false;
this.maqSoftwareLogo.Click += new System.EventHandler(this.maqSoftwareLogo_Click);
//
// powerBiLogo
//
this.powerBiLogo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.powerBiLogo.Image = ((System.Drawing.Image)(resources.GetObject("powerBiLogo.Image")));
this.powerBiLogo.Location = new System.Drawing.Point(671, 28);
this.powerBiLogo.Margin = new System.Windows.Forms.Padding(1, 1, 1, 1);
this.powerBiLogo.Name = "powerBiLogo";
this.powerBiLogo.Size = new System.Drawing.Size(149, 58);
this.powerBiLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.powerBiLogo.TabIndex = 2;
this.powerBiLogo.TabStop = false;
//
// ribbonMain
//
this.ribbonMain.CaptionBarVisible = false;
this.ribbonMain.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ribbonMain.Location = new System.Drawing.Point(0, 0);
this.ribbonMain.Margin = new System.Windows.Forms.Padding(1, 1, 1, 1);
this.ribbonMain.Minimized = false;
this.ribbonMain.Name = "ribbonMain";
//
//
//
this.ribbonMain.OrbDropDown.BorderRoundness = 8;
this.ribbonMain.OrbDropDown.Location = new System.Drawing.Point(0, 0);
this.ribbonMain.OrbDropDown.MenuItems.Add(this.mnuOpen);
this.ribbonMain.OrbDropDown.MenuItems.Add(this.mnuSave);
this.ribbonMain.OrbDropDown.MenuItems.Add(this.mnuSaveAs);
this.ribbonMain.OrbDropDown.MenuItems.Add(this.mnuExit);
this.ribbonMain.OrbDropDown.Name = "";
this.ribbonMain.OrbDropDown.Size = new System.Drawing.Size(140, 248);
this.ribbonMain.OrbDropDown.TabIndex = 0;
this.ribbonMain.OrbStyle = System.Windows.Forms.RibbonOrbStyle.Office_2013;
this.ribbonMain.OrbText = "File";
this.ribbonMain.RibbonTabFont = new System.Drawing.Font("Trebuchet MS", 9F);
this.ribbonMain.Size = new System.Drawing.Size(825, 90);
this.ribbonMain.TabIndex = 1;
this.ribbonMain.Tabs.Add(this.tabHome);
this.ribbonMain.Tabs.Add(this.tabHelp);
this.ribbonMain.TabsMargin = new System.Windows.Forms.Padding(5, 2, 20, 0);
this.ribbonMain.TabSpacing = 4;
//
// mnuOpen
//
this.mnuOpen.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuOpen.Image = ((System.Drawing.Image)(resources.GetObject("mnuOpen.Image")));
this.mnuOpen.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuOpen.LargeImage")));
this.mnuOpen.Name = "mnuOpen";
this.mnuOpen.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuOpen.SmallImage")));
this.mnuOpen.Text = "Open";
this.mnuOpen.Click += new System.EventHandler(this.mnuOpen_Click);
//
// mnuSave
//
this.mnuSave.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuSave.Image = ((System.Drawing.Image)(resources.GetObject("mnuSave.Image")));
this.mnuSave.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuSave.LargeImage")));
this.mnuSave.Name = "mnuSave";
this.mnuSave.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuSave.SmallImage")));
this.mnuSave.Text = "Save";
this.mnuSave.Click += new System.EventHandler(this.mnuSave_Click);
//
// mnuSaveAs
//
this.mnuSaveAs.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuSaveAs.Image = ((System.Drawing.Image)(resources.GetObject("mnuSaveAs.Image")));
this.mnuSaveAs.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuSaveAs.LargeImage")));
this.mnuSaveAs.Name = "mnuSaveAs";
this.mnuSaveAs.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuSaveAs.SmallImage")));
this.mnuSaveAs.Text = "Save As";
this.mnuSaveAs.Click += new System.EventHandler(this.mnuSaveAs_Click);
//
// mnuExit
//
this.mnuExit.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
this.mnuExit.Image = ((System.Drawing.Image)(resources.GetObject("mnuExit.Image")));
this.mnuExit.LargeImage = ((System.Drawing.Image)(resources.GetObject("mnuExit.LargeImage")));
this.mnuExit.Name = "mnuExit";
this.mnuExit.SmallImage = ((System.Drawing.Image)(resources.GetObject("mnuExit.SmallImage")));
this.mnuExit.Text = "Exit";
this.mnuExit.Click += new System.EventHandler(this.mnuExit_Click);
//
// pnlHeader
//
this.pnlHeader.BackColor = System.Drawing.SystemColors.HighlightText;
this.pnlHeader.Controls.Add(this.spltSourceTarget);
this.pnlHeader.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlHeader.Location = new System.Drawing.Point(0, 115);
this.pnlHeader.Name = "pnlHeader";
this.pnlHeader.Size = new System.Drawing.Size(825, 33);
this.pnlHeader.TabIndex = 50;
//
// spltSourceTarget
//
this.spltSourceTarget.Dock = System.Windows.Forms.DockStyle.Fill;
this.spltSourceTarget.IsSplitterFixed = true;
this.spltSourceTarget.Location = new System.Drawing.Point(0, 0);
this.spltSourceTarget.Name = "spltSourceTarget";
//
// spltSourceTarget.Panel1
//
this.spltSourceTarget.Panel1.Controls.Add(this.label1);
this.spltSourceTarget.Panel1.Controls.Add(this.txtSource);
this.spltSourceTarget.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
//
// spltSourceTarget.Panel2
//
this.spltSourceTarget.Panel2.Controls.Add(this.txtTarget);
this.spltSourceTarget.Panel2.Controls.Add(this.label2);
this.spltSourceTarget.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.spltSourceTarget.Size = new System.Drawing.Size(825, 33);
this.spltSourceTarget.SplitterDistance = 418;
this.spltSourceTarget.TabIndex = 45;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(2, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 13);
this.label1.TabIndex = 39;
this.label1.Text = "Source";
//
// txtSource
//
this.txtSource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtSource.BackColor = System.Drawing.SystemColors.HighlightText;
this.txtSource.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtSource.Location = new System.Drawing.Point(49, 6);
this.txtSource.Name = "txtSource";
this.txtSource.Size = new System.Drawing.Size(330, 20);
this.txtSource.TabIndex = 41;
//
// txtTarget
//
this.txtTarget.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtTarget.BackColor = System.Drawing.SystemColors.HighlightText;
this.txtTarget.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtTarget.Location = new System.Drawing.Point(45, 6);
this.txtTarget.Name = "txtTarget";
this.txtTarget.Size = new System.Drawing.Size(329, 20);
this.txtTarget.TabIndex = 42;
//
// label2
//
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(3, 8);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(38, 13);
this.label2.TabIndex = 40;
this.label2.Text = "Target";
//
// ComparisonForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(825, 476);
this.Controls.Add(this.pnlHeader);
this.Controls.Add(this.StatusBarComparsion);
this.Controls.Add(this.pnlRibbon);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MinimumSize = new System.Drawing.Size(769, 487);
this.Name = "ComparisonForm";
this.Text = "ALM Toolkit for Power BI";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.Load += new System.EventHandler(this.ComparisonForm_Load);
this.Shown += new System.EventHandler(this.ComparisonForm_Shown);
this.StatusBarComparsion.ResumeLayout(false);
this.StatusBarComparsion.PerformLayout();
this.pnlRibbon.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.maqSoftwareLogo)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.powerBiLogo)).EndInit();
this.pnlHeader.ResumeLayout(false);
this.spltSourceTarget.Panel1.ResumeLayout(false);
this.spltSourceTarget.Panel1.PerformLayout();
this.spltSourceTarget.Panel2.ResumeLayout(false);
this.spltSourceTarget.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.spltSourceTarget)).EndInit();
this.spltSourceTarget.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.StatusStrip StatusBarComparsion;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
private System.Windows.Forms.RibbonTab tabHome;
private System.Windows.Forms.RibbonPanel panelCompare;
private System.Windows.Forms.RibbonButton btnCompareTabularModels;
private System.Windows.Forms.RibbonButton ddSelectActions;
private System.Windows.Forms.RibbonButton mnuHideSkipObjects;
private System.Windows.Forms.RibbonButton mnuHideSkipObjectsWithSameDefinition;
private System.Windows.Forms.RibbonButton mnuShowSkipObjects;
private System.Windows.Forms.RibbonSeparator ribbonSeparator1;
private System.Windows.Forms.RibbonButton mnuSkipAllObjectsMissingInSource;
private System.Windows.Forms.RibbonButton mnuDeleteAllObjectsMissingInSource;
private System.Windows.Forms.RibbonButton mnuSkipAllObjectsMissingInTarget;
private System.Windows.Forms.RibbonButton mnuCreateAllObjectsMissingInTarget;
private System.Windows.Forms.RibbonButton mnuSkipAllObjectsWithDifferentDefinitions;
private System.Windows.Forms.RibbonButton mnuUpdateAllObjectsWithDifferentDefinitions;
private System.Windows.Forms.RibbonButton btnValidateSelection;
private System.Windows.Forms.RibbonButton btnUpdate;
private System.Windows.Forms.RibbonButton btnGenerateScript;
private System.Windows.Forms.RibbonPanel panelMisc;
private System.Windows.Forms.RibbonButton btnOptions;
private System.Windows.Forms.RibbonButton btnReportDifferences;
private System.Windows.Forms.RibbonTab tabHelp;
private System.Windows.Forms.RibbonPanel panelHelp;
private System.Windows.Forms.RibbonButton btnHelp;
private System.Windows.Forms.Panel pnlRibbon;
private System.Windows.Forms.Ribbon ribbonMain;
private System.Windows.Forms.Panel pnlHeader;
private System.Windows.Forms.SplitContainer spltSourceTarget;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtSource;
private System.Windows.Forms.TextBox txtTarget;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.PictureBox powerBiLogo;
private System.Windows.Forms.PictureBox maqSoftwareLogo;
private System.Windows.Forms.RibbonOrbMenuItem mnuOpen;
private System.Windows.Forms.RibbonOrbMenuItem mnuSave;
private System.Windows.Forms.RibbonOrbMenuItem mnuSaveAs;
private System.Windows.Forms.RibbonOrbMenuItem mnuExit;
}
}

View File

@ -0,0 +1,921 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;
using BismNormalizer;
using BismNormalizer.TabularCompare;
using BismNormalizer.TabularCompare.Core;
using BismNormalizer.TabularCompare.UI;
using CefSharp;
using CefSharp.WinForms;
namespace AlmToolkit
{
public partial class ComparisonForm : Form
{
#region Private Members
private ComparisonInfo _comparisonInfo;
private Comparison _comparison;
private ComparisonJSInteraction _comparisonInter; // CEFSharp Interface to connect to Angular Tree Control
private ChromiumWebBrowser chromeBrowser;
private const string _appName = "ALM Toolkit";
private CompareState _compareState = CompareState.NotCompared;
private string _fileName = "";
private bool _unsaved = false;
#endregion
#region Methods
public ComparisonForm()
{
InitializeComponent();
InitializeChromium();
}
/// <summary>
/// Initialize the chrome browser with the html file to be opened
/// </summary>
private void InitializeChromium()
{
// Check if the page exists
string page = string.Format(@"{0}\html-resources\dist\index.html", Application.StartupPath);
if (!File.Exists(page))
{
MessageBox.Show("Error html file doesn't exist : " + page);
}
CefSettings settings = new CefSettings();
// Initialize cef with the provided settings
settings.CefCommandLineArgs.Add("disable-gpu", "1");
settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";
Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
// Create a browser component
chromeBrowser = new ChromiumWebBrowser(page);
// Add it to the form and fill it to the form window.
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
chromeBrowser.BringToFront();
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
// Initialize the interaction variable
_comparisonInter = new ComparisonJSInteraction(this);
// Register C# objects
chromeBrowser.RegisterAsyncJsObject("chromeDebugger", new ChromeDebugger(chromeBrowser, this));
chromeBrowser.RegisterAsyncJsObject("comparisonJSInteraction", _comparisonInter);
}
private void ComparisonForm_Load(object sender, EventArgs e)
{
_comparisonInfo = new ComparisonInfo();
_comparisonInfo.AppName = _appName;
GetFromAutoCompleteSource();
GetFromAutoCompleteTarget();
SetNotComparedState();
//hdpi
Rescale();
}
private void ComparisonForm_Shown(object sender, EventArgs e)
{
this.InitializeAndCompareTabularModels();
}
private void SetNotComparedState()
{
if (_comparison != null)
{
_comparison.Disconnect();
}
btnCompareTabularModels.Enabled = true;
ddSelectActions.Enabled = false;
mnuHideSkipObjects.Enabled = false;
mnuShowSkipObjects.Enabled = false;
mnuSkipAllObjectsMissingInSource.Enabled = false;
mnuDeleteAllObjectsMissingInSource.Enabled = false;
mnuSkipAllObjectsMissingInTarget.Enabled = false;
mnuCreateAllObjectsMissingInTarget.Enabled = false;
mnuSkipAllObjectsWithDifferentDefinitions.Enabled = false;
mnuUpdateAllObjectsWithDifferentDefinitions.Enabled = false;
btnValidateSelection.Enabled = false;
btnUpdate.Enabled = false;
btnGenerateScript.Enabled = false;
btnReportDifferences.Enabled = false;
toolStripStatusLabel1.Text = "";
//ComparisonCtrl.SetNotComparedState();
_compareState = CompareState.NotCompared;
SetGridState(false);
}
private void SetComparedState()
{
btnCompareTabularModels.Enabled = true;
ddSelectActions.Enabled = true;
mnuHideSkipObjects.Enabled = true;
mnuShowSkipObjects.Enabled = true;
mnuSkipAllObjectsMissingInSource.Enabled = true;
mnuDeleteAllObjectsMissingInSource.Enabled = true;
mnuSkipAllObjectsMissingInTarget.Enabled = true;
mnuCreateAllObjectsMissingInTarget.Enabled = true;
mnuSkipAllObjectsWithDifferentDefinitions.Enabled = true;
mnuUpdateAllObjectsWithDifferentDefinitions.Enabled = true;
btnValidateSelection.Enabled = true;
btnUpdate.Enabled = false;
btnGenerateScript.Enabled = false;
btnReportDifferences.Enabled = true;
//ComparisonCtrl.SetComparedState();
// NG: Disable skip and other actions for the control here
_compareState = CompareState.Compared;
SetGridState(true);
}
private void SetValidatedState()
{
btnUpdate.Enabled = true;
btnGenerateScript.Enabled = true;
_compareState = CompareState.Validated;
// This method needs to be moved out of comparison control during clean up
//ComparisonCtrl.SetValidatedState();
}
private bool ShowConnectionsForm()
{
//if (ComparisonCtrl.CompareState != CompareState.NotCompared)
//{
//
// ComparisonCtrl.RefreshSkipSelections();
//}
if (_compareState != CompareState.NotCompared)
{
//just in case user has some selections, store them to the SkipSelections collection
_comparison.RefreshSkipSelectionsFromComparisonObjects();
}
ConnectionsAlmt connForm = new ConnectionsAlmt();
connForm.ComparisonInfo = _comparisonInfo;
connForm.StartPosition = FormStartPosition.CenterParent;
connForm.DpiScaleFactor = _dpiScaleFactor;
connForm.ShowDialog();
if (connForm.DialogResult == DialogResult.OK)
{
SetNotComparedState();
return true;
}
else return false;
}
public void InitializeAndCompareTabularModelsNg()
{
if (InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
InitializeAndCompareTabularModels();
}));
}
}
public void InitializeAndCompareTabularModels()
{
try
{
string sourceTemp = txtSource.Text;
string targetTemp = txtTarget.Text;
if (!ShowConnectionsForm()) return;
Cursor = Cursors.WaitCursor;
changeCursor(true);
toolStripStatusLabel1.Text = "ALM Toolkit - comparing datasets ...";
PopulateSourceTargetTextBoxes();
if (sourceTemp != txtSource.Text || targetTemp != txtTarget.Text)
{
// New connections
//ComparisonCtrl.TriggerComparisonChanged();
_comparisonInfo.SkipSelections.Clear();
SetFileNameTitle(true);
}
this.CompareTabularModels();
toolStripStatusLabel1.Text = "ALM Toolkit - finished comparing datasets";
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
finally
{
Cursor = Cursors.Default;
changeCursor(false);
}
}
public void CompareTabularModels()
{
bool userCancelled;
_comparison = ComparisonFactory.CreateComparison(_comparisonInfo, out userCancelled);
if (!userCancelled)
{
//_comparison.ValidationMessage += HandleValidationMessage;
//_comparison.ResizeValidationHeaders += HandleResizeValidationHeaders;
_comparison.DatabaseDeployment += HandleDatabaseDeployment;
_comparison.Connect();
SetAutoComplete();
_comparison.CompareTabularModels();
// Avoid conflict for validate with existing control
//ComparisonCtrl.ComparisonChanged += HandleComparisonChanged;
//ComparisonCtrl.Comparison = _comparison;
//ComparisonCtrl.DataBindComparison();
_comparisonInter.Comparison = _comparison;
transformAndRefreshGridControl();
SetComparedState();
}
}
#region Angular tree control handlers
private void transformAndRefreshGridControl()
{
_comparisonInter.SetComparisonData();
// Send notification to refresh the grid
refreshGridControl(false);
}
/// <summary>
/// Send notification to refresh the grid control on UI
/// </summary>
public void refreshGridControl(bool mergeActions)
{
// Invoke method in Angular
string script = "window.angularComponentRef.zone.run(() => { window.angularComponentRef.showTree(" + (mergeActions ? "true" : "false") + "); })";
chromeBrowser.ExecuteScriptAsync(script);
}
/// <summary>
/// Change the cursor as per status
/// </summary>
/// <param name="showWaitCursor">Show wait cursor or not</param>
public void changeCursor(bool showWaitCursor)
{
string script = "window.angularComponentRef.zone.run(() => { window.angularComponentRef.changeCursor(" + (showWaitCursor ? "true" : "false") + "); })";
chromeBrowser.ExecuteScriptAsync(script);
}
private void SetGridState(bool showGrid)
{
// Check if we need to clear the comparison node and comparison list as well
// Call Angular method to show/hide grid here
string script = "window.angularComponentRef.zone.run(() => { window.angularComponentRef.clearTree(" + (showGrid ? "true" : "false") + "); })";
if (chromeBrowser.IsBrowserInitialized)
{
chromeBrowser.ExecuteScriptAsync(script);
}
}
#endregion
private void GetFromAutoCompleteSource()
{
string serverNameSource = ReverseArray<string>(Settings.Default.SourceServerAutoCompleteEntries.Substring(0,
Settings.Default.SourceServerAutoCompleteEntries.Length - 1).Split("|".ToCharArray()))[0]; //.Reverse().ToArray();
//_connectionInfoSource = new ConnectionInfo(serverNameSource, Settings.Default.SourceCatalog);
}
private void GetFromAutoCompleteTarget()
{
string serverNameTarget = ReverseArray<string>(Settings.Default.TargetServerAutoCompleteEntries.Substring(0,
Settings.Default.TargetServerAutoCompleteEntries.Length - 1).Split("|".ToCharArray()))[0];
//_connectionInfoTarget = new ConnectionInfo(serverNameTarget, Settings.Default.TargetCatalog);
}
internal static T[] ReverseArray<T>(T[] array)
{
T[] newArray = null;
int count = array == null ? 0 : array.Length;
if (count > 0)
{
newArray = new T[count];
for (int i = 0, j = count - 1; i < count; i++, j--)
{
newArray[i] = array[j];
}
}
return newArray;
}
private void SetAutoComplete()
{
if (!_comparisonInfo.ConnectionInfoSource.UseProject)
{
if (Settings.Default.SourceServerAutoCompleteEntries.IndexOf(_comparisonInfo.ConnectionInfoSource.ServerName + "|") > -1)
{
Settings.Default.SourceServerAutoCompleteEntries =
Settings.Default.SourceServerAutoCompleteEntries.Remove(
Settings.Default.SourceServerAutoCompleteEntries.IndexOf(_comparisonInfo.ConnectionInfoSource.ServerName + "|"),
(_comparisonInfo.ConnectionInfoSource.ServerName + "|").Length);
}
Settings.Default.SourceServerAutoCompleteEntries += _comparisonInfo.ConnectionInfoSource.ServerName + "|";
Settings.Default.SourceCatalog = _comparisonInfo.ConnectionInfoSource.DatabaseName;
Settings.Default.Save();
GetFromAutoCompleteSource();
}
if (!_comparisonInfo.ConnectionInfoTarget.UseProject)
{
if (Settings.Default.TargetServerAutoCompleteEntries.IndexOf(_comparisonInfo.ConnectionInfoTarget.ServerName + "|") > -1)
{
Settings.Default.TargetServerAutoCompleteEntries =
Settings.Default.TargetServerAutoCompleteEntries.Remove(
Settings.Default.TargetServerAutoCompleteEntries.IndexOf(_comparisonInfo.ConnectionInfoTarget.ServerName + "|"),
(_comparisonInfo.ConnectionInfoTarget.ServerName + "|").Length);
}
Settings.Default.TargetServerAutoCompleteEntries += _comparisonInfo.ConnectionInfoTarget.ServerName + "|";
Settings.Default.TargetCatalog = _comparisonInfo.ConnectionInfoTarget.DatabaseName;
Settings.Default.Save();
GetFromAutoCompleteTarget();
}
}
#endregion
#region Event Handlers
private void PopulateSourceTargetTextBoxes()
{
txtSource.Text = _comparisonInfo.ConnectionInfoSource.ServerName + ";" + _comparisonInfo.ConnectionInfoSource.DatabaseName;
txtTarget.Text = _comparisonInfo.ConnectionInfoTarget.ServerName + ";" + _comparisonInfo.ConnectionInfoTarget.DatabaseName;
}
private void btnGenerateScript_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
changeCursor(true);
toolStripStatusLabel1.Text = "Creating script ...";
//If we get here, there was a problem generating the xmla file (maybe file item templates not installed), so offer saving to a file instead
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
saveFile.Filter = "XMLA Files|*.xmla|JSON Files|*.json|Text Files|*.txt|All files|*.*";
saveFile.CheckFileExists = false;
if (saveFile.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFile.FileName, _comparison.ScriptDatabase());
toolStripStatusLabel1.Text = "ALM Toolkit - finished generating script";
MessageBox.Show("Created script\n" + saveFile.FileName, _appName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
finally
{
Cursor.Current = Cursors.Default;
changeCursor(false);
toolStripStatusLabel1.Text = "";
}
}
private void btnOptions_Click(object sender, EventArgs e)
{
Options optionsForm = new Options();
optionsForm.ComparisonInfo = _comparisonInfo;
optionsForm.StartPosition = FormStartPosition.CenterParent;
optionsForm.DpiScaleFactor = _dpiScaleFactor;
optionsForm.ShowDialog();
if (optionsForm.DialogResult == DialogResult.OK)
{
//ComparisonCtrl.TriggerComparisonChanged();
//if (ComparisonCtrl.CompareState != CompareState.NotCompared)
//{
// SetNotComparedState();
// toolStripStatusLabel1.Text = "Comparison invalidated. Please re-run the comparison.";
//}
if (_compareState != CompareState.NotCompared)
{
SetNotComparedState();
toolStripStatusLabel1.Text = "Comparison invalidated. Please re-run the comparison.";
}
}
}
private void btnReportDifferences_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
changeCursor(true);
toolStripStatusLabel1.Text = "ALM Toolkit - generating report ...";
toolStripProgressBar1.Visible = true;
_comparison.ReportDifferences(toolStripProgressBar1);
toolStripStatusLabel1.Text = "ALM Toolkit - finished generating report";
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
toolStripProgressBar1.Visible = false;
Cursor.Current = Cursors.Default;
changeCursor(false);
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//Todo: not firing
if (keyData == (Keys.Control | Keys.S))
{
Save();
return true;
}
if (keyData == (Keys.Shift | Keys.Alt | Keys.C))
{
this.InitializeAndCompareTabularModels();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void btnCompareTabularModels_Click(object sender, EventArgs e)
{
InitializeAndCompareTabularModels();
}
private void mnuHideSkipObjects_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(true);
_comparisonInter.ShowHideSkipNodes(true);
refreshGridControl(true);
}
private void mnuHideSkipObjectsWithSameDefinition_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(true, sameDefinitionFilter: true);
_comparisonInter.ShowHideSkipNodes(true, sameDefinitionFilter: true);
refreshGridControl(true);
}
private void mnuShowSkipObjects_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(false);
_comparisonInter.ShowHideSkipNodes(false);
refreshGridControl(true);
}
private void mnuSkipAllObjectsMissingInSource_Click(object sender, EventArgs e)
{
//ComparisonCtrl.SkipItems(false, ComparisonObjectStatus.MissingInSource);
SetComparedState();
_comparisonInter.SkipItems(false, ComparisonObjectStatus.MissingInSource);
refreshGridControl(true);
}
private void mnuDeleteAllObjectsMissingInSource_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(false);
//ComparisonCtrl.DeleteItems(false);
SetComparedState();
_comparisonInter.ShowHideSkipNodes(false);
_comparisonInter.DeleteItems(false);
refreshGridControl(true);
}
private void mnuSkipAllObjectsMissingInTarget_Click(object sender, EventArgs e)
{
//ComparisonCtrl.SkipItems(false, ComparisonObjectStatus.MissingInTarget);
SetComparedState();
_comparisonInter.SkipItems(false, ComparisonObjectStatus.MissingInTarget);
refreshGridControl(true);
}
private void mnuCreateAllObjectsMissingInTarget_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(false);
//ComparisonCtrl.CreateItems(false);
SetComparedState();
_comparisonInter.ShowHideSkipNodes(false);
_comparisonInter.CreateItems(false);
refreshGridControl(true);
}
private void mnuSkipAllObjectsWithDifferentDefinitions_Click(object sender, EventArgs e)
{
//ComparisonCtrl.SkipItems(false, ComparisonObjectStatus.DifferentDefinitions);
SetComparedState();
_comparisonInter.SkipItems(false, ComparisonObjectStatus.DifferentDefinitions);
refreshGridControl(true);
}
private void mnuUpdateAllObjectsWithDifferentDefinitions_Click(object sender, EventArgs e)
{
//ComparisonCtrl.ShowHideNodes(false);
//ComparisonCtrl.UpdateItems(false);
SetComparedState();
_comparisonInter.ShowHideSkipNodes(false);
_comparisonInter.UpdateItems(false);
refreshGridControl(true);
}
private void btnValidateSelection_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
changeCursor(true);
toolStripStatusLabel1.Text = "ALM Toolkit - validating ...";
// Not required since _comparison object is always updated with latest updates
//ComparisonCtrl.RefreshDiffResultsFromGrid();
WarningListForm warningList = new WarningListForm();
warningList.Comparison = _comparison;
//warningList.TreeGridImageList = ComparisonCtrl.TreeGridImageList;
warningList.StartPosition = FormStartPosition.CenterParent;
warningList.ShowDialog();
SetValidatedState();
toolStripStatusLabel1.Text = "ALM Toolkit - finished validating";
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
finally
{
Cursor.Current = Cursors.Default;
changeCursor(false);
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
if (MessageBox.Show($"Are you sure you want to update target {(_comparisonInfo.ConnectionInfoTarget.UseProject ? "project" : "database")}?", _appName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
{
return;
}
try
{
Cursor.Current = Cursors.WaitCursor;
changeCursor(true);
toolStripStatusLabel1.Text = "ALM Toolkit - committing changes ...";
// Not required since _comparison object is always updated with latest updates
//ComparisonCtrl.RefreshSkipSelections();
if (_compareState != CompareState.NotCompared && _comparison != null)
{
_comparison.RefreshSkipSelectionsFromComparisonObjects();
bool update = _comparison.Update();
toolStripStatusLabel1.Text = "ALM Toolkit - finished committing changes";
SetNotComparedState();
if (update && MessageBox.Show($"Updated {(_comparisonInfo.ConnectionInfoTarget.UseProject ? "project " + _comparisonInfo.ConnectionInfoTarget.ProjectName : "database " + _comparisonInfo.ConnectionInfoTarget.DatabaseName)}.\n\nDo you want to refresh the comparison?", _appName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.CompareTabularModels();
}
}
else
{
toolStripStatusLabel1.Text = "ALM Toolkit - require validation for changes";
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
finally
{
Cursor.Current = Cursors.Default;
changeCursor(false);
}
}
private void HandleDatabaseDeployment(object sender, DatabaseDeploymentEventArgs e)
{
Deployment deployForm = new Deployment();
deployForm.Comparison = _comparison;
deployForm.ComparisonInfo = _comparisonInfo;
deployForm.DpiScaleFactor = _dpiScaleFactor;
deployForm.StartPosition = FormStartPosition.CenterParent;
deployForm.ShowDialog();
e.DeploymentSuccessful = (deployForm.DialogResult == DialogResult.OK);
}
private void HandleComparisonChanged(object sender, EventArgs e)
{
//If user changes a skip selection after validation, need to disable Update button
//if (ComparisonCtrl.CompareState == CompareState.Validated)
//{
// SetComparedState();
// toolStripStatusLabel1.Text = "ALM Toolkit - datasets compared";
//}
}
public void HandleComparisonChanged()
{
//If user changes a skip selection after validation, need to disable Update button
if (_compareState == CompareState.Validated)
{
if (InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
SetComparedState();
toolStripStatusLabel1.Text = "ALM Toolkit - datasets compared";
}));
}
}
if (InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
SetFileNameTitle(true);
}));
}
}
private void maqSoftwareLogo_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("https://maqsoftware.com/");
}
catch { }
}
private void SetFileNameTitle(bool unsaved)
{
_unsaved = unsaved;
if (String.IsNullOrEmpty(_fileName))
{
this.Text = _appName;
}
else
{
this.Text = _appName + " - " + Path.GetFileName(_fileName);
if (unsaved)
{
this.Text += " *";
}
}
}
public void LoadFile(string fileName)
{
try
{
if (File.ReadAllText(fileName) == "")
{
//Blank file not saved to yet
return;
}
_comparisonInfo = ComparisonInfo.DeserializeBsmnFile(fileName, _appName);
_fileName = fileName;
SetFileNameTitle(false);
PopulateSourceTargetTextBoxes();
}
catch (Exception exc)
{
MessageBox.Show($"Error loading file {fileName}\n{exc.Message}\n\nPlease save over this file with a new version.", _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void SaveFile(string fileName)
{
try
{
_fileName = fileName;
XmlSerializer writer = new XmlSerializer(typeof(ComparisonInfo));
StreamWriter file = new System.IO.StreamWriter(fileName);
_comparison.RefreshSkipSelectionsFromComparisonObjects();
writer.Serialize(file, _comparisonInfo);
file.Close();
}
catch (Exception exc)
{
MessageBox.Show($"Error saving file {fileName}\n{exc.Message}", _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void mnuOpen_Click(object sender, EventArgs e)
{
try
{
if (_unsaved && SaveChanges() == DialogResult.Cancel)
{
return;
}
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "ALM Toolkit Files (.almt)|*.almt";
ofd.Title = "Open";
if (ofd.ShowDialog() == DialogResult.OK)
{
SetNotComparedState();
this.LoadFile(ofd.FileName);
InitializeAndCompareTabularModels();
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
}
private void mnuSave_Click(object sender, EventArgs e)
{
Save();
}
public void SaveNg()
{
if (InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
Save();
}));
}
}
public void Save()
{
try
{
if (string.IsNullOrEmpty(_fileName))
{
SaveFileAs();
}
else
{
this.SaveFile(_fileName);
}
SetFileNameTitle(false);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
}
private void mnuSaveAs_Click(object sender, EventArgs e)
{
try
{
SaveFileAs();
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, _appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
SetNotComparedState();
}
}
private void SaveFileAs()
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "ALM Toolkit Files (.almt)|*.almt";
sfd.Title = "Save As";
if (String.IsNullOrEmpty(_fileName))
{
sfd.FileName = "Comparison1";
}
else
{
sfd.FileName = Path.GetFileName(_fileName);
}
if (sfd.ShowDialog() == DialogResult.OK)
{
_fileName = sfd.FileName;
SetFileNameTitle(false);
this.SaveFile(_fileName);
}
}
private void mnuExit_Click(object sender, EventArgs e)
{
if (_unsaved && SaveChanges() == DialogResult.Cancel)
{
return;
}
Application.Exit();
}
private DialogResult SaveChanges()
{
DialogResult result = MessageBox.Show("Do you want to save changes?", _appName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
switch (result)
{
case DialogResult.Yes:
Save();
break;
default:
break;
}
return result;
}
protected override void OnHandleDestroyed(EventArgs e)
{
this.SetNotComparedState();
base.OnHandleDestroyed(e);
}
#endregion
#region DPI
private float _dpiScaleFactor = 1;
private void Rescale()
{
float fudgedDpiScaleFactor = _dpiScaleFactor * HighDPIUtils.PrimaryFudgeFactor;
//pnlRibbon.Height = Convert.ToInt32(Convert.ToDouble(ribbonMain.Height) * HighDPIUtils.SecondaryFudgeFactor * 0.93);
ribbonMain.Height = pnlRibbon.Height;
spltSourceTarget.SplitterDistance = Convert.ToInt32(Convert.ToDouble(spltSourceTarget.Width) * 0.5);
txtSource.Width = Convert.ToInt32(Convert.ToDouble(Convert.ToDouble(spltSourceTarget.Width) * 0.5) * 0.9);
txtTarget.Width = Convert.ToInt32(Convert.ToDouble(Convert.ToDouble(spltSourceTarget.Width) * 0.5) * 0.9);
this._dpiScaleFactor = HighDPIUtils.GetDpiFactor();
if (this._dpiScaleFactor == 1) return;
this.Scale(new SizeF(fudgedDpiScaleFactor, fudgedDpiScaleFactor));
this.Font = new Font(this.Font.FontFamily,
this.Font.Size * fudgedDpiScaleFactor,
this.Font.Style);
pnlHeader.Font = new Font(pnlHeader.Font.FontFamily,
pnlHeader.Font.Size * fudgedDpiScaleFactor,
pnlHeader.Font.Style);
txtSource.Left = Convert.ToInt32(txtSource.Left * fudgedDpiScaleFactor * 0.9);
txtTarget.Left = Convert.ToInt32(txtTarget.Left * fudgedDpiScaleFactor * 0.9);
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,732 @@
namespace AlmToolkit
{
using BismNormalizer.TabularCompare.Core;
using BismNormalizer.TabularCompare;
using Model;
using Newtonsoft.Json;
using System.Collections.Generic;
using System;
public class ComparisonJSInteraction
{
#region Private members
private Comparison _comparison;
// The form class needs to be changed according to yours
private static ComparisonForm _instanceMainForm = null;
// Used to maintain a dictionary with direct access to the Angular node and C# comparison object
private Dictionary<int, AngularComposite> _directAccessList = new Dictionary<int, AngularComposite>();
#endregion
#region Public properties
// List to be used to populate data in grid control. This needs to be static, since everytime CEF Sharp invokes the method, it creates a new instance
// Need to revisit initialization to evaluate removal strategy
public static List<ComparisonNode> comparisonList = new List<ComparisonNode>();
public static List<ComparisonNode> selectedNodes = new List<ComparisonNode>();
public ComparisonJSInteraction(ComparisonForm mainForm)
{
_instanceMainForm = mainForm;
}
public Comparison Comparison
{
get { return _comparison; }
set { _comparison = value; }
}
#endregion
#region Angular endpoints
/// <summary>
/// Method that sends flattened comparison object to Angular control
/// </summary>
/// <returns></returns>
public string GetComparisonList()
{
string comparisonData = JsonConvert.SerializeObject(comparisonList);
return comparisonData;
}
/// <summary>
/// Save or Compare as per the action on UI
/// </summary>
/// <param name="action">Action to be performed</param>
public void SaveOrCompare(string action)
{
switch (action.ToLower())
{
case "save":
_instanceMainForm.SaveNg();
break;
case "compare":
_instanceMainForm.InitializeAndCompareTabularModelsNg();
break;
}
}
/// <summary>
/// Update the object as and when selected action is changed on UI
/// </summary>
/// <param name="id">Id of the node updated</param>
/// <param name="newAction">New selected action</param>
/// <param name="oldAction">Old selected action</param>
public void ChangeOccurred(int id, string newAction, string oldAction)
{
if (_directAccessList.ContainsKey(id))
{
AngularComposite currentNode = _directAccessList[id];
// if set parent to skip/create/delete, MAY need to set all children to skip/create/delete too (only the read only cells)
switch (newAction)
{
case "Skip":
currentNode.dotNetComparison.MergeAction = MergeAction.Skip;
currentNode.ngComparison.MergeAction = MergeAction.Skip.ToString();
CheckToSkipChildren(currentNode.ngComparison);
break;
case "Create":
currentNode.dotNetComparison.MergeAction = MergeAction.Create;
currentNode.ngComparison.MergeAction = MergeAction.Create.ToString();
CheckToCreateChildren(currentNode.ngComparison);
break;
case "Delete":
currentNode.dotNetComparison.MergeAction = MergeAction.Delete;
currentNode.ngComparison.MergeAction = MergeAction.Delete.ToString();
CheckToDeleteChildren(currentNode.ngComparison);
break;
case "Update":
currentNode.dotNetComparison.MergeAction = MergeAction.Update;
currentNode.ngComparison.MergeAction = MergeAction.Update.ToString();
break;
default:
break;
}
// Disable update menu on comparison change
_instanceMainForm.HandleComparisonChanged();
// Refresh the tree control, since grid is maintained here
_instanceMainForm.refreshGridControl(true);
}
}
/// <summary>
/// Perform required action on selected nodes
/// </summary>
/// <param name="action">Action to be performed: Skip, Update, Create or Delete</param>
/// <param name="selectedNodesUI">List of Node Ids which are selected on Angular control</param>
public void PerformActionsOnSelectedActions(string action, List<object> selectedNodesUI)
{
selectedNodes.Clear();
ComparisonNode nodeToAdd;
for (int nodeCounter = 0; nodeCounter < selectedNodesUI.Count; nodeCounter++)
{
if (_directAccessList.ContainsKey(Convert.ToInt32(selectedNodesUI[nodeCounter])))
{
AngularComposite currentNode = _directAccessList[Convert.ToInt32(selectedNodesUI[nodeCounter])];
nodeToAdd = currentNode.ngComparison;
selectedNodes.Add(nodeToAdd);
}
}
switch (action)
{
case "skip":
SkipItems(true);
break;
case "create":
CreateItems(true);
break;
case "delete":
DeleteItems(true);
break;
case "update":
UpdateItems(true);
break;
}
// Disable update menu on comparison change
_instanceMainForm.HandleComparisonChanged();
// Refresh the tree control, since grid is maintained here
_instanceMainForm.refreshGridControl(true);
}
#endregion
#region Data transformation and population
/// <summary>
/// Transform comparison object to structure understood by Angular control
/// </summary>
public void SetComparisonData()
{
if (this._comparison != null)
{
comparisonList.Clear();
_directAccessList.Clear();
foreach (ComparisonObject comparisonObject in this._comparison.ComparisonObjects)
{
this.PopulateComparisonData(comparisonObject, 0, null);
}
}
}
/// <summary>
/// Helper method to transform comparison object to structure understood by Angular control
/// </summary>
/// <param name="comparisonObject">Individual node in the tree</param>
/// <param name="level">Level in the heirarchy to which the object belongs</param>
/// <param name="parentNode">Reference to the parent node of the current object</param>
private void PopulateComparisonData(ComparisonObject comparisonObject, int level, ComparisonNode parentNode)
{
if (comparisonObject != null)
{
string nodeType = "";
switch (comparisonObject.ComparisonObjectType)
{
case ComparisonObjectType.DataSource:
nodeType = "Data Source";
break;
case ComparisonObjectType.CalculationItem:
nodeType = "Calculation Item";
break;
case ComparisonObjectType.Table:
//Check if source table has any calc item children. If yes, it's a calc group.
bool isCalcGroup = false;
foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects)
{
if (childComparisonObject.ComparisonObjectType == ComparisonObjectType.CalculationItem && childComparisonObject.Status != ComparisonObjectStatus.MissingInSource)
{
isCalcGroup = true;
break;
}
}
nodeType = isCalcGroup ? "Calculation Group" : "Table";
break;
default:
nodeType = comparisonObject.ComparisonObjectType.ToString();
break;
}
ComparisonNode currentNode = new ComparisonNode
{
NodeType = nodeType,
SourceName = comparisonObject.SourceObjectName,
TargetName = comparisonObject.TargetObjectName,
SourceInternalName = comparisonObject.SourceObjectInternalName,
TargetInternalName = comparisonObject.TargetObjectInternalName,
SourceObjectDefinition = comparisonObject.SourceObjectDefinition,
TargetObjectDefinition = comparisonObject.TargetObjectDefinition,
ShowNode = true,
Level = level,
MergeAction = comparisonObject.MergeAction.ToString(),
DisableMessage = "",
DropdownDisabled = false
};
if (parentNode != null)
{
currentNode.ParentId = parentNode.Id;
parentNode.ChildNodes.Add(currentNode.Id);
}
switch (comparisonObject.Status)
{
case ComparisonObjectStatus.MissingInTarget:
currentNode.Status = "Missing in Target";
break;
case ComparisonObjectStatus.MissingInSource:
currentNode.Status = "Missing in Source";
break;
case ComparisonObjectStatus.SameDefinition:
currentNode.Status = "Same Definition";
break;
case ComparisonObjectStatus.DifferentDefinitions:
currentNode.Status = "Different Definitions";
break;
default:
break;
}
comparisonList.Add(currentNode);
// Populate helper objects
AngularComposite angularComposite = new AngularComposite(currentNode, comparisonObject);
_directAccessList.Add(currentNode.Id, angularComposite);
// set drop-down to have limited members based on what is available
switch (comparisonObject.MergeAction)
{
case MergeAction.Create:
currentNode.AvailableActions = new List<string> { "Create", "Skip" };
if (parentNode != null && string.Equals(parentNode.Status, "Missing in Target") && string.Equals(parentNode.MergeAction, "Skip"))
{
comparisonObject.MergeAction = MergeAction.Skip;
currentNode.MergeAction = MergeAction.Skip.ToString();
currentNode.DropdownDisabled = true;
SetNodeTooltip(angularComposite, true);
}
break;
case MergeAction.Update:
currentNode.AvailableActions = new List<string> { "Update", "Skip" };
break;
case MergeAction.Delete:
currentNode.AvailableActions = new List<string> { "Delete", "Skip" };
//check if parent is also set to delete, in which case make this cell readonly
if (parentNode != null && string.Equals(parentNode.MergeAction, "Delete"))
{
currentNode.DropdownDisabled = true;
SetNodeTooltip(angularComposite, true);
}
break;
case MergeAction.Skip:
switch (comparisonObject.Status)
{
case ComparisonObjectStatus.MissingInTarget:
currentNode.AvailableActions = new List<string> { "Create", "Skip" };
//check if parent is also MissingInTarget and Skip, make this cell readonly
if (parentNode != null && string.Equals(parentNode.Status, "Missing in Target") && string.Equals(parentNode.MergeAction, "Skip"))
{
currentNode.DropdownDisabled = true;
SetNodeTooltip(angularComposite, true);
}
break;
case ComparisonObjectStatus.MissingInSource:
currentNode.AvailableActions = new List<string> { "Delete", "Skip" };
break;
case ComparisonObjectStatus.DifferentDefinitions:
currentNode.AvailableActions = new List<string> { "Update", "Skip" };
break;
default:
//default covers ComparisonObjectStatus.SameDefinition: which is most common case (above cases are for saved skip selections from file)
currentNode.AvailableActions = new List<string> { "Skip" };
currentNode.DropdownDisabled = true;
SetNodeTooltip(angularComposite, true);
break;
}
break;
default:
break;
};
// Add child objects if it exists
if (comparisonObject.ChildComparisonObjects != null && comparisonObject.ChildComparisonObjects.Count > 0)
{
foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects)
{
PopulateComparisonData(childComparisonObject, level + 1, currentNode);
}
}
}
}
#endregion
#region Helper functions
/// <summary>
/// Set visibility of Angular node
/// </summary>
/// <param name="IsVisible">Show or hide node</param>
/// <param name="sourceObjectName">Display name of the node for source</param>
/// <param name="sourceObjectId">Internal name of the node for source</param>
/// <param name="targetObjectName">Display name of the node for target</param>
/// <param name="targetObjectId">Internal name of the node for target</param>
/// <param name="objType">Object type i.e. Data source, KPI, Measure</param>
private void SetNodeVisibility(bool IsVisible, AngularComposite node)
{
if (node != null)
{
//node.IsVisible = IsVisible;
node.ngComparison.ShowNode = IsVisible;
}
}
private void SetNodeTooltip(AngularComposite node, bool disabledDueToParent)
{
node.ngComparison.DisableMessage = (disabledDueToParent ? "This object's action option is disabled due to a parent object selection" : "");
}
#endregion
#region Menu actions
/// <summary>
/// Show or Hide skip nodes
/// </summary>
/// <param name="hide">Hide Skip nodes</param>
/// <param name="sameDefinitionFilter">Hide objects only in case of same definition</param>
public void ShowHideSkipNodes(bool hide, bool sameDefinitionFilter = false)
{
if (this._comparison != null)
{
foreach (ComparisonNode node in comparisonList)
{
ShowHideSkipNodes(node, hide, sameDefinitionFilter);
}
}
}
/// <summary>
/// Show or hide skip nodes
/// </summary>
/// <param name="comparisonObject">List of comparison objects for whom children are to be checked</param>
/// <param name="hide">Show or hide the node</param>
/// <param name="sameDefinitionFilter">Hide nodes with same definition</param>
private void ShowHideSkipNodes(ComparisonNode node, bool hide, bool sameDefinitionFilter)
{
bool isVisible = true;
if (node.MergeAction.ToString() == "Skip" && (!sameDefinitionFilter || (sameDefinitionFilter && hide && node.Status.ToString() == "Same Definition")))
{
// if currently selected skip item contains Update, Delete or Create children, then need to keep visible - or result in orphans
bool foundCreateOrDeleteChild = false;
foreach (int childNodeId in node.ChildNodes)
{
if (_directAccessList.ContainsKey(childNodeId))
{
AngularComposite childNode = _directAccessList[childNodeId];
if (childNode.dotNetComparison.MergeAction == MergeAction.Update || childNode.dotNetComparison.MergeAction == MergeAction.Delete || childNode.dotNetComparison.MergeAction == MergeAction.Create)
{
foundCreateOrDeleteChild = true;
break;
}
}
}
if (hide)
{
if (!foundCreateOrDeleteChild)
{
isVisible = false;
}
}
else
{
isVisible = true;
}
}
else
{
isVisible = (
!(node.MergeAction.ToString() == "Skip " &&
(node.ChildNodes.Count == 0 || !NodeContainsEditableChildren(node, hide))));
}
if (_directAccessList.ContainsKey(node.Id))
{
AngularComposite childNode = _directAccessList[node.Id];
SetNodeVisibility(isVisible, childNode);
}
foreach (int childNodeId in node.ChildNodes)
{
if (_directAccessList.ContainsKey(childNodeId))
{
AngularComposite childNode = _directAccessList[childNodeId];
ShowHideSkipNodes(childNode.ngComparison, hide, sameDefinitionFilter);
}
}
}
/// <summary>
/// Check if node contains editable children
/// </summary>
/// <param name="node">Node for which children is to be checked</param>
/// <param name="hide">Hide or show</param>
/// <returns></returns>
private bool NodeContainsEditableChildren(ComparisonNode node, bool hide)
{
bool containsChildren = false;
foreach (int childNodeId in node.ChildNodes)
{
if (_directAccessList.ContainsKey(childNodeId))
{
AngularComposite childComposite = _directAccessList[childNodeId];
ComparisonNode childNode = childComposite.ngComparison;
if ((hide &&
childNode.MergeAction != "Skip " &&
childNode.MergeAction != "Skip") ||
(!hide &&
childNode.MergeAction != "Skip "))
{
containsChildren = true;
}
else
{
bool childContainsChildren = NodeContainsEditableChildren(childNode, hide);
if (!containsChildren)
{
containsChildren = childContainsChildren;
}
}
if (childNode.MergeAction.ToString() == "Skip")
{
SetNodeVisibility(!hide, childComposite);
}
}
}
if (node.MergeAction.ToString() != "Skip")
{
if (_directAccessList.ContainsKey(node.Id))
{
AngularComposite nodeComposite = _directAccessList[node.Id];
SetNodeVisibility(containsChildren, nodeComposite);
}
}
return containsChildren;
}
/********** Set node to skip depending on comparison object status ****************/
/// <summary>
/// Sets Action property of objects to Skip within given range.
/// </summary>
/// <param name="selectedOnly"></param>
/// <param name="comparisonStatus"></param>
public void SkipItems(bool selectedOnly, ComparisonObjectStatus comparisonObjectStatus = ComparisonObjectStatus.Na) //Na because won't take null cos it's an enum
{
List<ComparisonNode> listToUse = (selectedOnly ? selectedNodes : comparisonList);
foreach (ComparisonNode node in listToUse)
{
// In case of selected only, check if item is present in selected objects
SkipItemPrivate(comparisonObjectStatus, node);
}
}
private void SkipItemPrivate(ComparisonObjectStatus comparisonObjectStatus, ComparisonNode row)
{
if (comparisonObjectStatus == ComparisonObjectStatus.Na ||
(comparisonObjectStatus == ComparisonObjectStatus.DifferentDefinitions && row.Status == "Different Definitions") ||
(comparisonObjectStatus == ComparisonObjectStatus.MissingInSource && row.Status == "Missing in Source") ||
(comparisonObjectStatus == ComparisonObjectStatus.MissingInTarget && row.Status == "Missing in Target"))
{
bool isReadOnly = row.DropdownDisabled;
if (!isReadOnly &&
row.MergeAction != MergeAction.Skip.ToString()
//&&
//row.Cells[8].Value.ToString() != "Set Parent Node" -- Need to check where is this value set
)
{
row.MergeAction = MergeAction.Skip.ToString();
if (_directAccessList.ContainsKey(row.Id))
{
AngularComposite node = _directAccessList[row.Id];
node.dotNetComparison.MergeAction = MergeAction.Skip;
CheckToSkipChildren(row);
}
}
}
}
private void CheckToSkipChildren(ComparisonNode selectedRow)
{
// if Missing in Target (default is create) and user selects skip, definitely can't create child objects, so set them to skip too and disable them
if (selectedRow.Status == "Missing in Target")
{
//TreeGridNode selectedNode = FindNodeByIDs(selectedRow.Cells[0].Value.ToString(), selectedRow.Cells[2].Value.ToString(), selectedRow.Cells[6].Value.ToString());
foreach (int node in selectedRow.ChildNodes)
{
SetNodeToSkip(node);
}
}
// if Missing in Source (default is delete) and user selects skip, he may still want to delete some child objects, so ensure they are enabled
else if (selectedRow.Status == "Missing in Source")
{
//TreeGridNode selectedNode = FindNodeByIDs(selectedRow.Cells[0].Value.ToString(), selectedRow.Cells[2].Value.ToString(), selectedRow.Cells[6].Value.ToString());
foreach (int nodeId in selectedRow.ChildNodes)
{
if (_directAccessList.ContainsKey(nodeId))
{
AngularComposite node = _directAccessList[nodeId];
if (node.ngComparison.AvailableActions.Contains("Skip"))
{
node.ngComparison.DropdownDisabled = false;
SetNodeTooltip(node, false);
}
}
}
}
}
private void SetNodeToSkip(int nodeId)
{
if (_directAccessList.ContainsKey(nodeId))
{
AngularComposite node = _directAccessList[nodeId];
if (node.ngComparison.AvailableActions.Contains("Skip"))
{
node.ngComparison.MergeAction = MergeAction.Skip.ToString();
node.ngComparison.DropdownDisabled = true;
node.dotNetComparison.MergeAction = MergeAction.Skip;
SetNodeTooltip(node, true);
}
foreach (int childNode in node.ngComparison.ChildNodes)
{
SetNodeToSkip(childNode);
}
}
}
/************* End section ****************/
/********** Set node to update ****************/
/// <summary>
/// Set actions for node with different definitions to update
/// </summary>
/// <param name="selectedOnly">Set for selected nodes or all nodes</param>
public void UpdateItems(bool selectedOnly)
{
// If selected only, pick items from selected list
List<ComparisonNode> listToUse = (selectedOnly ? selectedNodes : comparisonList);
// Not necessary to run twice with internal method because Updates don't impact children
foreach (ComparisonNode item in listToUse)
{
if (item.AvailableActions.Contains("Update"))
{
item.MergeAction = MergeAction.Update.ToString();
// Set merge action in corresponding comparison list
_directAccessList[item.Id].dotNetComparison.MergeAction = MergeAction.Update;
}
}
}
/************* End section ****************/
/********** Set node to create ****************/
/// <summary>
/// Sets Action property of objects to Create within given range.
/// </summary>
/// <param name="selectedOnly"></param>
public void CreateItems(bool selectedOnly)
{
List<ComparisonNode> listToUse = (selectedOnly ? selectedNodes : comparisonList);
foreach (ComparisonNode item in listToUse)
{
//DataGridViewRow row = (selectedOnly ? this.SelectedRows[i] : this.Rows[i]);
bool isReadOnly = item.DropdownDisabled;
if (!isReadOnly && item.MergeAction != "Skip " // This condition is not working in existing code. Retained for consistency with existing code.
&& item.AvailableActions.Contains(MergeAction.Create.ToString()))
{
item.MergeAction = MergeAction.Create.ToString();
// Set merge action in corresponding comparison list
_directAccessList[item.Id].dotNetComparison.MergeAction = MergeAction.Create;
// Check status of children
CheckToCreateChildren(item);
}
}
}
private void CheckToCreateChildren(ComparisonNode selectedRow)
{
// if Missing in Target (default is create) and user selects create, he may still want to skip some child objects, so ensure they are enabled
if (selectedRow.Status.ToString() == "Missing in Target")
{
foreach (int nodeId in selectedRow.ChildNodes)
{
AngularComposite node = _directAccessList[nodeId];
if (node.ngComparison.AvailableActions.Contains(MergeAction.Create.ToString()))
{
node.ngComparison.DropdownDisabled = false;
SetNodeTooltip(node, false);
}
}
}
}
/************* End section ****************/
/********** Set node to delete ****************/
/// <summary>
/// Sets Action property of objects to Delete within given range.
/// </summary>
/// <param name="selectedOnly"></param>
public void DeleteItems(bool selectedOnly)
{
List<ComparisonNode> listToUse = (selectedOnly ? selectedNodes : comparisonList);
foreach (ComparisonNode item in listToUse)
{
bool isReadOnly = item.DropdownDisabled;
if (!isReadOnly
&& item.MergeAction != "Skip " // This condition is not working in existing code. Retained for consistency with existing code.
&& item.AvailableActions.Contains(MergeAction.Delete.ToString()))
{
item.MergeAction = MergeAction.Delete.ToString();
// Set merge action in corresponding comparison list
_directAccessList[item.Id].dotNetComparison.MergeAction = MergeAction.Delete;
// Check status of children
CheckToDeleteChildren(item);
}
}
}
private void CheckToDeleteChildren(ComparisonNode selectedRow)
{
// if Missing in Source (default is delete) and user selects delete, definitely can't skip child objects, so set them to delete too and disable them
if (selectedRow.Status == "Missing in Source")
{
foreach (int node in selectedRow.ChildNodes)
{
SetNodeToDelete(node);
}
}
}
private void SetNodeToDelete(int nodeId)
{
if (_directAccessList.ContainsKey(nodeId))
{
AngularComposite node = _directAccessList[nodeId];
if (node.ngComparison.AvailableActions.Contains("Delete"))
{
node.ngComparison.MergeAction = MergeAction.Delete.ToString();
node.ngComparison.DropdownDisabled = true;
node.dotNetComparison.MergeAction = MergeAction.Delete;
SetNodeTooltip(node, true);
}
foreach (int childNode in node.ngComparison.ChildNodes)
{
SetNodeToDelete(childNode);
}
}
}
/************* End section ****************/
#endregion
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 134.73"><defs><style>.cls-1{fill:#020202;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M158.77,116.62h-3.63v-7.26h3.63a14,14,0,0,0,14-14V21.23a14,14,0,0,0-14-14H21.23a14,14,0,0,0-14,14V95.39a14,14,0,0,0,14,14h3.63v7.26H21.23A21.25,21.25,0,0,1,0,95.39V21.23A21.25,21.25,0,0,1,21.23,0H158.77A21.25,21.25,0,0,1,180,21.23V95.39a21.25,21.25,0,0,1-21.23,21.23"/><path class="cls-1" d="M43.53,134.73a9.85,9.85,0,0,1-9.85-9.85V102.17a9.85,9.85,0,0,1,9.85-9.86h0a9.85,9.85,0,0,1,9.85,9.85v22.71a9.85,9.85,0,0,1-9.85,9.86Z"/><path class="cls-1" d="M74.51,134.73a9.85,9.85,0,0,1-9.85-9.85V66.57a9.85,9.85,0,0,1,19.71,0v58.31a9.85,9.85,0,0,1-9.85,9.85"/><path class="cls-1" d="M136.48,134.45a9.85,9.85,0,0,1-9.85-9.85V42a9.85,9.85,0,0,1,19.71,0v82.59a9.85,9.85,0,0,1-9.85,9.85"/><path class="cls-1" d="M105.49,134.73a9.85,9.85,0,0,1-9.85-9.85V81.56a9.85,9.85,0,1,1,19.71,0v43.32a9.85,9.85,0,0,1-9.85,9.85"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,21 @@
namespace AlmToolkit.Model
{
using BismNormalizer.TabularCompare.Core;
class AngularComposite
{
public ComparisonNode ngComparison;
public ComparisonObject dotNetComparison;
/// <summary>
/// Constructor for composite node with Angular and .Net
/// </summary>
/// <param name="node">Set value for angular node</param>
/// <param name="comparisonObject">set value for .Net node</param>
public AngularComposite(ComparisonNode node, ComparisonObject comparisonObject)
{
ngComparison = node;
dotNetComparison = comparisonObject;
}
}
}

View File

@ -0,0 +1,88 @@
namespace AlmToolkit.Model
{
using System.Collections.Generic;
public class ComparisonNode
{
private static int objectCount = 1;
/// <summary>
/// Id of the object
/// </summary>
public int Id { get; }
/// <summary>
/// Node type of the object
/// Example: Data Source, Table, Relationship, KPI
/// </summary>
public string NodeType { get; set; }
/// <summary>
/// Id of this object's parent
/// </summary>
public int ParentId { get; set; }
/// <summary>
/// Name of this object in source schema
/// </summary>
public string SourceName { get; set; }
/// <summary>
/// Name of this object in target schema
/// </summary>
public string TargetName { get; set; }
/// <summary>
/// Internal name of this object in source schema
/// </summary>
public string SourceInternalName { get; set; }
/// <summary>
/// Internal Name of this object in target schema
/// </summary>
public string TargetInternalName { get; set; }
/// <summary>
/// Indentation level of the object
/// </summary>
public int Level { get; set; }
/// <summary>
/// Status of the object compared to the source and target
/// </summary>
public string Status { get; set; }
/// <summary>
/// Current action to be performed for this object
/// </summary>
public string MergeAction { get; set; }
/// <summary>
/// Code at source
/// </summary>
public string SourceObjectDefinition { get; set; }
/// <summary>
/// Code at target
/// </summary>
public string TargetObjectDefinition { get; set; }
/// <summary>
/// Ids of the children nodes
/// </summary>
public List<int> ChildNodes { get; set; }
/// <summary>
/// Actions that can be performed for this object
/// </summary>
public List<string> AvailableActions { get; set; }
/// <summary>
/// To maintain if the object is to be shown on UI or not
/// </summary>
public bool ShowNode { get; set; }
/// <summary>
/// To maintain if the dropdown is disabled on the UI
/// </summary>
public bool DropdownDisabled { get; set; }
/// <summary>
/// Text mentioning why the dropdown is disabled
/// </summary>
public string DisableMessage { get; set; }
public ComparisonNode()
{
Id = objectCount;
objectCount = objectCount + 1;
ChildNodes = new List<int>();
}
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AlmToolkit
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//with args(user open file with the program)
if (args != null && args.Length > 0)
{
string fileName = args[0];
//Check file exists
if (File.Exists(fileName))
{
ComparisonForm MainFrom = new ComparisonForm();
MainFrom.LoadFile(fileName);
Application.Run(MainFrom);
}
//The file does not exist
else
{
Application.Run(new ComparisonForm());
}
}
//without args
else
{
Application.Run(new ComparisonForm());
}
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("AlmToolkit")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AlmToolkit")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("765c0612-bb8f-4261-87ae-b5b842be3c26")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.0.1.13")]
[assembly: AssemblyFileVersion("4.0.1.13")]

View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AlmToolkit.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AlmToolkit.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AlmToolkit.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -0,0 +1,139 @@
namespace AlmToolkit
{
partial class WarningListForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WarningListForm));
this.btnOK = new System.Windows.Forms.Button();
this.validationOutput = new BismNormalizer.TabularCompare.UI.ValidationOutput();
this.panelOk = new System.Windows.Forms.Panel();
this.panelGrid = new System.Windows.Forms.Panel();
this.TreeGridImageList2 = new System.Windows.Forms.ImageList(this.components);
this.panelOk.SuspendLayout();
this.panelGrid.SuspendLayout();
this.SuspendLayout();
//
// btnOK
//
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(609, 12);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 23);
this.btnOK.TabIndex = 20;
this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true;
//
// validationOutput
//
this.validationOutput.Dock = System.Windows.Forms.DockStyle.Fill;
this.validationOutput.Location = new System.Drawing.Point(0, 0);
this.validationOutput.Margin = new System.Windows.Forms.Padding(7, 7, 7, 7);
this.validationOutput.Name = "validationOutput";
this.validationOutput.Size = new System.Drawing.Size(696, 342);
this.validationOutput.TabIndex = 22;
//
// panelOk
//
this.panelOk.Controls.Add(this.btnOK);
this.panelOk.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panelOk.Location = new System.Drawing.Point(0, 342);
this.panelOk.Name = "panelOk";
this.panelOk.Size = new System.Drawing.Size(696, 47);
this.panelOk.TabIndex = 23;
//
// panelGrid
//
this.panelGrid.Controls.Add(this.validationOutput);
this.panelGrid.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelGrid.Location = new System.Drawing.Point(0, 0);
this.panelGrid.Name = "panelGrid";
this.panelGrid.Size = new System.Drawing.Size(696, 342);
this.panelGrid.TabIndex = 24;
//
// TreeGridImageList2
//
this.TreeGridImageList2.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("TreeGridImageList2.ImageStream")));
this.TreeGridImageList2.TransparentColor = System.Drawing.Color.Transparent;
this.TreeGridImageList2.Images.SetKeyName(0, "Connection.png");
this.TreeGridImageList2.Images.SetKeyName(1, "Table.png");
this.TreeGridImageList2.Images.SetKeyName(2, "Relationship.png");
this.TreeGridImageList2.Images.SetKeyName(3, "BismMeasure.png");
this.TreeGridImageList2.Images.SetKeyName(4, "KPI.png");
this.TreeGridImageList2.Images.SetKeyName(5, "DeleteAction.png");
this.TreeGridImageList2.Images.SetKeyName(6, "UpdateAction.png");
this.TreeGridImageList2.Images.SetKeyName(7, "CreateAction.png");
this.TreeGridImageList2.Images.SetKeyName(8, "SkipAction.png");
this.TreeGridImageList2.Images.SetKeyName(9, "Plus.png");
this.TreeGridImageList2.Images.SetKeyName(10, "Minus.png");
this.TreeGridImageList2.Images.SetKeyName(11, "Informational.png");
this.TreeGridImageList2.Images.SetKeyName(12, "Warning.png");
this.TreeGridImageList2.Images.SetKeyName(13, "WarningToolWindow.png");
this.TreeGridImageList2.Images.SetKeyName(14, "Role.png");
this.TreeGridImageList2.Images.SetKeyName(15, "Perspective.png");
this.TreeGridImageList2.Images.SetKeyName(16, "Action.png");
this.TreeGridImageList2.Images.SetKeyName(17, "CompareBismModels_Small.png");
this.TreeGridImageList2.Images.SetKeyName(18, "DeleteActionGrey.png");
this.TreeGridImageList2.Images.SetKeyName(19, "SkipActionGrey.png");
this.TreeGridImageList2.Images.SetKeyName(20, "CreateActionGrey.png");
this.TreeGridImageList2.Images.SetKeyName(21, "Culture.png");
this.TreeGridImageList2.Images.SetKeyName(22, "Expression.png");
this.TreeGridImageList2.Images.SetKeyName(23, "CalculationGroup.png");
this.TreeGridImageList2.Images.SetKeyName(24, "CalculationItem.png");
this.TreeGridImageList2.Images.SetKeyName(25, "Model.png");
this.TreeGridImageList2.Images.SetKeyName(26, "RefreshPolicy.png");
//
// WarningListForm
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnOK;
this.ClientSize = new System.Drawing.Size(696, 389);
this.Controls.Add(this.panelGrid);
this.Controls.Add(this.panelOk);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Name = "WarningListForm";
this.Text = "Warning List";
this.Load += new System.EventHandler(this.WarningListForm_Load);
this.Shown += new System.EventHandler(this.WarningListForm_Shown);
this.panelOk.ResumeLayout(false);
this.panelGrid.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnOK;
private BismNormalizer.TabularCompare.UI.ValidationOutput validationOutput;
private System.Windows.Forms.Panel panelOk;
private System.Windows.Forms.Panel panelGrid;
public System.Windows.Forms.ImageList TreeGridImageList2;
}
}

View File

@ -0,0 +1,68 @@
using BismNormalizer.TabularCompare;
using BismNormalizer.TabularCompare.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AlmToolkit
{
public partial class WarningListForm : Form
{
public WarningListForm()
{
InitializeComponent();
}
private Comparison _comparison;
private ImageList _treeGridImageList;
public Comparison Comparison
{
get { return _comparison; }
set { _comparison = value; }
}
public ImageList TreeGridImageList
{
get { return _treeGridImageList; }
set { _treeGridImageList = value; }
}
private void WarningListForm_Load(object sender, EventArgs e)
{
_treeGridImageList = this.TreeGridImageList2;
validationOutput.ClearMessages(0);
validationOutput.SetImageList(_treeGridImageList);
_comparison.ValidationMessage += HandleValidationMessage;
_comparison.ResizeValidationHeaders += HandleResizeValidationHeaders;
}
private void WarningListForm_Shown(object sender, EventArgs e)
{
_comparison.ValidateSelection();
}
public void HandleValidationMessage(object sender, ValidationMessageEventArgs e)
{
validationOutput.ShowStatusMessage(
0,
"ALM Toolkit Comparison",
e.Message,
e.ValidationMessageType,
e.ValidationMessageStatus);
}
public void HandleResizeValidationHeaders(object sender, EventArgs e)
{
validationOutput.ResizeValidationHeaders();
}
}
}

View File

@ -0,0 +1,538 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="TreeGridImageList2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="TreeGridImageList2.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACI
XwAAAk1TRnQBSQFMAgEBGwEAAZQBAgGUAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABcAMAAQEBAAEgBgABcBIAA8IBzwP2Af8D9gH/A4EBj4AAA/YB/wPgAewDawF4AwoBDAMKAQwDawF4
A+AB7AP1Af9QAAP2Af8DQQH/A0EB/wO+Af8DkAGfA2MBcAOBAY8DKAEwA2MBcAOQAZ8DVAFgOAAD9gH/
A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/EAAD9gH/A14B/wO4Af8D4AHsA+AB7AO4Af8DXgH/A+sB/1AA
A7EBvwP2Af8DpwH/A0wB/wP2Af8DyQH/A0EB/wPrAf8D1AH/A5EB/wPUAf8DcgGANAAD9gH/A0EB/wNB
Af8DQQH/A0EB/wNBAf8D9gH/EAAD9gH/A0EB/wFaAlkB/wNeAf8DXgH/A14B/wNBAf8D6wH/VAADKAEw
A9QB/wNBAf8DvgH/A8kB/wOcAf8DQQH/A24B/wNBAf8DnAH/A/YB/xgAA/YB/wP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8QAAP2Af8DQQH/
AeUB4wHkAf8DtQH/A7UB/wHwAe4B7wH/A0EB/wPrAf9YAAPkAe8DTAH/A5EB/wPRAd8DoQGvA74B/wNB
Af8DswH/A+QB7wNyAYAYAAP2Af8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/EAAD9gH/A0EB/wHmAeQB5QH/AfEB7wHwAf8B8QHvAfAB/wHx
Ae8B8AH/A0EB/wPrAf9UAAMoATAD5AHvA3kB/wNjAf8D9gH/A/YB/wOzAf8DQQH/A6cB/wP2Af8DwgHP
GAAD9gH/A0EB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xAA
A/YB/wNBAf8B5gHkAeUB/wHwAe4B7wH/AfAB7gHvAf8B8QHvAfAB/wNBAf8D6wH/VAADDQEQA/YB/wNB
Af8DQQH/A0EB/wOGAf8DTAH/A24B/wOGAf8DQQH/A/YB/wMNARAUAAP2Af8DQQH/A/YB/xAAA/YB/wNB
Af8DQQH/A0EB/wNBAf8DQQH/A/YB/xAAA/YB/wNBAf8DagH/A0YB/wNGAf8DbwH/A0EB/wPrAf9YAAPC
Ac8D4AH/A0wB/wOzAf8D1AH/A/YB/wPJAf8DpwH/A9QB/wPJAf8DwgHPFAAD9gH/A0EB/wP2Af8QAAP2
Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8MAAONAZwDtQH/A0sB/wGpAagBqQH/Ad8B3QHeAf8B3wHd
Ad4B/wGpAagBqQH/A0sB/wO0Af8DjQGcWAADgQGPA7MB/wNBAf8DQQH/A9QB/wNBAf8BjwKOAf8BjwKO
Af8DVwH/A7MB/wOQAZ8IAAP2Af8D9gH/A/YB/wNBAf8D9gH/A/YB/wP2Af8IAAP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8IAAMdASMD5QH+A0sB/wHLAckBygH/AZgClwH/A0gB/wNIAf8BmAKXAf8BywHJ
AcoB/wNLAf8D5QH+Ax0BI1gAA4EBjwP2Af8D4AH/A5AB/wGkAaMBpAH/AdsB2QHaAf8B2wHZAdoB/wGk
AaMBpAH/A0EB/wPUAf8DYwFwBAAD9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAAD9gH/A0EB/wNB
Af8DQQH/A0EB/wNBAf8D9gH/CAADXgFrA64B/wN0Af8BuwG6AbsB/wNTAf8BzwHOAc8B/wHPAc4BzwH/
A1MB/wG7AboBuwH/A3QB/wOuAf8DXgFrWAADRQFQA+sB/wNBAf8B0ALPAf8DQQH/AfEB7wHwAf8B8QHv
AfAB/wNBAf8B0ALPAf8DQQH/A+sB/wNFAVAD9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNB
Af8D9gH/A/YB/wP2Af8D9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/CAADcwGB
A5sB/wOPAf8BmAGXAZgB/wGJAogB/wHxAe8B8AH/AfEB7wHwAf8BiQKIAf8BmAKXAf8DjwH/A5oB/wN0
AYJYAAPkAe8DYwH/AdACzwH/AcUBxAHFAf8BugG5AboB/wHxAe8B8AH/AfEB7wHwAf8BugG5AboB/wHF
AcQBxQH/AdACzwH/A0EB/wPkAe8D9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8DQQH/
A0EB/wNBAf8DQQH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/CAADXgFrA64B/wN0
Af8BuwG6AbsB/wNTAf8BzwHOAc8B/wHPAc4BzwH/A1MB/wG7AboBuwH/A3QB/wOuAf8DXgFrWAAD9gH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wP2Af8D9gH/A0EB/wNBAf8DQQH/
A0EB/wNBAf8D9gH/A/YB/wP2Af8D9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAADIAEmA+YB/wNJ
Af8BywHJAcoB/wGYApcB/wNIAf8DSAH/AZgClwH/AcsByQHKAf8DSQH/A+YB/wMgASZYAAP2Af8DTAH/
Aa8BrgGvAf8B0ALPAf8BpAGjAaQB/wHxAe8B8AH/AfEB7wHwAf8BpAGjAaQB/wHQAs8B/wGvAa4BrwH/
A0wB/wP2Af8D9gH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/CAAD9gH/A0EB/wNBAf8DQQH/A0EB/wNB
Af8D9gH/DAADkgGgA7IB/wNMAf8BqQGoAakB/wHgAd4B3wH/AeAB3gHfAf8BqQGoAakB/wNMAf8DsgH/
A5IBoFwAA5ABnwPUAf8DTAH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0wB/wPUAf8DkAGfA/YB/wP2
Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wgAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wwAAwkBCwOx
Ab8DxgH/A2wB/wNFAf8DRQH/A2wB/wPGAf8DsQG/AwkBC2AAA5ABnwP2Af8D9gH/A/YB/wP2Af8D9gH/
A/YB/wP2Af8D9gH/A5ABn1QAAwQBBQNeAWsDwgHPA/AB+gPwAfoDwgHPA14BawMEAQX/ABEAA8IBzwP2
Af8D9gH/A4EBj0gAA58B/wOfAf8DnwH/A58B/2QAA1sBuwOAAf8sAAP2Af8DQQH/A2MB/wO+Af8DkAGf
A2MBcAOBAY8DKAEwA2MBcAOQAZ8DVAFgLAADnwH/A58B/wOfAf8DnwH/MAADBwEKA1YBwQMuAUcQAAM0
AVQDVgG7AzoBYRAAAwcBCQNOAZkoAAOxAb8D9gH/A6cB/wNMAf8D9gH/A8kB/wORAf8D6wH/A9QB/wOR
Af8D1AH/A/YB/wP2Af8D9gH/A/YB/wP2Af8YAAOhAf8DnwH/A58B/wOhAf83AAH/A1MBrRAAA1gBwAMP
AfwDPQFpFAADgAH/CAADgAH/AxMBGgQAA0cBgANDAXcQAAP2Af8DvgH/A0EB/wO+Af8DyQH/A5wB/wN5
Af8DbgH/A1gB/wOcAf8DyQH/A0EB/wNBAf8DQQH/A/YB/xgAA6EB/wOfAf8DnwH/A58B/xgAAxIBGQMq
AUEUAANMAZEDAAH/DAADBAEFAwAB/wNHAYIDBgEIFAADaAHeAxMBGgQAA0MBdwNAAW8EAANzAfMEAAMq
AUAMAAP2Af8DswH/A0wB/wORAf8B9ALzAf8DeQH/A74B/wNBAf8DswH/A6cB/wHyAfAB8QH/AfEB7wHw
Af8B8QHvAfAB/wNBAf8D9gH/GAADoQH/A58B/wOfAf8DnwH/GAADOQFgAwAB/wNLAY4QAAMjATQDAAH/
A1kBxANZAdIDWwHQA1oBygMAAf8DGgElGAADVQGqA1UBqgwAA2IBzANvAeYUAAP2Af8DyQH/A3kB/wNj
Af8D9QH/A7MB/wOzAf8DQQH/A6cB/wPJAf8B8wLyAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8EAAOh
Af8DnwH/A58B/wOfAf8DnwH/A6EB/wOfAf8DnwH/A58B/wOfAf8DoQH/A58B/wOfAf8DnwH/CAADPAFn
AwAB/wM/AW8IAANZAckDKgFAA1kBxAMAAf8DVwHFA1cBxQMAAf8DWQHXHAADOgFiA4AB/wwAAzUBVQNO
AZkUAAP2Af8DyQH/A1gB/wNBAf8DkQH/A4YB/wNMAf8DbgH/A4YB/wNBAf8DyQH/A0EB/wNBAf8DQQH/
A/YB/wQAA58B/wOhAf8DnwH/A58B/wOhAf8DoQH/A6EB/wOfAf8DoQH/A6EB/wOhAf8DnwH/A6EB/wOf
Af8MAANJAYkDAAH/BAADOAFcAwAB/wMKAQ4DRAF5AwAB/wsAAf8DSgGNHAADEwEaA4AB/wwAA4AB/wNS
AaIUAAP2Af8DhgH/A98B/wNMAf8DswH/A9QB/wP2Af8D9AH/AfQC8wH/A8kB/wHzAvIB/wHxAe8B8AH/
AfEB7wHwAf8DQQH/A/YB/wQAA58B/wOfAf8DoQH/A58B/wOhAf8DnwH/A6EB/wOfAf8DnwH/A58B/wOf
Af8DnwH/A6EB/wOfAf8QAANMAe8DWQHJAyEB+gNIAYgEAAMfASwDAAH/Ax4BKwMdASoDAAH/Ax0BKSAA
A4AB/wMmATgEAANNAZEDgAH/BAADTgGZA28B6gwAA/YB/wNBAf8B8gHwAfEB/wOyAf8DWAH/A1gB/wPU
Af8B8QHvAfAB/wHxAe8B8AH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8D9gH/BAADnwH/
A6EB/wOfAf8DoQH/A58B/wOhAf8DoQH/A58B/wOhAf8DnwH/A58B/wOhAf8DnwH/A58B/xAAAzEBTgMA
Af8DWgHVDAADIQH6A0oBiwNKAYoDMQH4JAADcgHuA0MBdyQAA/YB/wNBAf8DQQH/A2MB/wO+Af8DyQH/
A4YB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8D9gH/GAADnwH/A58B/wOfAf8DnwH/GAADJQE3
A0IBdAM4AV0DOwFlAwAB/wNTAbADKAE9A0IBdgMOARMDQgF1AwAB/wMAAf8DSAGGIAADPgFrA28B5gNp
Ad0DRwGAIAAD9gH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wNBAf8B8QHvAfAB/wHxAe8B8AH/
AfEB7wHwAf8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wP2Af8YAAOfAf8DnwH/A6EB/wOh
Af8YAANKAYwDAAH/AwAB/wMAAf4DAAH+Aw8B/AMAAf8DAAH/A1YBuwMMARADAAH/AwAB/wMdASooAAN3
AfckAAP2Af8DQQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/A0EB/wHxAe8B8AH/AfEB7wHwAf8B8QHv
AfAB/wNBAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DQQH/A/YB/xgAA6EB/wOfAf8DnwH/A6EB/xgA
AwQBBQMJAQwDAAEBAwoBDQMAAf8DOwFkBAADBQEHAw8BFAMEBAYBCAMHAQksAANyAe4kAAP2Af8DQQH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xgAA6EB/wOh
Af8DoQH/A58B/yQAAwIBAwMAAf8DNwFbRAADPAFmAxgBIgNiAcwcAAP2Af8DQQH/A0EB/wNBAf8DQQH/
A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A/YB/xgAA58B/wOfAf8DnwH/A6EB/3gA
AzUBVQM+AWscAAP2Af8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNBAf8DQQH/A0EB/wNB
Af8DQQH/A/YB/yAAAwEBAqAAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8D9gH//wABAAH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHy
Af8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+
AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/BAADJwH/AycB/wMnAf8DJwH/AycB/wMnAf8DJwH/
AycB/xAAAcABlQFGAf8BwAGVAUYB/4QAAf4B8wHyAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wH+AfMB8gH/BAADJwH/A/gB/wP4Af8D+AH/A/gB/wP4
Af8D+AH/AycB/wwAAcABlQFGAf8BoQE5AQAB/wHAAZUBRgH/DAADwAH/A5IB/wPqAf8gAANfAegDwAH/
FAAD/gH/A/EB/wPHAf8DjwH/A4AB/wOiAf8D7AH/FAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/
Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP4Af8D+AH/A/oB/wP8Af8D0AH/CAABwAGVAUYB/wGhATkBAAH/
AcABlQFGAf8QAAOSAf8DkgH/A5IB/wNfAegYAAPrAf8DsAH/Aw0BERAAA/0B/wPWAf8DlQH/A5UB/wOd
Af8DlgH/A4kB/wNQAf8D1QH/EAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMn
Af8D+AH/A/gB/wP4Af8D/AH/AcYBnwFWAf8BoQE5AQAB/wGhATkBAAH/AaEBOQEAAf8BswFZARIB/wGh
ATkBAAH/AcABlQFGAf8UAAPrAf8DkAH/A5IB/wOSAf8DUgGpDAADEAEWA98B/wOdAf8DMQFNFAAD1wH/
A6IB/wOiAf8DogH/A50B/wOcAf8DnAH/A5wB/wNaAf8D0gH/DAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8DGgH/Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP6Af8BxgGfAVYB/wG3AWEBIQH/AfIB8AHrAf8D+AH/
AfIB8AHrAf8BtwFhASEB/wGzAVkBEgH/HAADXQHKA5IB/wOQAf8DoAH/AzEBTQQAAw0BEQPAAf8DkgH/
A1IBqRQAA/QB/wOuAf8DrgH/A7AB/wOwAf8DrgH/A6gB/wOiAf8DnAH/A5wB/wNQAf8D7AH/CAAB/gHz
AfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMnAf8D+AH/A/gB/wP8Af8BoQE5AQAB/wHy
AfAB6wH/A/gB/wP4Af8D+AH/AfIB8AHrAf8BoQE5AQAB/wPEAf8DJwH/AycB/xQAA1YBqwOQAf8DkgH/
A50B/wM+AWsDwAH/A5AB/wNfAegDAwEEFAAD3QH/A7wB/wPCAf8DxgH/A8cB/wPBAf8DvAH/A64B/wOi
Af8DnAH/A4kB/wOiAf8IAAH+AfMB8gH/AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5
AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8B/gHzAfIB/wQAAycB/wP4
Af8D+AH/A/0B/wGhATkBAAH/A/gB/wP4Af8D+AH/A/gB/wP4Af8BoQE5AQAB/wP9Af8D+AH/AycB/xgA
Az4BawOdAf8DkgH/A5AB/wOSAf8D6wH/AwMEBAEFFAAD1gH/A8IB/wP+Af8D/gH/A/4B/wP9Af8D/AH/
A/wB/wP8Af8D+gH/A48B/wOAAf8IAAH+AfMB8gH/AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5
AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8B/gHzAfIB/wQA
AycB/wP4Af8D+AH/A/wB/wGhATkBAAH/AfIB8AHrAf8D+AH/A/gB/wP4Af8B8gHwAesB/wGhATkBAAH/
A/wB/wP4Af8DJwH/HAADXAHJA5IB/wOQAf8DnQH/Aw0BERwAA9YB/wPPDf8D/gH/A/4B/wP9Af8D/AH/
A/sB/wOPAf8DjgH/CAAB/gHzAfIB/wMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Af4B8wHyAf8EAAMnAf8DJwH/
AycB/wNhAf8BxgGfAVYB/wG5AYgBNAH/AfIB8AHrAf8D+AH/AfIB8AHrAf8BuQGIATQB/wHGAZ8BVgH/
A/oB/wP4Af8DJwH/GAADUgGpA5IB/wOSAf8DkAH/A5IB/wNcAckQAAMLAQ8IAAPpAf8D2QH/A+wB/wPw
Af8D8AH/A+wB/wPhAf8D1wH/A8AB/wOoAf8DjwH/A8YB/wgAAf4B8wHyAf8DGgH/AfkC6gH/AfkC6gH/
AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AxoB/wH+AfMB8gH/GAABxgGfAVYB/wGhATkBAAH/AaEBOQEAAf8BoQE5AQAB/wHGAZ8BVgH/A/wB/wP4
Af8D+AH/AycB/xQAA1wByQOSAf8DkAH/A50B/wM+AWsDwAH/A5IB/wNKAYwYAAP3Af8D2QH/A+wB/wPx
Af8D8AH/A+wB/wPgAf8D1gH/A8AB/wOoAf8DnAH/A/AB/wgAAf4B8wHyAf8DGgH/AfkC6gH/AfkC6gH/
AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AxoB/wH+AfMB8gH/HAADxAH/A/0B/wP8Af8D+gH/A/gB/wP4Af8D+AH/AycB/xAAA+oB/wOSAf8DkAH/
A5AB/wNSAakEAAMNARED4AH/A6AB/wMxAU0UAAP+Af8D7AH/A+AB/wPxAf8D8QH/A+oB/wPiAf8D0gH/
A8EB/wOoAf8D1wH/A/4B/wgAAf4B8wHyAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wH+AfMB8gH/HAADJwH/A/gB/wP4Af8D+AH/A/gB/wMnAf8DJwH/
A4oB/xAAA5IB/wOSAf8DkAH/A18B6BAAA+oB/wOwAf8DDQERFAAD/QH/A+wB/wPdAf8D4wH/A+YB/wPc
Af8DywH/A7sB/wPWAf8D/QH/DAAB/gHzAfIB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/Af4B8wHyAf8cAAMnAf8D+AH/A/gB/wP4Af8D+AH/AycB/wOK
Af8UAAPAAf8DkgH/A+oB/xgAA18B6APAAf8YAAP9Af8D9wH/A+kB/wPcAf8D1QH/A+IB/wPvAf8D/gH/
EAAB/gHzAfIB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/Af4B8wHyAf8cAAMnAf8DJwH/AycB/wMnAf8DJwH/A4oB/xMAAQF4AAH+AfMB8gH/Af4B8wHy
Af8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+
AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH/Af4B8wHyAf8B/gHzAfIB/wH+AfMB8gH//wABAAH/
AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/
AQAC/wMrAUIDKwFCAzMBUgM3AVoDNwFbA0oBiQNLAY4DSgGNAz0BZwM3AVsDNwFbAzQBVAMnAToDEQEX
CAADKwFCAysBQgMrAUIDMgFQAzcBWgNIAYMDSwGOA0oBjQNEAXoDNwFbAzcBWxQAASIBuQHTAf8BAAGM
AakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/
AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/ASIBuQHTAf8BAAG5
AdMB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/
AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAGMAakB/wEAAYwBqQH/AQABjAGpAf8BAAG5
AdMB/wMrAUIDGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/A0ABcQMaAf8DGgH/AzEB/wNcAeoDVgG0
Az4BawQAAy4BSAMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wM3AVsUAAERAbQB0QH/
AQAByQHpAf8BAAHGAfEB/wEAAcIB8AH/AQABwQHwAf8BAAHAAfAB/wEAAcEB8AH/AQABwQHwAf8BAAHB
AfAB/wEAAcEB8AH/AQABwgHwAf8BAAHDAfAB/wEAAcMB8AH/AQABxAHxAf8BAAHDAeQB/wERAbQB0QH/
AQABtAHRAf8BAAHJAekB/wEAAcYB8QH/AQABwgHwAf8BAAHBAfAB/wEAAcAB8AH/AQABwQHwAf8BAAHB
AfAB/wEAAcEB8AH/AQABwQHwAf8BAAHCAfAB/wEAAcMB8AH/AQABwwHwAf8BAAHEAfEB/wEAAcMB5AH/
AQABtAHRAf8DKwFCAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wNIAYMDGgH/AxoB/wMaAf8DGgH/
AxoB/wNKAY0DPwFtAzUBVQMiAf8B+QLqAf8B+QLqAf8B+QLqAf8DIgH/AfkC6gH/AfkC6gH/AfkC6gH/
AyIB/wM3AVsDNwFbAzcBWwwAAUsByAHcAf8BAAGuAc8B/wEAAc0B8gH/AQAByAHxAf8BAAHFAfEB/wEA
AcQB8QH/AQABwwHwAf8DAAH/AwAB/wEAAcYB8QH/AQAByAHxAf8BAAHKAfIB/wEAAcoB8gH/AQABzAHx
Af8BAAGrAc0B/wFLAcgB3AL/AQAC/wEAAa4BzwH/AQABzQHyAf8BAAHIAfEB/wEAAcUB8QH/AQABxAHx
Af8BAAHDAfAB/wMAAf8DAAH/AQABxgHxAf8BAAHIAfEB/wEAAcoB8gH/AQABygHyAf8BAAHMAfEB/wEA
AasBzQL/AQAC/wMrAUIDGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/A0wBkwMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wM3AVsDNgFYAyIB/wH5AuoB/wH5AuoB/wH5AuoB/wMiAf8B+QLqAf8B+QLqAf8B+QLq
Af8DIgH/AzcBWwMiAf8DQAFuDAAB4gHuAfIB/wERAbQB0QH/AQEBxgHkAf8BAQHRAfMB/wEAAc0B8gH/
AQABywHyAf8BAAHKAfIB/wMAAf8DAAH/AQABzQHzAf8BAQHRAfMB/wECAdIB9AH/AQMB0wH0Af8BAAHF
AeMB/wERAbQB0QH/AeIB7gHyAv8BAAL/AQABtAHRAf8BAAHGAeQB/wEAAdEB8wH/AQABzQHyAf8BAAHL
AfIB/wEAAcoB8gH/AwAB/wMAAf8BAAHNAfMB/wEAAdEB8wH/AQAB0gH0Af8BAAHTAfQB/wEAAcUB4wH/
AQABtAHRAv8BAAL/AzUBVQMaAf8DGgH/AxoB/wNiAekDGgH/AxoB/wMaAf8DUQGcAxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AzcBWwMyAVADIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DNwFb
AyIB/wNKAYoQAAGAAc0B3wH/AQABrAHNAf8BDwHbAfQB/wELAdkB9QH/AQgB1wH1Af8BBwHWAfQB/wEH
AdYB9AH/AQkB1wH1Af8BCwHZAfUB/wELAdkB9QH/AQ0B2wH1Af8BDgHaAfMB/wEAAaoBywH/AYABzQHf
Af8EAAH/AQAD/wEAAv8BAAGsAc0B/wEAAdsB9AH/AQAB2QH1Af8BAAHXAfUB/wEAAdYB9AH/AQAB1gH0
Af8BAAHXAfUB/wEAAdkB9QH/AQAB2QH1Af8BAAHbAfUB/wEAAdoB8wH/AQABqgHLAv8BAAP/AQAC/wM2
AVgDGgH/AxoB/wNdAdMDVAGmA10B0wMaAf8DGgH/A1oBvQMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wM3
AVsDMQFOAzcBWgNAAW4DSgGNA1IBpANcAeoDYgHvA2IB7wNdAe0DXAHMA0gBhQMiAf8DSAGFAzcBWwM3
AVsDNwFbBAAB6gHyAfUB/wERAbQB0QH/AQYBxgHfAf8BGgHmAfgB/wEZAeQB9wH/ARgB4wH3Af8BAAFD
AUwB/wEAAUMBTAH/ARYB4gH3Af8BFgHiAfcB/wEXAeMB9wH/AQUBxwHgAf8BEQG0AdEB/wHqAfIB9QH/
BAAB/wEAA/8BAAL/AQABtAHRAf8BAAHGAd8B/wEAAeYB+AH/AQAB5AH3Af8BAAHjAfcB/wEAARQBHQH/
AQABFAEdAf8BAAHiAfcB/wEAAeIB9wH/AQAB4wH3Af8BAAHHAeAB/wEAAbQB0QL/AQAD/wEAAv8DLgFH
AzMBUgM9AWcDRgF/A04BlQNSAaMBXAJaAfUBeAJ2AfoBeAJ2AfoDGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DNwFbAwABAQM5AV8DIgH/A04BlANSAacDIgH/AYECfQH6AYUCgwH5AyIB/wF/AX0BegH3A1sByAMi
Af8DSAGFAyIB/wMiAf8DNwFbCAABjgHTAeMB/wEAAaoBywH/ASIB6gH2Af8BJgHwAfoB/wEkAe4B+QH/
AwAB/wMAAf8BIAHqAfkB/wEgAeoB+QH/ARsB5QH1Af8BAAGqAcsB/wGOAdMB4wH/CAAB/wEAA/8BAAP/
AQAC/wEAAaoBywH/AQAB6gH2Af8BAAHwAfoB/wEAAe4B+QH/AwAB/wMAAf8BAAHqAfkB/wEAAeoB+QH/
AQAB5QH1Af8BAAGqAcsC/wEAA/8BAAP/AQAC/wQAAyABLwNMAZIDJQH/AxoB/wMlAf8BbgFsAWsB+gM8
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AzgBXgQAAzkBXwMiAf8DIgH/AyIB/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DSAGFA04BlQMiAf8DNwFbCAAB7wH0AfYB/wERAbQB0QH/AQQBwgHb
Af8BKgHzAfsB/wEpAfEB+gH/AwAB/wMAAf8BJQHvAfoB/wElAe8B+gH/AQYBxgHfAf8BEQG0AdEB/wHv
AfQB9gH/CAAB/wEAA/8BAAP/AQAC/wEAAbQB0QH/AQABwgHbAf8BAAHzAfsB/wEAAfEB+gH/AwAB/wMA
Af8BAAHvAfoB/wEAAe8B+gH/AQABxgHfAf8BAAG0AdEC/wEAA/8BAAP/AQAC/wQAAzgBXAMlAf8DGgH/
AxoB/wMaAf8DJQH/A18B6AMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DSgGLBAADOQFfAyIB/wH5
AuoB/wH5AuoB/wMiAf8B+QLqAf8B+QLqAf8DIgH/AfkC6gH/AfkC6gH/AyIB/wNeAdkDIgH/AyIB/wM3
AVsMAAGcAdcB5QH/AQABqQHLAf8BJAHqAfQB/wEsAfQB+wH/AwAB/wMAAf8BKgHyAfoB/wEjAeoB9gH/
AQABqQHLAf8BnAHXAeUB/wwAAf8BAAP/AQAD/wEAA/8BAAL/AQABqQHLAf8BAAHqAfQB/wEAAfQB+wH/
AwAB/wMAAf8BAAHyAfoB/wEAAeoB9gH/AQABqQHLAv8BAAP/AQAD/wEAA/8BAAL/BAADOAFcAxoB/wMa
Af8DGgH/AxoB/wMaAf8DVAGvAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wNEAXsEAAM5AV8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/A2IB6QNiAekDIgH/A0gBhhAAAREBtAHR
Af8BAQG/AdkB/wE2AfYB+wH/AwAB/wMAAf8BLQH1AfsB/wEIAcYB3QH/AREBtAHRAf8B9QH2AfcB/wwA
Af8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG/AdkB/wEHAfYB+wH/AwAB/wMAAf8BAAH1AfsB/wEA
AcYB3QH/AQABtAHRAv8BAAP/AQAD/wEAA/8BAAL/BAADOAFcAyUB/wMaAf8DGgH/AxoB/wMlAf8DVgGr
A14B0ANcAeoDXAHqA1wB6gNcAeoDJQH/AxoB/wM3AVsEAAM5AV8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DIgH/A2EB3AMiAf8DIgH/Az0BZxAAAasB3QHpAf8BAAGpAcoB/wEjAegB8wH/
AS0B9QH7Af8BLQH1AfsB/wEmAe0B9gH/AQABqQHLAf8BqwHdAekB/xAAAf8BAAP/AQAD/wEAA/8BAAP/
AQAC/wEAAakBygH/AQAB6AHzAf8BAAH1AfsB/wEAAfUB+wH/AQAB7QH2Af8BAAGpAcsC/wEAA/8BAAP/
AQAD/wEAA/8BAAL/BAADIAEvA0wBkgMlAf8DGgH/AyUB/wNUAa8DVgGrA1UBrQNfAegDXAHqA1wB6gNc
AeoDXAHqAxoB/wM3AVsEAANDAXgDIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/
A04BlQNdAdMDIgH/AzcBWxQAARIBtAHRAf8BAAG7AdYB/wEtAfUB+wH/AS0B9QH7Af8BBwHGAd0B/wES
AbQB0QH/FAAB/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG7AdYB/wEAAfUB+wH/AQAB9QH7
Af8BAAHGAd0B/wEAAbQB0QL/AQAD/wEAA/8BAAP/AQAD/wEAAv8IAANLAY4DTAGSA1cBugNWAasDVgGr
A1YBqwNWAasDYQHkA1wB6gNcAeoDXAHqA1wB6gMaAf8DNwFbBAADSQGHAz4BawM3AVsDNwFbAzcBWwM6
AWIDUAGeA1IBowNSAaMDUgGjA1IBowNOAZUDIgH/AyIB/wM3AVsUAAG7AeIB7QH/AQABqAHKAf8BIAHl
AfEB/wEmAewB9QH/AQABqQHLAf8BuwHiAe0B/xQAAf8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv8BAAGo
AcoB/wEAAeUB8QH/AQAB7AH1Af8BAAGpAcsC/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/wgAAz4BawNK
AYwDJQH/A1YBsQNYAbkDVgGrA1YBqwNhAeEDXAHqA1wB6gNcAeoDJQH/A0oBjAMuAUgQAAM3AVsDIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AzYBWRgAARIBtAHRAf8BAAG5AdUB/wEH
AcYB3QH/ARIBtAHRAf8YAAH/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABtAHRAf8BAAG5AdUB/wEA
AcYB3QH/AQABtAHRAv8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv8MAAM9AWgDVgG0A1wB6gMxAf8DGgH/
AxoB/wMaAf8DGgH/AzEB/wNcAeoDVwG6Az4BaxQAAzcBWwMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DNAFUGAAByQHpAfEB/wECAa8BzgH/AQIBrwHOAf8ByQHpAfEB/xgAAf8BAAP/
AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL/AQABrwHOAf8BAAGvAc4C/wEAA/8BAAP/AQAD/wEAA/8BAAP/
AQAD/wEAAv8QAAMNAREDJwE6AzMBUwM3AVsDOwFlA0oBjQNLAY4DSAGEAzgBXgMSARkYAAM3AVsDNwFb
A0kBhwNLAY4DSwGOA0oBjQNFAXwDNwFbAzcBWwM3AVsDNQFXAzcBWv8AQQADKgFAAyoBQAMqAUADKgFA
AyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyYBOAMMARAEAAMqAUADKgFAAyoBQAMq
AUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADJgE4AwwBEBQAAdYBvgGtAf8BtQGa
AYQB/wGcARwBAQH/AZQBEAEAAf8BlAEQAQAB/wGlASQBEgH/Ab0BpgGUAf8B1gG+AbUB/yAAAfcB8wHv
Af8B1gG+AbUB/wGtAY4BWAH/AZQBRgEvAf8BjAE+AScB/wGUAVIBQAH/AcYBtgGtAf8UAANcAd8DXAHf
A1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DWwHDAyYBOAQAA1wB3wNc
Ad8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNcAd8DXAHfA1wB3wNbAcMDJgE4EAABxgGu
AZwB/wGtAYYBEgH/Aa0BkgEiAf8B1gHPAc4B/wHnAfMB9wH/AecB7wH3Af8BxgHDAb0B/wGlAYYBGgH/
AaUBIAEKAf8BxgGuAZwB/xgAAfcB6wHnAf8BvQGaAYwB/wGcAUoBLwH/AZwBSgEvAf8BnAFOATcB/wGc
AUoBNwH/AZQBQgEvAf8BWAEuARYB/wGtAZoBjAH/EAABpwKmAf8CswGyAf8DugH/A7oB/wO6Af8DugH/
A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/AbECsAH/A1wB3wMqAUAEAAGnAqYB/wKzAbIB/wO6Af8DugH/
A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8BsQKwAf8DXAHfAyoBQAwAAc4BrgGcAf8BtQGa
AYwB/wHvAesB5wX/AfcB+wL/Ae8B+wH3Af8B7wL3Af8C7wH3Af8B5wHzAv8BvQG2AbUB/wGUARABAAH/
AcYBrgGcAf8UAAG9AZoBjAH/AaUBUgE3Af8BpQFSATcB/wGlAVIBNwH/AZwBTgE3Af8BnAFOATcB/wGc
AU4BNwH/AZwBTgE3Af8BhAEyAR8B/wGtAZYBjAH/DAADkQH/A8QB/wPjAf8D4wH/A+MB/wLhAeAB/wHY
AdQB0gH/AdoB1gHVAf8D4wH/A+MB/wPjAf8D4wH/A7oB/wNcAd8DKgFABAADkQH/A8QB/wPjAf8D4wH/
A+MB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8DugH/A1wB3wMqAUAIAAHWAboBrQH/AbUBkgEi
Af8D9wn/Ad4BtgGlAf8BpQIAAf8BpQIAAf8B1gG+Aa0B/wH3A/8B7wH3Av8BvQGuAaUB/wGcARQBAAH/
AdYBvgG1Af8MAAHnAccBtQH/Aa0BWgFAAf8BrQFaAUAB/wGtAVoBSAH/Aa0BWgFIAf8BrQFaAUAB/wGl
AVYBQAH/AaUBUgE3Af8BnAFOATcB/wGcAU4BNwH/AVgBLgEWAf8BxgG2Aa0B/wgAA5EB/wPEAf8D4wH/
A+MB/wPjAf8B2QHUAdIB/wGjAYgBIQH/Aa4BlwGMAf8D4wH/A+MB/wPjAf8D4wH/A7oB/wNcAd8DKgFA
BAADkQH/A8QB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8D4wH/A+MB/wPjAf8DugH/A1wB3wMq
AUAIAAG9AZ4BhAH/Ad4BxwG9Df8B7wHXAcYB/wGtAgAB/wGlAgAB/wH3Ae8B5wX/Ae8B6wHvAf8B5wHz
AfcB/wGcASQBEgH/AbUBkgEiAf8MAAHOAaIBjAH/Aa0BhgFIAf8BtQGKAVAB/wG9AY4BUAH/Ab0BjgFQ
Af8BtQGKAVAB/wG1AYYBSAH/Aa0BWgFAAf8BpQFSATcB/wGcAU4BNwH/AZQBQgEvAf8BlAFSAUAB/wgA
A5EB/wHGAscB/wHmAucB/wHmAucB/wHmAucB/wHYAdIBzwH/AY8BEQEAAf8BngGAARcB/wHmAucB/wHm
AucB/wHmAucB/wHmAucB/wO8Af8DXAHfAyoBQAQAA5EB/wHGAscB/wHmAucB/wHmAucB/wHmAucB/wHm
AucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wHmAucB/wO8Af8DXAHfAyoBQAQAAdYBugGt
Af8BvQGaAYQC/wH7Dv8B7wHjAdYB/wG9AgAB/wG1AQwBAAH/AfcB+wH3Bf8B9wHzAfcB/wHvAfMB9wH/
AcYBvgG9Af8BnAEcAQEB/wwAAcYBmgGEAf8BvQGKAVAC/wH7A/8C9wL/AfMB7wH/AfcB6wHnAf8B9wHj
Ad4B/wH3AeMB1gH/AfcB4wHeAf8B9wHbAc4B/wGcAUYBLwH/AYwBPgEnAf8IAAORAf8BygLLAf8B7ALt
Af8B7ALtAf8B7ALtAf8B3QHYAdUB/wGRARMBAAH/AaABggEZAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALt
Af8DvwH/A1wB3wMqAUAEAAORAf8BygLLAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8B7ALt
Af8B7ALtAf8B7ALtAf8B7ALtAf8B7ALtAf8DvwH/A1wB3wMqAUAEAAHOAa4BnAH/Ac4BpgGMEf8B7wHf
AdYB/wG9AgAB/wG1AQwBAAH/AfcC7wn/Ae8B8wH3Af8B1gHbAd4B/wGcARwBAQH/DAABxgGaAYQB/wHG
AZYBWA7/AfsD/wHzAe8B/wH3AesB5wH/AfcB4wHeAf8B9wHfAdYB/wGcAUYBLwH/AZQBRgEvAf8IAAOR
Af8D0AH/AegB3gHaAf8ByAGjAZYB/wHBAZcBiAH/AbsBjwElAf8BnwENAQAB/wGkARUBAAH/AcEBlwGI
Af8BwQGXAYgB/wHOAa8BowH/Ae8B6gHnAf8DwwH/A1wB3wMqAUAEAAORAf8BygLLAf8B4QHYAdQB/wHH
AaEBlAH/AcEBlwGIAf8BwQGXAYgB/wHBAZcBiAH/AcEBlwGIAf8BwQGXAYgB/wHBAZcBiAH/AcwBrQGh
Af8B5gHiAeEB/wO/Af8DXAHfAyoBQAQAAc4BpgGUAf8BzgGqAZQR/wHvAdsBzgH/AcYCAAH/AbUBCAEA
Af8B7wHrAecJ/wP3Af8B3gHjAecB/wGcASABCgH/DAAB3gGyAZwB/wHOAZ4BhAH/AecBtgGcAf8B5wG+
Aa0B/wHnAb4BrQH/AecBtgGcAf8B1gGmAYwB/wHOAZoBhAH/AbUBigFIAf8BpQFWAUAB/wGcAUYBLwH/
Aa0BjgFYAf8IAAORAf8D0wH/AesB3wHZAf8BxAGXAYcB/wG8AYkBHQH/AbgBgwEWAf8BogEMAQAB/wGn
ARIBAAH/AbwBiQEdAf8BvAGJAR0B/wHMAaYBmAH/AfQB7QHqAf8DxgH/A1wB3wMqAUAEAAORAf8BzALN
Af8B4wHXAdIB/wHDAZYBhgH/AbwBiQEdAf8BvAGJAR0B/wG8AYkBHQH/AbwBiQEdAf8BvAGJAR0B/wG8
AYkBHQH/AckBowGWAf8B6QHkAeEB/wPBAf8DXAHfAyoBQAQAAcYBogGMAf8BzgGqAZQR/wHeAcMBrQH/
Ab0BBAEAAf8BvQEcAQAB/wH3Au8G/wH7Av8B9wH7Av8B3gHXAd4B/wGcARwBAQH/DAAB7wHPAb0B/wHO
AZ4BhAH/AecBtgGcAf8B5wG+Aa0B/wHnAb4BrQH/AecBtgGcAf8B1gGmAYwB/wHOAZoBhAH/AbUBigFI
Af8BpQFWAUAB/wGcAU4BNwH/AdYBvgG1Af8IAAORAf8D0wH/AfgB9gH1Af8B8gHqAecB/wHxAegB5AH/
AeIB1AHNAf8BlgEUAQEB/wGlAYMBGAH/AfEB6AHkAf8B8QHoAeQB/wHzAe0B6gH/AfoB+QH3Af8DxgH/
A1wB3wMqAUAEAAORAf8D0gH/AfcB9QHzAf8B8gHqAecB/wHxAegB5AH/AfEB6AHkAf8B8QHoAeQB/wHx
AegB5AH/AfEB6AHkAf8B8QHoAeQB/wHzAewB6QH/AfgB9wH2Af8DxQH/A1wB3wMqAUAEAAHWAbIBnAH/
Ac4BogGMEf8B9wHrAecB/wHvAdsB1gH/AfcB6wHnCv8B+wL/AfcD/wHOAb4BvQH/AaUBJAEKAf8MAAH/
AfMB7wH/Ad4BtgGlAf8B1gGmAYwB/wHnAb4BrQH/Ae8BvgGtAf8B5wGyAZwB/wHWAaYBlAH/AcYBlgGE
Af8BtQGKAVAB/wGlAVYBQAH/Ab0BmgGMAf8B9wLvAf8IAAORAf8D1AH/AvwB+wH/AvwB+wH/AvwB+wH/
AesB5QHhAf8BlQEXAQQB/wGmAYgBHgH/AvwB+wH/AvwB+wH/AvwB+wH/AvwB+wH/A8cB/wNcAd8DKgFA
BAADkQH/A9MB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7AfoB/wL7
AfoB/wL7AfoB/wPGAf8DXAHfAyoBQAgAAdYBpgGMAf8B7wHnAd4O/wH7Av8B1gGiAYQB/wHWAaIBhAL/
AfsO/wGlASQBCgH/AcYBpgGUAf8QAAH3AesB5wH/Ad4BtgGlAf8B1gGiAYwB/wHWAaoBlAH/Ad4BrgGU
Af8BzgGiAYwB/wG9AZIBWAH/AbUBhgFIAf8BvQGaAYwB/wH3AesB5wH/DAADkQH/A9QB/wP8Af8D/AH/
A/wB/wHtAegB5QH/AaIBggEYAf8BsQGXAYkB/wP8Af8D/AH/A/wB/wP8Af8DxwH/A1wB3wMqAUAEAAOR
Af8D0wH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/
AvsB+gH/A8YB/wNcAd8DKgFACAAB1gG2AZwB/wHnAbIBlA3/AfcB7wHnAf8BxgEUAQAB/wG9AQwBAAH/
AfcC7wn/AcYBrgGcAf8BrQGGARIB/wHWAcMBtQH/FAAB/wHvAecB/wHvAc8BvQH/Ad4BsgGcAf8BzgGe
AYwB/wHGAZoBhAH/AdYBpgGUAf8B1gG6Aa0C/wL3Af8QAAORAf8D1AH/A/wB/wP8Af8D/AH/AfgC9gH/
AeIB2QHVAf8B5wHfAdsB/wP8Af8D/AH/A/wB/wP8Af8DxwH/A1wB3wMqAUAEAAORAf8D0wH/AvsB+gH/
AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/AvsB+gH/A8YB/wNc
Ad8DKgFADAAB3gGyAZQB/wHvAccBrQ7/AvcC/wH3Ae8G/wL3Af8BzgG2AaUB/wGtAYYBEgH/AdYBwwG1
Af9IAAKhAaAB/wPBAf8D1AH/A9QB/wPUAf8D1AH/A9QB/wPUAf8D1AH/A9QB/wPUAf8D1AH/A7sB/wNc
Ad8DKgFABAACoQGgAf8DwAH/A9MB/wPTAf8D0wH/A9MB/wPTAf8D0wH/A9MB/wPTAf8D0wH/A9MB/wO6
Af8DXAHfAyoBQBAAAd4BtgGcAf8B5wG2AZQB/wH3Ad8BxgL/AecB3gL/AesB5wH/AfcB5wHeAf8B5wHP
AcYB/wHOAaoBlAH/Ab0BmgGEAf8B1gHDAbUB/0wAAbwBuwG6Af8CoQGgAf8DkQH/A5EB/wORAf8DkQH/
A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/AacCpgH/A1wB3wMqAUAEAAG8AbsBugH/AqEBoAH/A5EB/wOR
Af8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wGnAqYB/wNcAd8DKgFAFAAB3gG+Aa0B/wHe
AbYBnAH/AecBtgGcAf8B5wGyAZQB/wHeAaoBjAH/AdYBrgGcAf8B1gG+AbUB//8A7QABDQGPARIB/wEN
AY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8DWwHE
JAABEwEnAbcB/wIAAaYB/wFDAVIBxAH/IAADXwHoARMBJwG3Af8MAAH/AUMBMQL/AUMBMQH/SAABDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPa
Af8DZQH0AwEBAgMAAQEHAAEBFgABpgH/AgABpgH/AgABpgH/A18B6BgAAUMBUgHEAf8BAwEZAbIB/wMN
AREMAAH/AUMBMQH/CAAB/wFDATEB/0AAAQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8YAAPa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8D2gH/A1EBnAQAAwEBAgMEAQUDAAEBFAABQwFSAcQB/wIA
AaYB/wIAAaYB/wIAAaYB/wNSAakMAAMQARYBNQFFAb4B/wEAAQwBrAH/AzEBTRgAAf8BQwExAv8BQwEx
Av8BQwExAf88AAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/GAAD2gH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/A9oB/wNgAesDXQHSA1kBwgNbAcYDVAGsAxsBJhQAA10BygIAAaYB/wIAAaYB/wEA
AQwBrAH/AzEBTQQAAw0BEQETAScBtwH/AgABpgH/A1IBqRgAAf8BQwExAv8BQwExAv8BQwExAv8BQwEx
Av8BQwExAf84AAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/GAAD2gH/A9oB/wPaAf8D2gH/
A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8DQwF3AwABARgAA1YBqwIAAaYB/wIAAaYB/wEA
AQwBrAH/Az4BawETAScBtwH/AgABpgH/A18B6AMDAQQcAAH/AUMBMQL/AUMBMQL/AUMBMQL/AUMBMQL/
AUMBMQH/IAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
BAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPaAf8DNQFXAwQBBQMP
ARQDAAEBFAADPgFrAQABDAGsAf8CAAGmAf8CAAGmAf8CAAGmAf8BQwFSAcQB/wMDBAQBBSAAAf8BQwEx
Av8BQwExAv8BQwExAv8BQwExAv8BQwExAf8cAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8EAAPaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/A9oB/wMKAQ4kAANcAckCAAGmAf8CAAGmAf8BAAEMAawB/wMNAREsAAH/AUMBMQL/AUMBMQL/
AUMBMQL/AUMBMQL/AUMBMQH/GAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/BAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wPa
Af8DLwFKAwUBBwMgAS4DLAFDFAADUgGpAgABpgH/AgABpgH/AgABpgH/AgABpgH/A1wByRAAAwsBDxwA
Af8BQwExAv8BQwExAv8BQwExAv8BQwExAv8BQwExAf8UAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wEN
AY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/AQ0BjwES
Af8BDQGPARIB/wENAY8BEgH/AQ0BjwESAf8EAAPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/
A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8QAANcAckCAAGmAf8CAAGmAf8BAAEMAawB/wM+
AWsBEwEnAbcB/wIAAaYB/wNKAYwwAAH/AUMBMQL/AUMBMQL/AUMBMQH/LAABDQGPARIB/wENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/xgAA9oB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/A9oB/wwAAUMBUgHEAf8CAAGmAf8CAAGmAf8CAAGmAf8DUgGpBAADDQER
ATUBRQG+Af8BAAEMAawB/wMxAU0wAAH/AUMBMQH/CAAB/wFDATEC/wFDATEB/yAAAQ0BjwESAf8BDQGP
ARIB/wENAY8BEgH/AQ0BjwESAf8YAAPaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wPaAf8OAAGmAf8CAAGmAf8CAAGmAf8DXwHoEAABQwFSAcQB/wED
ARkBsgH/Aw0BETQAAf8BQwExAv8BQwExAv8BQwExAf8gAAENAY8BEgH/AQ0BjwESAf8BDQGPARIB/wEN
AY8BEgH/GAAD2gH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wMaAf8D2gH/DAABEwEnAbcB/wIAAaYB/wFDAVIBxAH/GAADXwHoARMBJwG3Af80AAH/AUMBMQL/
AUMBMQH/JAABDQGPARIB/wENAY8BEgH/AQ0BjwESAf8BDQGPARIB/xgAA9oB/wPaAf8D2gH/A9oB/wPa
Af8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wcAAQGQAAENAY8BEgH/
AQ0BjwESAf8BDQGPARIB/wENAY8BEgH/+AADAQECnAADPQFpAz4BagNBAXIDNwFaAzcBWwM3AVsDOgFi
A0oBiwNLAY4kAAP9Af8D9wH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP3Af8D/QH/HAADigH/
AzoB/wMiAf8DIgH/AyIB/wMiAf8DOgH/A4oB/xAAA/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1
Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/BAADPQFpAxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
AxoB/wNKAYkkAAP3Af8DhgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wOGAf8D9wH/FAADuQH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wO5Af8IAAP1Af8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/A/UB/wQAAzsBZQMaAf8B+QLq
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Az4BawM3AVsDNwFbAzcBWwM3AVsUAAP2Af8DGgH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DGgH/
A/YB/xAABP8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8IAAP1
Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8B7gLvAf8B7gLv
Af8B7gLvAf8DGQH/A/UB/wQAAy4BSAMaAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wM3AVsUAAP2Af8DGgH/AfEB7wHwAf8DGgH/AfEB7wHwAf8DGgH/AfEB7wHw
Af8DGgH/AfEB7wHwAf8DGgH/A/YB/xAABP8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8IAAP1Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHu
Au8B/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/A/UB/wQAAywBQwMaAf8B+QLqAf8B+QLqAf8B+QLq
Af8B+QLqAf8B+QLqAf8DGgH/AzcBWwM3AVsDNwFbAxoB/wM3AVsUAAP2Af8DGgH/AfEB7wHwAf8B8QHv
AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8D9QH/BAADKwFCAxoB/wMaAf8DGgH/
AxoB/wMaAf8DGgH/AxoB/wM3AVsEAAM3AVsDGgH/AzcBWxQAA/YB/wMaAf8B8QHvAfAB/wMaAf8B8QHv
AfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMiAf8DIgH/AyIB/wMiAf8DIgH/
AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/
Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8D9QH/BAADKAE8AxoB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AxoB/wM3AVsEAAM3AVsDGgH/A0ABcRQAA/YB/wMaAf8B8QHvAfAB/wHx
Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wMaAf8D9gH/EAAE/wMi
Af8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZAf8B7gLv
Af8B7gLvAf8B7gLvAf8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZ
Af8D9QH/BAADKgFBAyoBQQMoAT0DJQE3AycBOwMuAUgDNgFZAzcBWwM3AVsEAAM3AVsDGgH/A0oBjRQA
A/YB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8B8QHvAfAB/wMaAf8D9gH/
EAAE/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wgAA/UB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8D9QH/HAADNQFW
AzcBWwM3AVsDNwFbAzcBWwMaAf8DSwGOA0oBjANHAYEMAAP2Af8DGgH/AfEB7wHwAf8B8QHvAfAB/wHx
Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8DGgH/A/YB/xAABP8DIgH/AyIB/wMi
Af8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8DIgH/AyIB/wMiAf8IAAP1Af8DGQH/Ae4C7wH/Ae4C7wH/
Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8B7gLvAf8B7gLvAf8B7gLvAf8DGQH/A/UB/xwA
AykBPgMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DPQFoDAAD9gH/AxoB/wHxAe8B8AH/AxoB/wHx
Ae8B8AH/AxoB/wHxAe8B8AH/AxoB/wHxAe8B8AH/AxoB/wP2Af8QAAT/AyIB/wMtAf8DqQH/AuEB4gH/
A/gB/wP4Af8D+AH/A/gB/wLhAeIB/wOpAf8DLQH/AyIB/wgAA/UB/wMZAf8B7gLvAf8B7gLvAf8B7gLv
Af8DGQH/Ae4C7wH/Ae4C7wH/Ae4C7wH/AxkB/wHuAu8B/wHuAu8B/wHuAu8B/wMZAf8D9QH/HAADJQE3
AxoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wH5AuoB/wMaAf8DOwFjDAAD9gH/AxoB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AxoB/wP2Af8QAAPz
Af8DLQH/A+0B/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A+0B/wMiAf8IAAP1Af8DGQH/
AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/A/UB/xwAAyUBNwMa
Af8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8B+QLqAf8DGgH/Ay8BSgwAA/YB/wMaAf8B8QHvAfAB/wMa
Af8DGgH/AxoB/wMaAf8DGgH/AfEB7wHwAf8DGgH/A/YB/xQAAy0B/wPtAf8D+AH/A/gB/wP4Af8D+AH/
A/gB/wP4Af8D+AH/A/gB/wPtAf8DIgH/CAAD9QH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZ
Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wP1Af8cAAMlATcDGgH/AfkC6gH/AfkC6gH/AfkC6gH/AfkC6gH/
AfkC6gH/AxoB/wMrAUIMAAP2Af8DGgH/AfEB7wHwAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wHxAe8B8AH/
AxoB/wP2Af8UAAO5Af8DLQH/A6kB/wLhAeIB/wP4Af8D+AH/A/gB/wP4Af8C4QHiAf8DqQH/Ay0B/wO5
Af8IAAP1Af8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/AxkB/wMZAf8DGQH/
A/UB/xwAAyoBQAMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DKwFCDAAD9gH/AxoB/wHxAe8B8AH/
AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AxoB/wP2Af8YAAPo
Af8DigH/AzoB/wMiAf8DIgH/AyIB/wMiAf8DOgH/A4oB/wPoAf8MAAP1Af8D9QH/A/UB/wP1Af8D9QH/
A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/xwAAysBQgMaAf8DGgH/AxoB/wMa
Af8DGgH/AxoB/wMaAf8DMwFTDAAD9wH/A4YB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DhgH/
A/cB/6QAAysBQgMuAUcDPgFqA0cBgQNKAYkDNwFbAzcBWwM3AVoDNwFaDAAD/QH/A/cB/wP2Af8D9gH/
A/YB/wP2Af8D9gH/A/YB/wP2Af8D9wH/A/0B/wwAAUIBTQE+BwABPgMAASgDAAFAAwABcAMAAQEBAAEB
BQABgAEDFgAD/wEAAQ8D/wHwAQ8DAAEfAf8BgAHwAQ8DAAEPAf8BgAHwAQ8CAAGAAQ8BwAEAAfABDwIA
AcABDwHAAQAB8AEPAgABgAEPAcABAAHwAQ8CAAGAAQcBxwGAAfABDwIAAcABBwHHAYAB4AEHAgAB4AED
AQEBgAHAAQMCAAHwAgEBgAHAAQMCAAHwAwABwAEDAgAB8AMAAcABAwIAAfADAAHAAQMCAAHwAQABAQGA
AeABBwIAAfABAAEBAYAB4AEHAgAB+AEBAv8B8AEPAgAG/wEPAf8B/AE/Av8B5wH/AQABHwH8AT8B/AF4
AfMB/wIAAfwBPwH+AXgB+wEnAYABAAH8AT8BPgFwAfkBKwGAAQAB/AE/AR4BAQH5Ac8BgAEAAYABAQGM
AQMB+QHPAYABAAGAAQEByAEzAfkBzwGAAQABgAEBAeEBAwH8AZMBgAEAAYABAQHjAYcB/AH/AYABAAH8
AT8BAAEHAfgBfwGAAQAB/AE/AQABBwH+Af8BgAEAAfwBPwECAQ8B/gH/AYABAAH8AT8B4wH/Af4BPwGA
AQAB/AE/A/8BPwGAAQAB/wF/BP8BgAEACP8CAAGAAXkE/wIAAYABcQHHAfkB8AEfAgABgAFjAcMB8QHg
AQ8CAAGAAQcBwQHDAeABBwIAAYABDwHgAYcBwAEDAgABgAEBAfABBwHAAQMCAAGAAQEB+AEHAcABAwIA
AYABAQH8AR8BwAEDAgABgAEBAfgBHgHAAQMCAAH8AQEB8AEPAcABAwIAAf4BAQHgAYcBwAEDAgAB/gEB
AeEB4wHgAQcCAAH+AQMB4wHzAfABDwIAAf4BBwG/A/8CAAj/AwABAwEAAR8FAAEBAQABHwcAAQcHAAEH
BwABBwGAAQEGAAGAAQEGAAHAAQMCAAGAAQABgAEAAcABAwIAAYABAAGAAQAB4AEHAgABgAEAAYABAAHw
AQcCAAGAAQABgAEAAfABDwIAAYABAAGAAQAB+AEfAgABwAEAAYABAAH4AR8CAAHAAQAB8AEAAfwBPwIA
AeABAQHwAQAB/AE/AgAB8AEDAfABAAr/AQABAQEAAQEB8AEPAfABHwEAAQEBAAEBAeABBwHgAQ8BAAEB
AQABAQHAAQMB4AEHAQABAQEAAQEBgAEBAcABAwEAAQEBAAEBAYABAQHAAQMBAAEBAQABAQEAAQEBwAED
AQABAQEAAQEBAAEBAcABAwEAAQEBAAEBAQABAQHAAQMBAAEBAQABAQEAAQEBwAEDAQABAQEAAQEBAAEB
AcABAwEAAQEBAAEBAYABAQHgAQcBAAEBAQABAQGAAQEB8AEPAQABAQEAAQEBwAEDAv8BAAEBAQABAQHg
AQcC/wEAAQEBAAEBAfABHw7/AfwBPwEAAX8BxwH5Ac8B/wH8AT8BAAEXAcMB8QHbAf8B/AE/AQABRwHB
AcMB8QH/AfwBPwEAAQMB4AGHAeAB/wH8AT8BAAEDAfABBwHwAX8BgAEBAgAB+AEHAfgBPwGAAQEBAAEH
AfwBHwH8AR8BgAEBAgAB+AEeAf4BDwGAAQECAAHwAQ8B/wEfAfwBPwIAAeABhwH/AbMB/AE/AgAB4QHj
Af8B4wH8AT8CAAHjAfMB/wHnAfwBPwIAAb8D/wH8AT8H/wF/BP8BAAF/AcABBwHwAQ8BAAEBAQABfwHA
AQcBwAEDAQABAQEAAQcBwAEHAYABAwEAAQEBAAEHAcABBwGAAQMBAAEBAQABBwHAAQcBgAEDAQABAQEA
AUcBwAEHAYABAwEAAQEBAAFHAcABBwGAAQMBAAEBAQABRwHAAQcBgAEDAQABAQH8AQEBwAEHAYABAwEA
AQEB/AEBAcABBwGAAQMBAAEBAfwBAQHAAQcBgAEDAQABAQH8AQEBwAEHAcABAwEAAQEB/AEBAcABBwHA
AQMBAAEBAfwBAQHAAQcB4AEHAQABAQH8AQEBwAEHBP8B/AEBAcABBws=
</value>
</data>
</root>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel element will disable file and registry virtualization.
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on and is
is designed to work with. Uncomment the appropriate elements and Windows will
automatically selected the most compatible environment. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

@ -0,0 +1,62 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"project": {
"name": "gridcontrol"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css",
"../node_modules/monaco-editor/min/vs/editor/editor.main.css"
],
"scripts": [
],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"project": "src/tsconfig.app.json",
"exclude": "**/node_modules/**"
},
{
"project": "src/tsconfig.spec.json",
"exclude": "**/node_modules/**"
},
{
"project": "e2e/tsconfig.e2e.json",
"exclude": "**/node_modules/**"
}
],
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"component": { }
}
}

View File

@ -0,0 +1,13 @@
# Editor configuration, see http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false

View File

@ -0,0 +1 @@
webpackJsonp([0],{Aj3d:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return i}),n.d(t,"language",function(){return _});var i={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},_={defaultToken:"",tokenPostfix:".cpp",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["abstract","amp","array","auto","bool","break","case","catch","char","class","const","constexpr","const_cast","continue","cpu","decltype","default","delegate","delete","do","double","dynamic_cast","each","else","enum","event","explicit","export","extern","false","final","finally","float","for","friend","gcnew","generic","goto","if","in","initonly","inline","int","interface","interior_ptr","internal","literal","long","mutable","namespace","new","noexcept","nullptr","__nullptr","operator","override","partial","pascal","pin_ptr","private","property","protected","public","ref","register","reinterpret_cast","restrict","return","safe_cast","sealed","short","signed","sizeof","static","static_assert","static_cast","struct","switch","template","this","thread_local","throw","tile_static","true","try","typedef","typeid","typename","union","unsigned","using","virtual","void","volatile","wchar_t","where","while","_asm","_based","_cdecl","_declspec","_fastcall","_if_exists","_if_not_exists","_inline","_multiple_inheritance","_pascal","_single_inheritance","_stdcall","_virtual_inheritance","_w64","__abstract","__alignof","__asm","__assume","__based","__box","__builtin_alignof","__cdecl","__clrcall","__declspec","__delegate","__event","__except","__fastcall","__finally","__forceinline","__gc","__hook","__identifier","__if_exists","__if_not_exists","__inline","__int128","__int16","__int32","__int64","__int8","__interface","__leave","__m128","__m128d","__m128i","__m256","__m256d","__m256i","__m64","__multiple_inheritance","__newslot","__nogc","__noop","__nounwind","__novtordisp","__pascal","__pin","__pragma","__property","__ptr32","__ptr64","__raise","__restrict","__resume","__sealed","__single_inheritance","__stdcall","__super","__thiscall","__try","__try_cast","__typeof","__unaligned","__unhook","__uuidof","__value","__virtual_inheritance","__w64","__wchar_t"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,encoding:/u|u8|U|L/,tokenizer:{root:[[/@encoding?R\"(?:([^ ()\\\t]*))\(/,{token:"string.raw.begin",next:"@raw.$1"}],[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\s*\w+/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],raw:[[/(.*)(\))(?:([^ ()\\\t]*))(\")/,{cases:{"$3==$S2":["string.raw","string.raw.end","string.raw.end",{token:"string.raw.end",next:"@pop"}],"@default":["string.raw","string.raw","string.raw","string.raw"]}}],[/.*/,"string.raw"]]}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([13],{vFHx:function(e,n,o){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),o.d(n,"conf",function(){return t}),o.d(n,"language",function(){return r});var t={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},r={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([14],{QEBt:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),o.d(t,"conf",function(){return n}),o.d(t,"language",function(){return r});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={tokenPostfix:".rust",defaultToken:"invalid",keywords:["as","box","break","const","continue","crate","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","static","struct","super","trait","true","type","unsafe","use","where","while","catch","default","union","static","abstract","alignof","become","do","final","macro","offsetof","override","priv","proc","pure","sizeof","typeof","unsized","virtual","yield"],typeKeywords:["Self","m32","m64","m128","f80","f16","f128","int","uint","float","char","bool","u8","u16","u32","u64","f32","f64","i8","i16","i32","i64","str","Option","Either","c_float","c_double","c_void","FILE","fpos_t","DIR","dirent","c_char","c_schar","c_uchar","c_short","c_ushort","c_int","c_uint","c_long","c_ulong","size_t","ptrdiff_t","clock_t","time_t","c_longlong","c_ulonglong","intptr_t","uintptr_t","off_t","dev_t","ino_t","pid_t","mode_t","ssize_t"],constants:["true","false","Some","None","Left","Right","Ok","Err"],supportConstants:["EXIT_FAILURE","EXIT_SUCCESS","RAND_MAX","EOF","SEEK_SET","SEEK_CUR","SEEK_END","_IOFBF","_IONBF","_IOLBF","BUFSIZ","FOPEN_MAX","FILENAME_MAX","L_tmpnam","TMP_MAX","O_RDONLY","O_WRONLY","O_RDWR","O_APPEND","O_CREAT","O_EXCL","O_TRUNC","S_IFIFO","S_IFCHR","S_IFBLK","S_IFDIR","S_IFREG","S_IFMT","S_IEXEC","S_IWRITE","S_IREAD","S_IRWXU","S_IXUSR","S_IWUSR","S_IRUSR","F_OK","R_OK","W_OK","X_OK","STDIN_FILENO","STDOUT_FILENO","STDERR_FILENO"],supportMacros:["format!","print!","println!","panic!","format_args!","unreachable!","write!","writeln!"],operators:["!","!=","%","%=","&","&=","&&","*","*=","+","+=","-","-=","->",".","..","...","/","/=",":",";","<<","<<=","<","<=","=","==","=>",">",">=",">>",">>=","@","^","^=","|","|=","||","_","?","#"],escapes:/\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,delimiters:/[,]/,symbols:/[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{"@typeKeywords":"keyword.type","@keywords":"keyword","@supportConstants":"keyword","@supportMacros":"keyword","@constants":"keyword","@default":"identifier"}}],[/\$/,"identifier"],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/,"identifier"],[/'\S'/,"string.byteliteral"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],{include:"@numbers"},{include:"@whitespace"},[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}],[/[{}()\[\]<>]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:"number"}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/,{token:"number"}],[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token:"number"}],[/(0x[\da-fA-F]+)_?(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(@intSuffixes?)?/,{token:"number"}]]}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([17],{"TP/O":function(E,S,e){"use strict";Object.defineProperty(S,"__esModule",{value:!0}),e.d(S,"conf",function(){return T}),e.d(S,"language",function(){return R});var T={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},R={defaultToken:"",tokenPostfix:".redis",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["APPEND","AUTH","BGREWRITEAOF","BGSAVE","BITCOUNT","BITFIELD","BITOP","BITPOS","BLPOP","BRPOP","BRPOPLPUSH","CLIENT","KILL","LIST","GETNAME","PAUSE","REPLY","SETNAME","CLUSTER","ADDSLOTS","COUNT-FAILURE-REPORTS","COUNTKEYSINSLOT","DELSLOTS","FAILOVER","FORGET","GETKEYSINSLOT","INFO","KEYSLOT","MEET","NODES","REPLICATE","RESET","SAVECONFIG","SET-CONFIG-EPOCH","SETSLOT","SLAVES","SLOTS","COMMAND","COUNT","GETKEYS","CONFIG","GET","REWRITE","SET","RESETSTAT","DBSIZE","DEBUG","OBJECT","SEGFAULT","DECR","DECRBY","DEL","DISCARD","DUMP","ECHO","EVAL","EVALSHA","EXEC","EXISTS","EXPIRE","EXPIREAT","FLUSHALL","FLUSHDB","GEOADD","GEOHASH","GEOPOS","GEODIST","GEORADIUS","GEORADIUSBYMEMBER","GETBIT","GETRANGE","GETSET","HDEL","HEXISTS","HGET","HGETALL","HINCRBY","HINCRBYFLOAT","HKEYS","HLEN","HMGET","HMSET","HSET","HSETNX","HSTRLEN","HVALS","INCR","INCRBY","INCRBYFLOAT","KEYS","LASTSAVE","LINDEX","LINSERT","LLEN","LPOP","LPUSH","LPUSHX","LRANGE","LREM","LSET","LTRIM","MGET","MIGRATE","MONITOR","MOVE","MSET","MSETNX","MULTI","PERSIST","PEXPIRE","PEXPIREAT","PFADD","PFCOUNT","PFMERGE","PING","PSETEX","PSUBSCRIBE","PUBSUB","PTTL","PUBLISH","PUNSUBSCRIBE","QUIT","RANDOMKEY","READONLY","READWRITE","RENAME","RENAMENX","RESTORE","ROLE","RPOP","RPOPLPUSH","RPUSH","RPUSHX","SADD","SAVE","SCARD","SCRIPT","FLUSH","LOAD","SDIFF","SDIFFSTORE","SELECT","SETBIT","SETEX","SETNX","SETRANGE","SHUTDOWN","SINTER","SINTERSTORE","SISMEMBER","SLAVEOF","SLOWLOG","SMEMBERS","SMOVE","SORT","SPOP","SRANDMEMBER","SREM","STRLEN","SUBSCRIBE","SUNION","SUNIONSTORE","SWAPDB","SYNC","TIME","TOUCH","TTL","TYPE","UNSUBSCRIBE","UNLINK","UNWATCH","WAIT","WATCH","ZADD","ZCARD","ZCOUNT","ZINCRBY","ZINTERSTORE","ZLEXCOUNT","ZRANGE","ZRANGEBYLEX","ZREVRANGEBYLEX","ZRANGEBYSCORE","ZRANK","ZREM","ZREMRANGEBYLEX","ZREMRANGEBYRANK","ZREMRANGEBYSCORE","ZREVRANGE","ZREVRANGEBYSCORE","ZREVRANK","ZSCORE","ZUNIONSTORE","SCAN","SSCAN","HSCAN","ZSCAN"],operators:[],builtinFunctions:[],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],scopes:[]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([19],{"LlI+":function(e,o,r){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),r.d(o,"conf",function(){return t}),r.d(o,"language",function(){return n});var t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},n={defaultToken:"",tokenPostfix:".r",roxygen:["@param","@return","@name","@rdname","@examples","@include","@docType","@S3method","@TODO","@aliases","@alias","@assignee","@author","@callGraphDepth","@callGraph","@callGraphPrimitives","@concept","@exportClass","@exportMethod","@exportPattern","@export","@formals","@format","@importClassesFrom","@importFrom","@importMethodsFrom","@import","@keywords","@method","@nord","@note","@references","@seealso","@setClass","@slot","@source","@title","@usage"],constants:["NULL","FALSE","TRUE","NA","Inf","NaN ","NA_integer_","NA_real_","NA_complex_","NA_character_ ","T","F","LETTERS","letters","month.abb","month.name","pi","R.version.string"],keywords:["break","next","return","if","else","for","in","repeat","while","array","category","character","complex","double","function","integer","list","logical","matrix","numeric","vector","data.frame","factor","library","require","attach","detach","source"],special:["\\n","\\r","\\t","\\b","\\a","\\f","\\v","\\'",'\\"',"\\\\"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@numbers"},{include:"@strings"},[/[{}\[\]()]/,"@brackets"],{include:"@operators"},[/#'/,"comment.doc","@roxygen"],[/(^#.*$)/,"comment"],[/\s+/,"white"],[/[,:;]/,"delimiter"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@constants":"constant","@default":"identifier"}}]],roxygen:[[/@\w+/,{cases:{"@roxygen":"tag","@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/\s+/,{cases:{"@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/.*/,{token:"comment.doc",next:"@pop"}]],numbers:[[/0[xX][0-9a-fA-F]+/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/,"number"]],operators:[[/<{1,2}-/,"operator"],[/->{1,2}/,"operator"],[/%[^%\s]+%/,"operator"],[/\*\*/,"operator"],[/%%/,"operator"],[/&&/,"operator"],[/\|\|/,"operator"],[/<</,"operator"],[/>>/,"operator"],[/[-+=&|!<>^~*/:$]/,"operator"]],strings:[[/'/,"string.escape","@stringBody"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/'/,"string.escape","@popall"],[/./,"string"]],dblStringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/"/,"string.escape","@popall"],[/./,"string"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([2],{"0aNj":function(n,o){function e(n){throw new Error("Cannot find module '"+n+"'.")}e.keys=function(){return[]},e.resolve=e,n.exports=e,e.id="0aNj"}});

View File

@ -0,0 +1 @@
webpackJsonp([20],{rAsP:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return s}),t.d(n,"language",function(){return r});var s={comments:{lineComment:"#",blockComment:["'''","'''"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0,markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},r={defaultToken:"",tokenPostfix:".python",keywords:["and","as","assert","break","class","continue","def","del","elif","else","except","exec","finally","for","from","global","if","import","in","is","lambda","None","not","or","pass","print","raise","return","self","try","while","with","yield","int","float","long","complex","hex","abs","all","any","apply","basestring","bin","bool","buffer","bytearray","callable","chr","classmethod","cmp","coerce","compile","complex","delattr","dict","dir","divmod","enumerate","eval","execfile","file","filter","format","frozenset","getattr","globals","hasattr","hash","help","id","input","intern","isinstance","issubclass","iter","len","locals","list","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","reversed","range","raw_input","reduce","reload","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","unichr","unicode","vars","xrange","zip","True","False","__dict__","__methods__","__members__","__class__","__bases__","__name__","__mro__","__subclasses__","__init__","__import__"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()]/,"@brackets"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}]],whitespace:[[/\s+/,"white"],[/(^#.*$)/,"comment"],[/('''.*''')|(""".*""")/,"string"],[/'''.*$/,"string","@endDocString"],[/""".*$/,"string","@endDblDocString"]],endDocString:[[/\\'/,"string"],[/.*'''/,"string","@popall"],[/.*$/,"string"]],endDblDocString:[[/\\"/,"string"],[/.*"""/,"string","@popall"],[/.*$/,"string"]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,"number"]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,"string"],[/'/,"string.escape","@popall"],[/.(?=.*')/,"string"],[/.*\\$/,"string"],[/.*$/,"string","@popall"]],dblStringBody:[[/\\./,"string"],[/"/,"string.escape","@popall"],[/.(?=.*")/,"string"],[/.*\\$/,"string"],[/.*$/,"string","@popall"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([21],{uWun:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return o}),n.d(t,"language",function(){return a});var o={comments:{lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}],folding:{offSide:!0}},a={defaultToken:"",tokenPostfix:".pug",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["append","block","case","default","doctype","each","else","extends","for","if","in","include","mixin","typeof","unless","var","when"],tags:["a","abbr","acronym","address","area","article","aside","audio","b","base","basefont","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","li","link","map","mark","menu","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strike","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","tracks","tt","u","ul","video","wbr"],symbols:/[\+\-\*\%\&\|\!\=\/\.\,\:]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)([a-zA-Z_-][\w-]*)/,{cases:{"$2@tags":{cases:{"@eos":["","tag"],"@default":["",{token:"tag",next:"@tag.$1"}]}},"$2@keywords":["",{token:"keyword.$2"}],"@default":["",""]}}],[/^(\s*)(#[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.id"],"@default":["",{token:"tag.id",next:"@tag.$1"}]}}],[/^(\s*)(\.[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.class"],"@default":["",{token:"tag.class",next:"@tag.$1"}]}}],[/^(\s*)(\|.*)$/,""],{include:"@whitespace"},[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d+/,"number"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],tag:[[/(\.)(\s*$)/,[{token:"delimiter",next:"@blockText.$S2."},""]],[/\s+/,{token:"",next:"@simpleText"}],[/#[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.id",next:"@pop"},"@default":"tag.id"}}],[/\.[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.class",next:"@pop"},"@default":"tag.class"}}],[/\(/,{token:"delimiter.parenthesis",next:"@attributeList"}]],simpleText:[[/[^#]+$/,{token:"",next:"@popall"}],[/[^#]+/,{token:""}],[/(#{)([^}]*)(})/,{cases:{"@eos":["interpolation.delimiter","interpolation",{token:"interpolation.delimiter",next:"@popall"}],"@default":["interpolation.delimiter","interpolation","interpolation.delimiter"]}}],[/#$/,{token:"",next:"@popall"}],[/#/,""]],attributeList:[[/\s+/,""],[/(\w+)(\s*=\s*)("|')/,["attribute.name","delimiter",{token:"attribute.value",next:"@value.$3"}]],[/\w+/,"attribute.name"],[/,/,{cases:{"@eos":{token:"attribute.delimiter",next:"@popall"},"@default":"attribute.delimiter"}}],[/\)$/,{token:"delimiter.parenthesis",next:"@popall"}],[/\)/,{token:"delimiter.parenthesis",next:"@pop"}]],whitespace:[[/^(\s*)(\/\/.*)$/,{token:"comment",next:"@blockText.$1.comment"}],[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],blockText:[[/^\s+.*$/,{cases:{"($S2\\s+.*$)":{token:"$S3"},"@default":{token:"@rematch",next:"@popall"}}}],[/./,{token:"@rematch",next:"@popall"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]],string:[[/[^\\"'#]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,{cases:{"@eos":{token:"string.escape",next:"@popall"},"@default":"string.escape"}}],[/\\./,{cases:{"@eos":{token:"string.escape.invalid",next:"@popall"},"@default":"string.escape.invalid"}}],[/(#{)([^}]*)(})/,["interpolation.delimiter","interpolation","interpolation.delimiter"]],[/#/,"string"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":{token:"string"}}}]],value:[[/[^\\"']+/,{cases:{"@eos":{token:"attribute.value",next:"@popall"},"@default":"attribute.value"}}],[/\\./,{cases:{"@eos":{token:"attribute.value",next:"@popall"},"@default":"attribute.value"}}],[/["']/,{cases:{"$#==$S2":{token:"attribute.value",next:"@pop"},"@default":{token:"attribute.value"}}}]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([22],{"9NZ8":function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return s}),t.d(n,"language",function(){return o});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"#",blockComment:["<#","#>"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",ignoreCase:!0,tokenPostfix:".ps1",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["begin","break","catch","class","continue","data","define","do","dynamicparam","else","elseif","end","exit","filter","finally","for","foreach","from","function","if","in","param","process","return","switch","throw","trap","try","until","using","var","while","workflow","parallel","sequence","inlinescript","configuration"],helpKeywords:/SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,symbols:/[=><!~?&%|+\-*\/\^;\.,]+/,escapes:/`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_][\w-]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/^:\w*/,"metatag"],[/\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,"variable"],[/<#/,"comment","@comment"],[/#.*$/,"comment"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/\@"/,"string",'@herestring."'],[/\@'/,"string","@herestring.'"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\$`]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,{cases:{"@eos":{token:"string.escape",next:"@popall"},"@default":"string.escape"}}],[/`./,{cases:{"@eos":{token:"string.escape.invalid",next:"@popall"},"@default":"string.escape.invalid"}}],[/\$[\w]+$/,{cases:{'$S2=="':{token:"variable",next:"@popall"},"@default":{token:"string",next:"@popall"}}}],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}}}]],herestring:[[/^\s*(["'])@/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^\$`]+/,"string"],[/@escapes/,"string.escape"],[/`./,"string.escape.invalid"],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}]],comment:[[/[^#\.]+/,"comment"],[/#>/,"comment","@pop"],[/(\.)(@helpKeywords)(?!\w)/,{token:"comment.keyword.$2"}],[/[\.#]/,"comment"]]}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([26],{nMQi:function(e,n,o){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),o.d(n,"conf",function(){return t}),o.d(n,"language",function(){return s});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,"string"],[/'/,"string.escape","@popall"],[/.(?=.*')/,"string"],[/.*\\$/,"string"],[/.*$/,"string","@popall"]],dblStringBody:[[/\\./,"string"],[/"/,"string.escape","@popall"],[/.(?=.*")/,"string"],[/.*\\$/,"string"],[/.*$/,"string","@popall"]]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([28],{"E+87":function(E,T,A){"use strict";Object.defineProperty(T,"__esModule",{value:!0}),A.d(T,"conf",function(){return N}),A.d(T,"language",function(){return e});var N={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]}]},e={defaultToken:"",tokenPostfix:".msdax",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.brackets"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["VAR","RETURN","NOT","EVALUATE","DATATABLE","ORDER","BY","START","AT","DEFINE","MEASURE","ASC","DESC","IN","BOOLEAN","DOUBLE","INTEGER","DATETIME","CURRENCY","STRING"],functions:["CLOSINGBALANCEMONTH","CLOSINGBALANCEQUARTER","CLOSINGBALANCEYEAR","DATEADD","DATESBETWEEN","DATESINPERIOD","DATESMTD","DATESQTD","DATESYTD","ENDOFMONTH","ENDOFQUARTER","ENDOFYEAR","FIRSTDATE","FIRSTNONBLANK","LASTDATE","LASTNONBLANK","NEXTDAY","NEXTMONTH","NEXTQUARTER","NEXTYEAR","OPENINGBALANCEMONTH","OPENINGBALANCEQUARTER","OPENINGBALANCEYEAR","PARALLELPERIOD","PREVIOUSDAY","PREVIOUSMONTH","PREVIOUSQUARTER","PREVIOUSYEAR","SAMEPERIODLASTYEAR","STARTOFMONTH","STARTOFQUARTER","STARTOFYEAR","TOTALMTD","TOTALQTD","TOTALYTD","ADDCOLUMNS","ADDMISSINGITEMS","ALL","ALLEXCEPT","ALLNOBLANKROW","ALLSELECTED","CALCULATE","CALCULATETABLE","CALENDAR","CALENDARAUTO","CROSSFILTER","CROSSJOIN","CURRENTGROUP","DATATABLE","DETAILROWS","DISTINCT","EARLIER","EARLIEST","EXCEPT","FILTER","FILTERS","GENERATE","GENERATEALL","GROUPBY","IGNORE","INTERSECT","ISONORAFTER","KEEPFILTERS","LOOKUPVALUE","NATURALINNERJOIN","NATURALLEFTOUTERJOIN","RELATED","RELATEDTABLE","ROLLUP","ROLLUPADDISSUBTOTAL","ROLLUPGROUP","ROLLUPISSUBTOTAL","ROW","SAMPLE","SELECTCOLUMNS","SUBSTITUTEWITHINDEX","SUMMARIZE","SUMMARIZECOLUMNS","TOPN","TREATAS","UNION","USERELATIONSHIP","VALUES","SUM","SUMX","PATH","PATHCONTAINS","PATHITEM","PATHITEMREVERSE","PATHLENGTH","AVERAGE","AVERAGEA","AVERAGEX","COUNT","COUNTA","COUNTAX","COUNTBLANK","COUNTROWS","COUNTX","DISTINCTCOUNT","DIVIDE","GEOMEAN","GEOMEANX","MAX","MAXA","MAXX","MEDIAN","MEDIANX","MIN","MINA","MINX","PERCENTILE.EXC","PERCENTILE.INC","PERCENTILEX.EXC","PERCENTILEX.INC","PRODUCT","PRODUCTX","RANK.EQ","RANKX","STDEV.P","STDEV.S","STDEVX.P","STDEVX.S","VAR.P","VAR.S","VARX.P","VARX.S","XIRR","XNPV","DATE","DATEDIFF","DATEVALUE","DAY","EDATE","EOMONTH","HOUR","MINUTE","MONTH","NOW","SECOND","TIME","TIMEVALUE","TODAY","WEEKDAY","WEEKNUM","YEAR","YEARFRAC","CONTAINS","CONTAINSROW","CUSTOMDATA","ERROR","HASONEFILTER","HASONEVALUE","ISBLANK","ISCROSSFILTERED","ISEMPTY","ISERROR","ISEVEN","ISFILTERED","ISLOGICAL","ISNONTEXT","ISNUMBER","ISODD","ISSUBTOTAL","ISTEXT","USERNAME","USERPRINCIPALNAME","AND","FALSE","IF","IFERROR","NOT","OR","SWITCH","TRUE","ABS","ACOS","ACOSH","ACOT","ACOTH","ASIN","ASINH","ATAN","ATANH","BETA.DIST","BETA.INV","CEILING","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","COMBIN","COMBINA","CONFIDENCE.NORM","CONFIDENCE.T","COS","COSH","COT","COTH","CURRENCY","DEGREES","EVEN","EXP","EXPON.DIST","FACT","FLOOR","GCD","INT","ISO.CEILING","LCM","LN","LOG","LOG10","MOD","MROUND","ODD","PERMUT","PI","POISSON.DIST","POWER","QUOTIENT","RADIANS","RAND","RANDBETWEEN","ROUND","ROUNDDOWN","ROUNDUP","SIGN","SIN","SINH","SQRT","SQRTPI","TAN","TANH","TRUNC","BLANK","CONCATENATE","CONCATENATEX","EXACT","FIND","FIXED","FORMAT","LEFT","LEN","LOWER","MID","REPLACE","REPT","RIGHT","SEARCH","SUBSTITUTE","TRIM","UNICHAR","UNICODE","UPPER","VALUE"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},[/[;,.]/,"delimiter"],[/[({})]/,"@brackets"],[/[a-z_][a-zA-Z0-9_]*/,{cases:{"@keywords":"keyword","@functions":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/\/\/+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N"/,{token:"string",next:"@string"}],[/"/,{token:"string",next:"@string"}]],string:[[/[^"]+/,"string"],[/""/,"string"],[/"/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/'/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^']+/,"identifier"],[/''/,"identifier"],[/'/,{token:"identifier.quote",next:"@pop"}]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([29],{C7VQ:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return o}),n.d(t,"language",function(){return c});var s="attribute.name.html",o={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},c={defaultToken:"",tokenPostfix:".md",control:/[\\`*_\[\]{}()#+\-\.!]/,noncontrol:/[^\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,jsescapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],tokenizer:{root:[[/^(\s{0,3})(#+)((?:[^\\#]|@escapes)+)((?:#+)?)/,["white","keyword","keyword","keyword"]],[/^\s*(=+|\-+)\s*$/,"keyword"],[/^\s*((\*[ ]?)+)\s*$/,"meta.separator"],[/^\s*>+/,"comment"],[/^\s*([\*\-+:]|\d+\.)\s/,"keyword"],[/^(\t|[ ]{4})[^ ].*$/,"string"],[/^\s*~~~\s*((?:\w|[\/\-#])+)?\s*$/,{token:"string",next:"@codeblock"}],[/^\s*```\s*((?:\w|[\/\-#])+)\s*$/,{token:"string",next:"@codeblockgh",nextEmbedded:"$1"}],[/^\s*```\s*$/,{token:"string",next:"@codeblock"}],{include:"@linecontent"}],codeblock:[[/^\s*~~~\s*$/,{token:"string",next:"@pop"}],[/^\s*```\s*$/,{token:"string",next:"@pop"}],[/.*$/,"variable.source"]],codeblockgh:[[/```\s*$/,{token:"variable.source",next:"@pop",nextEmbedded:"@pop"}],[/[^`]+/,"variable.source"]],linecontent:[[/&\w+;/,"string.escape"],[/@escapes/,"escape"],[/\b__([^\\_]|@escapes|_(?!_))+__\b/,"strong"],[/\*\*([^\\*]|@escapes|\*(?!\*))+\*\*/,"strong"],[/\b_[^_]+_\b/,"emphasis"],[/\*([^\\*]|@escapes)+\*/,"emphasis"],[/`([^\\`]|@escapes)+`/,"variable"],[/\{[^}]+\}/,"string.target"],[/(!?\[)((?:[^\]\\]|@escapes)*)(\]\([^\)]+\))/,["string.link","","string.link"]],[/(!?\[)((?:[^\]\\]|@escapes)*)(\])/,"string.link"],{include:"html"}],html:[[/<(\w+)\/>/,"tag"],[/<(\w+)/,{cases:{"@empty":{token:"tag",next:"@tag.$1"},"@default":{token:"tag",next:"@tag.$1"}}}],[/<\/(\w+)\s*>/,{token:"tag"}],[/<!--/,"comment","@comment"]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,"comment","@pop"],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]],tag:[[/[ \t\r\n]+/,"white"],[/(type)(\s*=\s*)(")([^"]+)(")/,[s,"delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(type)(\s*=\s*)(')([^']+)(')/,[s,"delimiter.html","string.html",{token:"string.html",switchTo:"@tag.$S2.$4"},"string.html"]],[/(\w+)(\s*=\s*)("[^"]*"|'[^']*')/,[s,"delimiter.html","string.html"]],[/\w+/,s],[/\/>/,"tag","@pop"],[/>/,{cases:{"$S2==style":{token:"tag",switchTo:"embeddedStyle",nextEmbedded:"text/css"},"$S2==script":{cases:{$S3:{token:"tag",switchTo:"embeddedScript",nextEmbedded:"$S3"},"@default":{token:"tag",switchTo:"embeddedScript",nextEmbedded:"text/javascript"}}},"@default":{token:"tag",next:"@pop"}}}]],embeddedStyle:[[/[^<]+/,""],[/<\/style\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]],embeddedScript:[[/[^<]+/,""],[/<\/script\s*>/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/</,""]]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([30],{y5sU:function(e,n,o){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),o.d(n,"conf",function(){return t}),o.d(n,"language",function(){return s});var t={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["delimiter","","key","","delimiter"]],[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["@brackets","","key","","delimiter"]],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/--\[([=]*)\[/,"comment","@comment.$1"],[/--.*$/,"comment"]],comment:[[/[^\]]+/,"comment"],[/\]([=]*)\]/,{cases:{"$1==$S2":{token:"comment",next:"@pop"},"@default":"comment"}}],[/./,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([31],{U5zn:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return i}),n.d(t,"language",function(){return r});var i={wordPattern:/(#?-?\d*\.\d\w*%?)|([@#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},r={defaultToken:"",tokenPostfix:".less",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",identifierPlus:"-?-?([a-zA-Z:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@nestedJSBegin"},["[ \\t\\r\\n]+",""],{include:"@comments"},{include:"@keyword"},{include:"@strings"},{include:"@numbers"},["[*_]?[a-zA-Z\\-\\s]+(?=:.*(;|(\\\\$)))","attribute.name","@attribute"],["url(\\-prefix)?\\(",{token:"tag",next:"@urldeclaration"}],["[{}()\\[\\]]","@brackets"],["[,:;]","delimiter"],["#@identifierPlus","tag.id"],["&","tag"],["\\.@identifierPlus(?=\\()","tag.class","@attribute"],["\\.@identifierPlus","tag.class"],["@identifierPlus","tag"],{include:"@operators"},["@(@identifier(?=[:,\\)]))","variable","@attribute"],["@(@identifier)","variable"],["@","key","@atRules"]],nestedJSBegin:[["``","delimiter.backtick"],["`",{token:"delimiter.backtick",next:"@nestedJSEnd",nextEmbedded:"text/javascript"}]],nestedJSEnd:[["`",{token:"delimiter.backtick",next:"@pop",nextEmbedded:"@pop"}]],operators:[["[<>=\\+\\-\\*\\/\\^\\|\\~]","operator"]],keyword:[["(@[\\s]*import|![\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\b","keyword"]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"tag",next:"@pop"}]],attribute:[{include:"@nestedJSBegin"},{include:"@comments"},{include:"@strings"},{include:"@numbers"},{include:"@keyword"},["[a-zA-Z\\-]+(?=\\()","attribute.value","@attribute"],[">","operator","@pop"],["@identifier","attribute.value"],{include:"@operators"},["@(@identifier)","variable"],["[)\\}]","@brackets","@pop"],["[{}()\\[\\]>]","@brackets"],["[;]","delimiter","@pop"],["[,=:]","delimiter"],["\\s",""],[".","attribute.value"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],strings:[['~?"',{token:"string.delimiter",next:"@stringsEndDoubleQuote"}],["~?'",{token:"string.delimiter",next:"@stringsEndQuote"}]],stringsEndDoubleQuote:[['\\\\"',"string"],['"',{token:"string.delimiter",next:"@popall"}],[".","string"]],stringsEndQuote:[["\\\\'","string"],["'",{token:"string.delimiter",next:"@popall"}],[".","string"]],atRules:[{include:"@comments"},{include:"@strings"},["[()]","delimiter"],["[\\{;]","delimiter","@pop"],[".","key"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([32],{x3ms:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),o.d(t,"conf",function(){return n}),o.d(t,"language",function(){return s});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},s={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([33],{"fj+P":function(e,n,s){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),s.d(n,"conf",function(){return o}),s.d(n,"language",function(){return t});var o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},t={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([34],{jIYi:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return o}),n.d(t,"language",function(){return d});var i="undefined"==typeof monaco?self.monaco:monaco,r=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:i.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:i.languages.IndentAction.Indent}}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#endregion\\b.*--\x3e")}}},d={defaultToken:"",tokenPostfix:".html",ignoreCase:!0,tokenizer:{root:[[/<!DOCTYPE/,"metatag","@doctype"],[/<!--/,"comment","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter","tag","","delimiter"]],[/(<)(script)/,["delimiter",{token:"tag",next:"@script"}]],[/(<)(style)/,["delimiter",{token:"tag",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/</,"delimiter"],[/[^<]+/]],doctype:[[/[^>]+/,"metatag.content"],[/>/,"metatag","@pop"]],comment:[[/-->/,"comment","@pop"],[/[^-]+/,"comment.content"],[/./,"comment.content"]],otherTag:[[/\/?>/,"delimiter","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([36],{AZr8:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return o}),t.d(n,"language",function(){return s});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],operators:["+","-","*","/","%","&","|","^","<<",">>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([37],{gQGc:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return s}),t.d(n,"language",function(){return o});var s={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*#region\\b|^\\s*\\(\\*\\s*#region(.*)\\*\\)"),end:new RegExp("^\\s*//\\s*#endregion\\b|^\\s*\\(\\*\\s*#endregion\\s*\\*\\)")}}},o={defaultToken:"",tokenPostfix:".fs",keywords:["abstract","and","atomic","as","assert","asr","base","begin","break","checked","component","const","constraint","constructor","continue","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","eager","event","external","extern","false","finally","for","fun","function","fixed","functor","global","if","in","include","inherit","inline","interface","internal","land","lor","lsl","lsr","lxor","lazy","let","match","member","mod","module","mutable","namespace","method","mixin","new","not","null","of","open","or","object","override","private","parallel","process","protected","pure","public","rec","return","static","sealed","struct","sig","then","to","true","tailcall","trait","try","type","upcast","use","val","void","virtual","volatile","when","while","with","yield"],symbols:/[=><!~?:&|+\-*\^%;\.,\/]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/[uU]?[yslnLI]?/,floatsuffix:/[fFmM]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[<.*>\]/,"annotation"],[/^#(if|else|endif)/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0x[0-9a-fA-F]+LF/,"number.float"],[/0x[0-9a-fA-F]+(@integersuffix)/,"number.hex"],[/0b[0-1]+(@integersuffix)/,"number.bin"],[/\d+(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string",'@string."""'],[/"/,"string",'@string."'],[/\@"/,{token:"string.quote",next:"@litstring"}],[/'[^\\']'B?/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\(\*(?!\))/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\*/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/("""|"B?)/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([38],{WfTH:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return s}),t.d(n,"language",function(){return o});var s={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o={defaultToken:"",tokenPostfix:".dockerfile",instructions:/FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT/,instructionAfter:/ONBUILD/,variableAfter:/ENV/,variable:/\${?[\w]+}?/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(@instructionAfter)(\s+)/,["keyword",{token:"",next:"@instructions"}]],["","keyword","@instructions"]],instructions:[[/(@variableAfter)(\s+)([\w]+)/,["keyword","",{token:"variable",next:"@arguments"}]],[/(@instructions)/,"keyword","@arguments"]],arguments:[{include:"@whitespace"},{include:"@strings"},[/(@variable)/,{cases:{"@eos":{token:"variable",next:"@popall"},"@default":"variable"}}],[/\\/,{cases:{"@eos":"","@default":""}}],[/./,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],whitespace:[[/\s+/,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],comment:[[/(^#.*$)/,"comment","@popall"]],strings:[[/'$/,"string","@popall"],[/'/,"string","@stringBody"],[/"$/,"string","@popall"],[/"/,"string","@dblStringBody"]],stringBody:[[/[^\\\$']/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/'$/,"string","@popall"],[/'/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]],dblStringBody:[[/[^\\\$"]/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/"$/,"string","@popall"],[/"/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([39],{Ej8Q:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return r}),n.d(t,"language",function(){return i});var r={wordPattern:/(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,comments:{blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},i={defaultToken:"",tokenPostfix:".css",ws:"[ \t\n\r\f]*",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.bracket"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@strings"},["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@selectorname"},["[\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.bracket",next:"@selectorbody"}]],selectorbody:[{include:"@comments"},["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],["}",{token:"delimiter.bracket",next:"@pop"}]],selectorname:[["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@functioninvocation"},{include:"@numbers"},{include:"@name"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","delimiter"],[",","delimiter"]],rulevalue:[{include:"@comments"},{include:"@strings"},{include:"@term"},["!important","keyword"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[/[^*/]+/,"comment"],[/./,"comment"]],name:[["@identifier","attribute.value"]],numbers:[["-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],keyframedeclaration:[["@identifier","attribute.value"],["{",{token:"delimiter.bracket",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.bracket",next:"@selectorbody"}],["}",{token:"delimiter.bracket",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"attribute.value",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"attribute.value",next:"@pop"}]],strings:[['~?"',{token:"string",next:"@stringenddoublequote"}],["~?'",{token:"string",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string",next:"@pop"}],[/[^\\"]+/,"string"],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string",next:"@pop"}],[/[^\\']+/,"string"],[".","string"]]}}}});

View File

@ -0,0 +1,391 @@
monaco-editor@0.12.0
MIT
The MIT License (MIT)
Copyright (c) 2016 - present Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
cache-loader@1.2.2
MIT
Copyright JS Foundation and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@angular-devkit/build-optimizer@0.3.2
MIT
The MIT License
Copyright (c) 2017 Google, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
source-map@0.5.7
BSD-3-Clause
Copyright (c) 2009-2011, Mozilla Foundation and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the Mozilla Foundation nor the names of project
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
base64-js@1.3.0
MIT
The MIT License (MIT)
Copyright (c) 2014
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
buffer@4.9.1
MIT
The MIT License (MIT)
Copyright (c) Feross Aboukhadijeh, and other contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
node-libs-browser@2.1.0
MIT
(The MIT License)
Copyright (c) 2012 Tobias Koppers
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
webpack@3.11.0
MIT
Copyright JS Foundation and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
os-browserify@0.3.0
MIT
The MIT License (MIT)
Copyright (c) 2017 CoderPuppy
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
source-map-support@0.4.18
MIT
The MIT License (MIT)
Copyright (c) 2014 Evan Wallace
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
path-browserify@0.0.0
MIT
This software is released under the MIT license:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
isarray@1.0.0
MIT
MIT
ieee754@1.1.11
BSD-3-Clause
Copyright (c) 2008, Fair Oaks Labs, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
process@0.11.10
MIT
(The MIT License)
Copyright (c) 2013 Roman Shtylman <shtylman@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@angular/core@5.2.10
MIT
MIT
@angular/platform-browser@5.2.10
MIT
MIT
@angular/forms@5.2.10
MIT
MIT
@angular/common@5.2.10
MIT
MIT
@angular/platform-browser-dynamic@5.2.10
MIT
MIT
core-js@2.5.6
MIT
Copyright (c) 2014-2018 Denis Pushkarev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
zone.js@0.8.26
MIT
The MIT License
Copyright (c) 2016-2018 Google, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([40],{"s/8m":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),r.d(e,"conf",function(){return s}),r.d(e,"language",function(){return n});var s={brackets:[],autoClosingPairs:[],surroundingPairs:[]},n={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,"string.quote"],[/connect-src/,"string.quote"],[/default-src/,"string.quote"],[/font-src/,"string.quote"],[/frame-src/,"string.quote"],[/img-src/,"string.quote"],[/manifest-src/,"string.quote"],[/media-src/,"string.quote"],[/object-src/,"string.quote"],[/script-src/,"string.quote"],[/style-src/,"string.quote"],[/worker-src/,"string.quote"],[/base-uri/,"string.quote"],[/plugin-types/,"string.quote"],[/sandbox/,"string.quote"],[/disown-opener/,"string.quote"],[/form-action/,"string.quote"],[/frame-ancestors/,"string.quote"],[/report-uri/,"string.quote"],[/report-to/,"string.quote"],[/upgrade-insecure-requests/,"string.quote"],[/block-all-mixed-content/,"string.quote"],[/require-sri-for/,"string.quote"],[/reflected-xss/,"string.quote"],[/referrer/,"string.quote"],[/policy-uri/,"string.quote"],[/'self'/,"string.quote"],[/'unsafe-inline'/,"string.quote"],[/'unsafe-eval'/,"string.quote"],[/'strict-dynamic'/,"string.quote"],[/'unsafe-hashed-attributes'/,"string.quote"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([41],{Wrsc:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return o}),n.d(t,"language",function(){return s});var o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",tokenPostfix:".cs",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["extern","alias","using","bool","decimal","sbyte","byte","short","ushort","int","uint","long","ulong","char","float","double","object","dynamic","string","assembly","is","as","ref","out","this","base","new","typeof","void","checked","unchecked","default","delegate","var","const","if","else","switch","case","while","do","for","foreach","in","break","continue","goto","return","throw","try","catch","finally","lock","yield","from","let","where","join","on","equals","into","orderby","ascending","descending","select","group","by","namespace","partial","class","field","event","method","param","property","public","protected","internal","private","abstract","sealed","static","struct","readonly","volatile","virtual","override","params","get","set","add","remove","operator","true","false","implicit","explicit","interface","enum","null","async","await","fixed","sizeof","stackalloc","unsafe","nameof","when"],namespaceFollows:["namespace","using"],parenFollows:["if","for","while","switch","foreach","using","catch","when"],operators:["=","??","||","&&","|","^","&","==","!=","<=",">=","<<","+","-","*","/","%","!","~","++","--","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=",">>","=>"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@?[a-zA-Z_]\w*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@keywords":{token:"keyword.$0",next:"@qualified"},"@default":{token:"identifier",next:"@qualified"}}}],{include:"@whitespace"},[/}/,{cases:{"$S2==interpolatedstring":{token:"string.quote",next:"@pop"},"$S2==litinterpstring":{token:"string.quote",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}],[/\$\@"/,{token:"string.quote",next:"@litinterpstring"}],[/\@"/,{token:"string.quote",next:"@litstring"}],[/\$"/,{token:"string.quote",next:"@interpolatedstring"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],qualified:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/\./,"delimiter"],["","","@pop"]],namespace:[{include:"@whitespace"},[/[A-Z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]],litinterpstring:[[/[^"{]+/,"string"],[/""/,"string.escape"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.litinterpstring"}],[/"/,{token:"string.quote",next:"@pop"}]],interpolatedstring:[[/[^\\"{]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.interpolatedstring"}],[/"/,{token:"string.quote",next:"@pop"}]],whitespace:[[/^[ \t\v\f]*#((r)|(load))(?=\s)/,"directive.csx"],[/^[ \t\v\f]*#\w.*$/,"namespace.cpp"],[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([42],{WdiG:function(e,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),r.d(n,"conf",function(){return t}),r.d(n,"language",function(){return s});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".coffee",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:["and","or","is","isnt","not","on","yes","@","no","off","true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super","undefined","then","unless","until","loop","of","by","when"],symbols:/[=><!~?&%|+\-*\/\^\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@[a-zA-Z_]\w*/,"variable.predefined"],[/[a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/###/,"comment","@comment"],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\()(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\=)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\[)(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\!)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\&)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\|)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\?)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\{)(\s*)(@regEx)/,["@brackets","","regexp"]],[/(\;)(\s*)(@regEx)/,["","","regexp"]],[/}/,{cases:{"$S2==interpolatedstring":{token:"string",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/###/,"comment","@pop"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([43],{zNPU:function(e,s,o){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),o.d(s,"conf",function(){return t}),o.d(s,"language",function(){return n});var t={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},n={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=><!~?&|+\-*\/\^;\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)(rem(?:\s.*|))$/,["","comment"]],[/(\@?)(@keywords)(?!\w)/,[{token:"keyword"},{token:"keyword.$2"}]],[/[ \t\r\n]+/,""],[/setlocal(?!\w)/,"keyword.tag-setlocal"],[/endlocal(?!\w)/,"keyword.tag-setlocal"],[/[a-zA-Z_]\w*/,""],[/:\w*/,"metatag"],[/%[^%]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],string:[[/[^\\"'%]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/%[\w ]+%/,"variable"],[/%%[\w]+(?!\w)/,"variable"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/$/,"string","@popall"]]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([6],{L8Vy:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),t.d(n,"conf",function(){return r}),t.d(n,"language",function(){return o});var r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0}},o={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|.*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+$/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"/,"string",'@string."'],[/'/,"string","@string.'"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}}}});

View File

@ -0,0 +1 @@
webpackJsonp([7],{dwcb:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"conf",function(){return a}),n.d(t,"language",function(){return o});var a={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}]},o={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
webpackJsonp([9],{DMQN:function(e,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),t.d(o,"conf",function(){return n}),t.d(o,"language",function(){return r});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},r={defaultToken:"",tokenPostfix:".swift",identifier:/[a-zA-Z_][\w$]*/,attributes:["@autoclosure","@noescape","@noreturn","@NSApplicationMain","@NSCopying","@NSManaged","@objc","@UIApplicationMain","@noreturn","@availability","@IBAction","@IBDesignable","@IBInspectable","@IBOutlet"],accessmodifiers:["public","private","internal"],keywords:["__COLUMN__","__FILE__","__FUNCTION__","__LINE__","as","as!","as?","associativity","break","case","catch","class","continue","convenience","default","deinit","didSet","do","dynamic","dynamicType","else","enum","extension","fallthrough","final","for","func","get","guard","if","import","in","infix","init","inout","internal","is","lazy","left","let","mutating","nil","none","nonmutating","operator","optional","override","postfix","precedence","prefix","private","protocol","Protocol","public","repeat","required","return","right","self","Self","set","static","struct","subscript","super","switch","throw","throws","try","try!","Type","typealias","unowned","var","weak","where","while","willSet","FALSE","TRUE"],symbols:/[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/,operatorstart:/[\/=\-+!*%<>&|^~?\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7\u2016-\u2017\u2020-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E\u2190-\u23FF\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3001-\u3003\u3008-\u3030]/,operatorend:/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F\uE0100-\uE01EF]/,operators:/(@operatorstart)((@operatorstart)|(@operatorend))*/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@comment"},{include:"@attribute"},{include:"@literal"},{include:"@keyword"},{include:"@invokedmethod"},{include:"@symbol"}],symbol:[[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/[.]/,"delimiter"],[/@operators/,"operator"],[/@symbols/,"operator"]],comment:[[/\/\/\/.*$/,"comment.doc"],[/\/\*\*/,"comment.doc","@commentdocbody"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@commentbody"]],commentdocbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment.doc","@pop"],[/\:[a-zA-Z]+\:/,"comment.doc.param"],[/./,"comment.doc"]],commentbody:[[/\/\*/,"comment","@commentbody"],[/\*\//,"comment","@pop"],[/./,"comment"]],attribute:[[/\@@identifier/,{cases:{"@attributes":"keyword.control","@default":""}}]],literal:[[/"/,{token:"string.quote",next:"@stringlit"}],[/0[b]([01]_?)+/,"number.binary"],[/0[o]([0-7]_?)+/,"number.octal"],[/0[x]([0-9a-fA-F]_?)+([pP][\-+](\d_?)+)?/,"number.hex"],[/(\d_?)*\.(\d_?)+([eE][\-+]?(\d_?)+)?/,"number.float"],[/(\d_?)+/,"number"]],stringlit:[[/\\\(/,{token:"operator",next:"@interpolatedexpression"}],[/@escapes/,"string"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}],[/./,"string"]],interpolatedexpression:[[/\(/,{token:"operator",next:"@interpolatedexpression"}],[/\)/,{token:"operator",next:"@pop"}],{include:"@literal"},{include:"@keyword"},{include:"@symbol"}],keyword:[[/`/,{token:"operator",next:"@escapedkeyword"}],[/@identifier/,{cases:{"@keywords":"keyword","[A-Z][a-zA-Z0-9$]*":"type.identifier","@default":"identifier"}}]],escapedkeyword:[[/`/,{token:"operator",next:"@pop"}],[/./,"identifier"]],invokedmethod:[[/([.])(@identifier)/,{cases:{$2:["delimeter","type.identifier"],"@default":""}}]]}}}});

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Some files were not shown because too many files have changed in this diff Show More