From 4532e75b9da829d1035357f6222d3525bfed77ef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:42:02 +0000 Subject: [PATCH 01/50] Promote develop/1.0 to preview/1.0 (#98) Signed-off-by: dependabot[bot] Co-authored-by: Pete Sramek Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Pete Sramek Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .editorconfig | 272 ++ .gitattributes | 53 +- .github/ISSUE_TEMPLATE/bug_report.md | 38 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .../documentation/docfx-build/action.yml | 47 + .../documentation/docfx-metadata/action.yml | 66 + .github/actions/git/push-changes/action.yml | 99 + .../actions/github/create-release/action.yml | 28 + .../github/write-file-to-summary/action.yml | 25 + .../actions/nuget/publish-package/action.yml | 61 + .github/actions/source/compile/action.yml | 74 + .github/actions/source/format/action.yml | 73 + .../actions/testing/code-coverage/action.yml | 73 + .../actions/testing/test-report/action.yml | 60 + .github/actions/testing/test/action.yml | 91 + .../versioning/extract-version/action.yml | 56 + .../versioning/format-version/action.yml | 66 + .github/dependabot.yml | 14 + .github/workflows/build.yml | 258 ++ .github/workflows/codeql.yml | 97 - .github/workflows/dotnet.yml | 28 - .github/workflows/promote-branch.yml | 216 ++ .github/workflows/publish-documentation.yml | 85 + .github/workflows/pull-request.yml | 258 ++ .github/workflows/release.yml | 251 ++ .github/workflows/static.yml | 44 - .gitignore | 5 +- DropoutCoder.PolylineAlgorithm.sln | 61 - LICENSE | 2 +- PolylineAlgorithm.slnx | 17 + README.md | 118 +- ....Abstraction.AbstractPolylineDecoder-2.yml | 190 ++ ....Abstraction.AbstractPolylineEncoder-2.yml | 204 ++ ...gorithm.Abstraction.IPolylineDecoder-2.yml | 49 + ...gorithm.Abstraction.IPolylineEncoder-2.yml | 49 + .../1.0/PolylineAlgorithm.Abstraction.yml | 35 + .../1.0/PolylineAlgorithm.Coordinate.yml | 250 ++ .../PolylineAlgorithm.CoordinateValueType.yml | 45 + ...m.Extensions.PolylineDecoderExtensions.yml | 182 + ...m.Extensions.PolylineEncoderExtensions.yml | 130 + .../1.0/PolylineAlgorithm.Extensions.yml | 19 + ...lineAlgorithm.InvalidPolylineException.yml | 73 + .../1.0/PolylineAlgorithm.Polyline.yml | 315 ++ .../1.0/PolylineAlgorithm.PolylineDecoder.yml | 149 + .../1.0/PolylineAlgorithm.PolylineEncoder.yml | 161 + .../PolylineAlgorithm.PolylineEncoding.yml | 254 ++ ...ylineAlgorithm.PolylineEncodingOptions.yml | 74 + ...gorithm.PolylineEncodingOptionsBuilder.yml | 126 + api-reference/1.0/PolylineAlgorithm.yml | 71 + api-reference/1.0/toc.yml | 46 + api-reference/api-reference.json | 59 + api-reference/assembly-metadata.json | 17 + api-reference/favicon.ico | Bin 0 -> 249170 bytes api-reference/guide/getting-started.md | 1 + api-reference/guide/introduction.md | 1 + api-reference/guide/toc.yml | 4 + api-reference/index.md | 26 + .../media/polyline-algorithm-50x46.png | Bin 0 -> 5385 bytes api-reference/media/polyline-algorithm.png | Bin 0 -> 488006 bytes api-reference/toc.yml | 8 + ...tCoder.PolylineAlgorithm.Benchmarks.csproj | 18 - .../PolylineEncodingBenchmark.cs | 40 - .../Program.cs | 13 - .../Constants.cs | 82 - .../DecodePerformanceBenchmark.cs | 200 -- ...Algorithm.Implementation.Benchmarks.csproj | 19 - .../EncodePerformanceBenchmark.cs | 222 -- .../Program.cs | 15 - .../PolylineAlgorithm.Benchmarks.csproj | 26 + .../PolylineBenchmark.cs | 165 + .../PolylineDecoderBenchmark.cs | 52 + .../PolylineEncoderBenchmark.cs | 69 + .../PolylineAlgorithm.Benchmarks/Program.cs | 23 + .../Properties/GlobalSuppressions.cs | 8 + code-coverage-settings.xml | 26 + docs/.gitignore | 9 - docs/api/.gitignore | 4 - docs/api/.manifest | 23 - docs/api/index.md | 4 - docs/docfx.json | 58 - docs/favicon.ico | Bin 99678 -> 0 bytes docs/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes docs/fonts/glyphicons-halflings-regular.svg | 288 -- docs/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes docs/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes docs/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes docs/logo.svg | 25 - docs/manifest.json | 1 - docs/search-stopwords.json | 121 - docs/styles/docfx.css | 882 ----- docs/styles/docfx.js | 700 ---- docs/styles/docfx.vendor.css | 1466 --------- docs/styles/docfx.vendor.js | 45 - docs/styles/lunr.js | 2924 ----------------- docs/styles/lunr.min.js | 7 - docs/styles/main.css | 0 docs/styles/main.js | 1 - docs/styles/search-worker.js | 45 - nuget/DropoutCoder.PolylineAlgorithm.nuspec | 19 - .../NetTopologyPolylineDecoder.cs | 47 + .../NetTopologyPolylineEncoder.cs | 61 + ...neAlgorithm.NetTopologySuite.Sample.csproj | 31 + src/Constants.cs | 82 - src/DropoutCoder.PolylineAlgorithm.csproj | 29 - src/Encoding/IPolylineEncoding.cs | 38 - src/Encoding/PolylineEncoding.cs | 38 - src/Encoding/PolylineEncodingBase.cs | 72 - src/ExceptionMessageResource.Designer.cs | 99 - src/PolylineAlgorithm.cs | 216 -- .../Abstraction/AbstractPolylineDecoder.cs | 154 + .../Abstraction/AbstractPolylineEncoder.cs | 221 ++ .../Abstraction/IPolylineDecoder.cs | 24 + .../Abstraction/IPolylineEncoder.cs | 24 + src/PolylineAlgorithm/Coordinate.cs | 132 + src/PolylineAlgorithm/CoordinateValueType.cs | 24 + .../Extensions/PolylineDecoderExtensions.cs | 85 + .../Extensions/PolylineEncoderExtensions.cs | 62 + .../Internal/CoordinateVariance.cs | 80 + src/PolylineAlgorithm/Internal/Defaults.cs | 145 + .../Internal/Logging/LogInfoExtensions.cs | 22 + .../Internal/Logging/LogWarningExtensions.cs | 34 + .../InvalidPolylineException.cs | 45 + src/PolylineAlgorithm/Polyline.cs | 214 ++ .../PolylineAlgorithm.csproj | 81 + src/PolylineAlgorithm/PolylineDecoder.cs | 29 + src/PolylineAlgorithm/PolylineEncoder.cs | 35 + src/PolylineAlgorithm/PolylineEncoding.cs | 252 ++ .../PolylineEncodingOptions.cs | 44 + .../PolylineEncodingOptionsBuilder.cs | 77 + .../ExceptionMessageResource.Designer.cs | 153 + .../Properties}/ExceptionMessageResource.resx | 34 +- src/PolylineAlgorithm/PublicAPI.Shipped.txt | 1 + src/PolylineAlgorithm/PublicAPI.Unshipped.txt | 1 + src/Validation/CoordinateValidator.cs | 47 - tests/Defaults.cs | 77 - ...ropoutCoder.PolylineAlgorithm.Tests.csproj | 23 - tests/Encoding/PolylineEncodingBaseTest.cs | 196 -- tests/Encoding/PolylineEncodingTest.cs | 55 - .../AbstractPolylineDecoderTest.cs | 179 + .../AbstractPolylineEncoderTest.cs | 165 + .../PolylineAlgorithm.Tests/CoordinateTest.cs | 253 ++ .../Fakes/FakeLoggerFactory.cs | 41 + .../Internal/CoordinateVarianceTest.cs | 94 + .../Internal/LoggingTest.cs | 224 ++ .../InvalidPolylineExceptionTest.cs | 31 + .../PolylineAlgorithm.Tests.csproj | 46 + .../PolylineDecoderExtensionsTest.cs | 112 + .../PolylineDecoderTest.cs | 85 + .../PolylineEncoderExtensionsTest.cs | 77 + .../PolylineEncoderTest.cs | 118 + .../PolylineEncodingOptionsTest.cs | 42 + .../PolylineEncodingTest.cs | 265 ++ .../PolylineOptionsBuilderTest.cs | 103 + tests/PolylineAlgorithm.Tests/PolylineTest.cs | 287 ++ .../Properties/Category.cs | 16 + .../Properties/GlobalSuppressions.cs | 8 + .../Properties/GlobalUsings.cs | 6 + .../Properties/MSTestSettings.cs | 9 + tests/PolylineAlgorithmTest.cs | 177 - tests/Properties/AssemblyInfo.cs | 11 - tests/Validation/CoordinateValidatorTest.cs | 136 - .../PolylineAlgorithm.Utility.csproj | 44 + .../Properties/CodeCoverage.cs | 8 + .../RandomValueProvider.cs | 121 + .../StaticValueProvider.cs | 80 + 165 files changed, 9722 insertions(+), 8894 deletions(-) create mode 100644 .editorconfig create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/actions/documentation/docfx-build/action.yml create mode 100644 .github/actions/documentation/docfx-metadata/action.yml create mode 100644 .github/actions/git/push-changes/action.yml create mode 100644 .github/actions/github/create-release/action.yml create mode 100644 .github/actions/github/write-file-to-summary/action.yml create mode 100644 .github/actions/nuget/publish-package/action.yml create mode 100644 .github/actions/source/compile/action.yml create mode 100644 .github/actions/source/format/action.yml create mode 100644 .github/actions/testing/code-coverage/action.yml create mode 100644 .github/actions/testing/test-report/action.yml create mode 100644 .github/actions/testing/test/action.yml create mode 100644 .github/actions/versioning/extract-version/action.yml create mode 100644 .github/actions/versioning/format-version/action.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/codeql.yml delete mode 100644 .github/workflows/dotnet.yml create mode 100644 .github/workflows/promote-branch.yml create mode 100644 .github/workflows/publish-documentation.yml create mode 100644 .github/workflows/pull-request.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/static.yml delete mode 100644 DropoutCoder.PolylineAlgorithm.sln create mode 100644 PolylineAlgorithm.slnx create mode 100644 api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineDecoder-2.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineEncoder-2.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Abstraction.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Coordinate.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.CoordinateValueType.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Extensions.PolylineDecoderExtensions.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Extensions.PolylineEncoderExtensions.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Extensions.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.InvalidPolylineException.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.Polyline.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.PolylineDecoder.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.PolylineEncoder.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.PolylineEncoding.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptions.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptionsBuilder.yml create mode 100644 api-reference/1.0/PolylineAlgorithm.yml create mode 100644 api-reference/1.0/toc.yml create mode 100644 api-reference/api-reference.json create mode 100644 api-reference/assembly-metadata.json create mode 100644 api-reference/favicon.ico create mode 100644 api-reference/guide/getting-started.md create mode 100644 api-reference/guide/introduction.md create mode 100644 api-reference/guide/toc.yml create mode 100644 api-reference/index.md create mode 100644 api-reference/media/polyline-algorithm-50x46.png create mode 100644 api-reference/media/polyline-algorithm.png create mode 100644 api-reference/toc.yml delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks.csproj delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/PolylineEncodingBenchmark.cs delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/Program.cs delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Constants.cs delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DecodePerformanceBenchmark.cs delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks.csproj delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/EncodePerformanceBenchmark.cs delete mode 100644 benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Program.cs create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/PolylineAlgorithm.Benchmarks.csproj create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/PolylineBenchmark.cs create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/PolylineDecoderBenchmark.cs create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/PolylineEncoderBenchmark.cs create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/Program.cs create mode 100644 benchmarks/PolylineAlgorithm.Benchmarks/Properties/GlobalSuppressions.cs create mode 100644 code-coverage-settings.xml delete mode 100644 docs/.gitignore delete mode 100644 docs/api/.gitignore delete mode 100644 docs/api/.manifest delete mode 100644 docs/api/index.md delete mode 100644 docs/docfx.json delete mode 100644 docs/favicon.ico delete mode 100644 docs/fonts/glyphicons-halflings-regular.eot delete mode 100644 docs/fonts/glyphicons-halflings-regular.svg delete mode 100644 docs/fonts/glyphicons-halflings-regular.ttf delete mode 100644 docs/fonts/glyphicons-halflings-regular.woff delete mode 100644 docs/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 docs/logo.svg delete mode 100644 docs/manifest.json delete mode 100644 docs/search-stopwords.json delete mode 100644 docs/styles/docfx.css delete mode 100644 docs/styles/docfx.js delete mode 100644 docs/styles/docfx.vendor.css delete mode 100644 docs/styles/docfx.vendor.js delete mode 100644 docs/styles/lunr.js delete mode 100644 docs/styles/lunr.min.js delete mode 100644 docs/styles/main.css delete mode 100644 docs/styles/main.js delete mode 100644 docs/styles/search-worker.js delete mode 100644 nuget/DropoutCoder.PolylineAlgorithm.nuspec create mode 100644 samples/PolylineAlgorithm.NetTopologySuite.Sample/NetTopologyPolylineDecoder.cs create mode 100644 samples/PolylineAlgorithm.NetTopologySuite.Sample/NetTopologyPolylineEncoder.cs create mode 100644 samples/PolylineAlgorithm.NetTopologySuite.Sample/PolylineAlgorithm.NetTopologySuite.Sample.csproj delete mode 100644 src/Constants.cs delete mode 100644 src/DropoutCoder.PolylineAlgorithm.csproj delete mode 100644 src/Encoding/IPolylineEncoding.cs delete mode 100644 src/Encoding/PolylineEncoding.cs delete mode 100644 src/Encoding/PolylineEncodingBase.cs delete mode 100644 src/ExceptionMessageResource.Designer.cs delete mode 100644 src/PolylineAlgorithm.cs create mode 100644 src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs create mode 100644 src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs create mode 100644 src/PolylineAlgorithm/Abstraction/IPolylineDecoder.cs create mode 100644 src/PolylineAlgorithm/Abstraction/IPolylineEncoder.cs create mode 100644 src/PolylineAlgorithm/Coordinate.cs create mode 100644 src/PolylineAlgorithm/CoordinateValueType.cs create mode 100644 src/PolylineAlgorithm/Extensions/PolylineDecoderExtensions.cs create mode 100644 src/PolylineAlgorithm/Extensions/PolylineEncoderExtensions.cs create mode 100644 src/PolylineAlgorithm/Internal/CoordinateVariance.cs create mode 100644 src/PolylineAlgorithm/Internal/Defaults.cs create mode 100644 src/PolylineAlgorithm/Internal/Logging/LogInfoExtensions.cs create mode 100644 src/PolylineAlgorithm/Internal/Logging/LogWarningExtensions.cs create mode 100644 src/PolylineAlgorithm/InvalidPolylineException.cs create mode 100644 src/PolylineAlgorithm/Polyline.cs create mode 100644 src/PolylineAlgorithm/PolylineAlgorithm.csproj create mode 100644 src/PolylineAlgorithm/PolylineDecoder.cs create mode 100644 src/PolylineAlgorithm/PolylineEncoder.cs create mode 100644 src/PolylineAlgorithm/PolylineEncoding.cs create mode 100644 src/PolylineAlgorithm/PolylineEncodingOptions.cs create mode 100644 src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs create mode 100644 src/PolylineAlgorithm/Properties/ExceptionMessageResource.Designer.cs rename src/{ => PolylineAlgorithm/Properties}/ExceptionMessageResource.resx (78%) create mode 100644 src/PolylineAlgorithm/PublicAPI.Shipped.txt create mode 100644 src/PolylineAlgorithm/PublicAPI.Unshipped.txt delete mode 100644 src/Validation/CoordinateValidator.cs delete mode 100644 tests/Defaults.cs delete mode 100644 tests/DropoutCoder.PolylineAlgorithm.Tests.csproj delete mode 100644 tests/Encoding/PolylineEncodingBaseTest.cs delete mode 100644 tests/Encoding/PolylineEncodingTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/AbstractPolylineDecoderTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/AbstractPolylineEncoderTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/CoordinateTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/Fakes/FakeLoggerFactory.cs create mode 100644 tests/PolylineAlgorithm.Tests/Internal/CoordinateVarianceTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/Internal/LoggingTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/InvalidPolylineExceptionTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineAlgorithm.Tests.csproj create mode 100644 tests/PolylineAlgorithm.Tests/PolylineDecoderExtensionsTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineDecoderTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineEncoderExtensionsTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineEncoderTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineEncodingOptionsTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineEncodingTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineOptionsBuilderTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/PolylineTest.cs create mode 100644 tests/PolylineAlgorithm.Tests/Properties/Category.cs create mode 100644 tests/PolylineAlgorithm.Tests/Properties/GlobalSuppressions.cs create mode 100644 tests/PolylineAlgorithm.Tests/Properties/GlobalUsings.cs create mode 100644 tests/PolylineAlgorithm.Tests/Properties/MSTestSettings.cs delete mode 100644 tests/PolylineAlgorithmTest.cs delete mode 100644 tests/Properties/AssemblyInfo.cs delete mode 100644 tests/Validation/CoordinateValidatorTest.cs create mode 100644 utilities/PolylineAlgorithm.Utility/PolylineAlgorithm.Utility.csproj create mode 100644 utilities/PolylineAlgorithm.Utility/Properties/CodeCoverage.cs create mode 100644 utilities/PolylineAlgorithm.Utility/RandomValueProvider.cs create mode 100644 utilities/PolylineAlgorithm.Utility/StaticValueProvider.cs diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..61536f81 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,272 @@ +# Remove the line below if you want to inherit .editorconfig settings from higher directories +root = true + +# All files +[*] +end_of_line = lf +insert_final_newline = true + +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing +indent_size = 4 +indent_style = space +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = false + +#### .NET Code Actions #### + +# Type members +dotnet_hide_advanced_members = false +dotnet_member_insertion_location = with_other_members_of_the_same_kind +dotnet_property_generation_behavior = prefer_auto_properties + +# Symbol search +dotnet_search_reference_assemblies = true + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = false +file_header_template = unset + +# this. and Me. preferences +dotnet_style_qualification_for_event = false +dotnet_style_qualification_for_field = false +dotnet_style_qualification_for_method = false +dotnet_style_qualification_for_property = false + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true +dotnet_style_predefined_type_for_member_access = true + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_operators = always_for_clarity +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members + +# Expression-level preferences +dotnet_prefer_system_hash_code = true +dotnet_style_coalesce_expression = true +dotnet_style_collection_initializer = true +dotnet_style_explicit_tuple_names = true +dotnet_style_namespace_match_folder = true +dotnet_style_null_propagation = true +dotnet_style_object_initializer = true +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true +dotnet_style_prefer_collection_expression = when_types_loosely_match +dotnet_style_prefer_compound_assignment = true +dotnet_style_prefer_conditional_expression_over_assignment = true +dotnet_style_prefer_conditional_expression_over_return = true +dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed +dotnet_style_prefer_inferred_anonymous_type_member_names = true +dotnet_style_prefer_inferred_tuple_names = true +dotnet_style_prefer_is_null_check_over_reference_equality_method = true +dotnet_style_prefer_simplified_boolean_expressions = true +dotnet_style_prefer_simplified_interpolation = true + +# Field preferences +dotnet_style_readonly_field = true + +# Parameter preferences +dotnet_code_quality_unused_parameters = non_public + +# Suppression preferences +dotnet_remove_unnecessary_suppression_exclusions = none + +# New line preferences +dotnet_style_allow_multiple_blank_lines_experimental = false +dotnet_style_allow_statement_immediately_after_block_experimental = false + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false +csharp_style_var_for_built_in_types = false +csharp_style_var_when_type_is_apparent = false + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true +csharp_style_expression_bodied_constructors = false +csharp_style_expression_bodied_indexers = true +csharp_style_expression_bodied_lambdas = when_on_single_line +csharp_style_expression_bodied_local_functions = when_on_single_line +csharp_style_expression_bodied_methods = false +csharp_style_expression_bodied_operators = false +csharp_style_expression_bodied_properties = true + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true +csharp_style_pattern_matching_over_is_with_cast_check = true +csharp_style_prefer_extended_property_pattern = true +csharp_style_prefer_not_pattern = true +csharp_style_prefer_pattern_matching = true +csharp_style_prefer_switch_expression = true + +# Null-checking preferences +csharp_style_conditional_delegate_call = true + +# Modifier preferences +csharp_prefer_static_anonymous_function = true +csharp_prefer_static_local_function = true +csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async +csharp_style_prefer_readonly_struct = true +csharp_style_prefer_readonly_struct_member = true + +# Code-block preferences +csharp_prefer_braces = true +csharp_prefer_simple_using_statement = false +csharp_prefer_system_threading_lock = true +csharp_style_namespace_declarations = file_scoped +csharp_style_prefer_method_group_conversion = false +csharp_style_prefer_primary_constructors = true +csharp_style_prefer_top_level_statements = false + +# Expression-level preferences +csharp_prefer_simple_default_expression = true +csharp_style_deconstructed_variable_declaration = true +csharp_style_implicit_object_creation_when_type_is_apparent = true +csharp_style_inlined_variable_declaration = true +csharp_style_prefer_implicitly_typed_lambda_expression = true +csharp_style_prefer_index_operator = true +csharp_style_prefer_local_over_anonymous_function = false +csharp_style_prefer_null_check_over_type_check = true +csharp_style_prefer_range_operator = true +csharp_style_prefer_tuple_swap = true +csharp_style_prefer_unbound_generic_type_in_nameof = true +csharp_style_prefer_utf8_string_literals = true +csharp_style_throw_expression = true +csharp_style_unused_value_assignment_preference = discard_variable +csharp_style_unused_value_expression_statement_preference = discard_variable + +# 'using' directive preferences +csharp_using_directive_placement = inside_namespace + +# New line preferences +csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false +csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = false +csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = false +csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false +csharp_style_allow_embedded_statements_on_same_line_experimental = false + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = false +csharp_new_line_before_else = false +csharp_new_line_before_finally = false +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = none +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_const_field_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.private_or_internal_const_field_should_be_pascal_case.symbols = private_or_internal_const_field +dotnet_naming_rule.private_or_internal_const_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_underscore_camel_case.severity = suggestion +dotnet_naming_rule.private_or_internal_field_should_be_underscore_camel_case.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_underscore_camel_case.style = underscore_camel_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, method, event +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +dotnet_naming_symbols.private_or_internal_const_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_const_field.applicable_accessibilities = internal, private, protected_internal, private_protected +dotnet_naming_symbols.private_or_internal_const_field.required_modifiers = const + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.underscore_camel_case.required_prefix = _ +dotnet_naming_style.underscore_camel_case.required_suffix = +dotnet_naming_style.underscore_camel_case.word_separator = +dotnet_naming_style.underscore_camel_case.capitalization = camel_case diff --git a/.gitattributes b/.gitattributes index 5fa1ed0e..e4cab669 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,7 +10,7 @@ # default for csharp files. # Note: This is only used by command line ############################################################################### -#*.cs diff=csharp +*.cs diff=csharp ############################################################################### # Set the merge driver for project and solution files @@ -22,27 +22,28 @@ # these files as binary and thus will always conflict and require user # intervention with every merge. To do so, just uncomment the entries below ############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary +*.sln merge=binary +*.csproj merge=binary +*.vbproj merge=binary +*.vcxproj merge=binary +*.vcproj merge=binary +*.dbproj merge=binary +*.fsproj merge=binary +*.lsproj merge=binary +*.wixproj merge=binary +*.modelproj merge=binary +*.sqlproj merge=binary +*.wwaproj merge=binary ############################################################################### # behavior for image files # # image files are treated as binary by default. ############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary +*.jpg binary +*.png binary +*.gif binary +*.ico binary ############################################################################### # diff behavior for common document formats @@ -51,16 +52,16 @@ # is only available from the command line. Turn it on by uncommenting the # entries below. ############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain ############################################################################### # exclude files except those with cs file extension from repository language detection diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..dd84ea78 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..bbcbbe7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/actions/documentation/docfx-build/action.yml b/.github/actions/documentation/docfx-build/action.yml new file mode 100644 index 00000000..4eddad17 --- /dev/null +++ b/.github/actions/documentation/docfx-build/action.yml @@ -0,0 +1,47 @@ +name: 'Generate docs with docfx' +author: 'Pete Sramek' +description: 'Generate documentation using docfx' +inputs: +# Required + artifact-name: + description: 'Name of the artifact to upload after generating documentation' + required: true + docfx-json-manifest: + description: 'Path to the docfx JSON manifest file' + required: true + output-directory: + description: 'Target directory for generated documentation' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: Dotnet Setup + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'testing variables' + shell: bash + run: | + echo "artifact-name: ${{ inputs.artifact-name }}" + echo "docfx-json-manifest: ${{ inputs.docfx-json-manifest }}" + echo "output-directory: ${{ inputs.output-directory }}" + echo "dotnet-sdk-version: ${{ inputs.dotnet_sdk_version }}" + - name: 'Update docfx tool' + run: dotnet tool update -g docfx + shell: bash + - name: 'Generate documentation' + run: docfx build ${{ inputs.docfx-json-manifest }} + shell: bash + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.artifact-name }} + path: ${{ inputs.output-directory }} \ No newline at end of file diff --git a/.github/actions/documentation/docfx-metadata/action.yml b/.github/actions/documentation/docfx-metadata/action.yml new file mode 100644 index 00000000..bf20df47 --- /dev/null +++ b/.github/actions/documentation/docfx-metadata/action.yml @@ -0,0 +1,66 @@ +name: 'Generate metadata with docfx' +author: 'Pete Sramek' +description: 'Generate metadata using docfx' + +inputs: +# Required + artifact-name: + description: 'Name of the artifact to upload after generating metadata' + required: true + docfx-json-manifest: + description: 'Path to the docfx JSON manifest file' + required: true + temporary-directory: + description: 'Temporary directory for docfx metadata generation' + required: true + output-directory: + description: 'Target directory for generated documentation' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: Dotnet Setup + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Update docfx tool' + run: dotnet tool update -g docfx + shell: bash + - name: 'Delete temporary folder' + shell: bash + run: | + if [ -d "${{ inputs.temporary-directory }}" ]; then + rm -rf "${{ inputs.temporary-directory }}" + fi + - name: 'Delete temporary folder' + shell: bash + run: | + if [ -d "$${{ inputs.output-directory }}" ]; then + rm -rf "${{ inputs.output-directory }}" + fi + - name: 'Generate assembly metadata' + shell: bash + run: docfx metadata ${{ inputs.docfx-json-manifest }} + - name: 'List directory' + shell: bash + run: | + ls + - name: 'Copy metadata to output directory' + shell: bash + run: | + mkdir -p ${{ inputs.output-directory }} + cp -r ${{ inputs.temporary-directory }}/* ${{ inputs.output-directory }} + - name: 'Upload artifact' + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.artifact-name }} + path: ${{ inputs.output-directory }} + \ No newline at end of file diff --git a/.github/actions/git/push-changes/action.yml b/.github/actions/git/push-changes/action.yml new file mode 100644 index 00000000..da323b21 --- /dev/null +++ b/.github/actions/git/push-changes/action.yml @@ -0,0 +1,99 @@ +name: 'Push Changes' +author: 'Pete Sramek' +description: 'Push changes to a specified branch in the repository.' +inputs: + # Required + commit-message: + description: 'The commit message to use when pushing changes.' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + artifact-name: + description: 'Name of the artifact to download before pushing changes. Default: ''''' + required: false + default: '' + working-directory: + description: 'The working directory where the changes will be pushed from. Default ''.''' + required: false + default: '.' + target-branch: + description: 'The branch to push changes to.. Default: ''''' + required: false + default: '' + +runs: + using: "composite" + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Dotnet Setup + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: Download a single artifact + if: ${{ inputs.artifact-name != '' }} + uses: actions/download-artifact@v4 + with: + name: ${{ inputs.artifact-name }} + path: ${{ inputs.working-directory }} + + - name: Stage changes in ${{ inputs.working-directory }} + shell: bash + run: | + git add . + working-directory: ${{ inputs.working-directory }} + + - if: runner.os == 'Windows' + shell: bash + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - if: runner.os != 'Windows' + shell: bash + run: | + git config --global core.autocrlf true + git config --global core.eol lf + + - name: Create or switch to ${{ inputs.target-branch }} + if: ${{ inputs.target-branch != '' }} + shell: bash + run: | + git fetch origin + git stash push --keep-index + if git show-ref --verify --quiet refs/heads/${{ inputs.target-branch }}; then + echo "Branch ${{ inputs.target-branch }} already exists, switching to it." + git checkout ${{ inputs.target-branch }} --force + git pull origin ${{ inputs.target-branch }} + else + echo "Branch ${{ inputs.target-branch }} does not exist, creating it." + git checkout -b ${{ inputs.target-branch }} origin/${{ inputs.target-branch }} --force || git checkout -b ${{ inputs.target-branch }} --force + git pull origin ${{ inputs.target-branch }} + fi + git stash apply + + - name: Validate changes + id: validate + shell: bash + run: | + set +e + git diff --quiet --exit-code --cached + echo has-changes="$?" >> $GITHUB_OUTPUT + set -e + working-directory: ${{ inputs.working-directory }} + + - name: Push changes to ${{ github.head_ref || github.ref }} + if: ${{ fromJSON(steps.validate.outputs.has-changes) == '1' }} + shell: bash + run: | + git config user.name "$(git log -n 1 --pretty=format:%an)" + git config user.email "$(git log -n 1 --pretty=format:%ae)" + git commit -m '${{ inputs.commit-message }}' + git pull --rebase origin ${{ github.head_ref || github.ref }} + git push + working-directory: ${{ inputs.working-directory }} diff --git a/.github/actions/github/create-release/action.yml b/.github/actions/github/create-release/action.yml new file mode 100644 index 00000000..f489604e --- /dev/null +++ b/.github/actions/github/create-release/action.yml @@ -0,0 +1,28 @@ +name: 'Create GitHub release' +author: 'Pete Sramek' +description: 'Create GitHub release.' +inputs: + release-version: + description: 'Version to use for the release.' + required: true + is-preview: + description: 'Is this a preview release?' + required: true + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - run: | + echo "release-version=${{ inputs.release-version }}" + echo "is-preview=${{ inputs.is-preview }}" + echo "preview-argument=${{ inputs.is-preview == 'true' && '--prerelease' || '' }}" + shell: bash + - name: 'Create GitHub release PolylineAlgorithm ${{ env.release-version }}' + shell: bash + env: + GH_TOKEN: ${{ github.token }} + preview-argument: "${{ inputs.is-preview == 'true' && '--prerelease' || '' }}" + run: | + gh release create ${{ env.release-version }} --generate-notes --discussion-category "General" ${{ env.preview-argument }} diff --git a/.github/actions/github/write-file-to-summary/action.yml b/.github/actions/github/write-file-to-summary/action.yml new file mode 100644 index 00000000..ac682f6d --- /dev/null +++ b/.github/actions/github/write-file-to-summary/action.yml @@ -0,0 +1,25 @@ +name: 'Write file to step summary' +author: 'Pete Sramek' +description: 'Writes file contents to step summary.' +inputs: +# Required + file-glob-pattern: + description: 'Search pattern for files to write.' + required: true + +# Optional + working-directory: + description: 'Working directory to search for file.' + required: false + default: ${{ github.workspace }} + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Writing ${{ inputs.file }} to step summary + shell: bash + run: cat ${{ inputs.file }} >> $GITHUB_STEP_SUMMARY + working-directory: ${{ inputs.working-directory }} \ No newline at end of file diff --git a/.github/actions/nuget/publish-package/action.yml b/.github/actions/nuget/publish-package/action.yml new file mode 100644 index 00000000..83d00687 --- /dev/null +++ b/.github/actions/nuget/publish-package/action.yml @@ -0,0 +1,61 @@ +name: 'Publish packages to NuGet feed' +author: 'Pete Sramek' +description: 'Publishes packages in working directory to public NuGet feed' +inputs: +# Required + package-artifact-name: + description: 'Name of the artifact to download and publish' + required: true + nuget-feed-url: + description: 'NuGet feed URL' + required: true + nuget-feed-api-key: + description: 'NuGet feed API key' + required: true + nuget-feed-server: + description: 'NuGet feed server. Allowed values: ''NuGet'', ''AzureArtifacts''' + required: true +# Optional + dotnet-sdk-version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + working-directory: + description: 'Working directory to search for file.' + required: false + default: ${{ github.workspace }} + +runs: + using: composite + + steps: + + - if: ${{ inputs.nuget-feed-server != 'NuGet' && inputs.nuget-feed-server != 'AzureArtifacts' }} + name: 'Validate NuGet feed server type' + shell: bash + run: | + echo "Invalid NuGet feed server type. Allowed values are ''NuGet'' or ''AzureArtifacts''." + exit 1 + + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Download package artifact + uses: actions/download-artifact@v5 + with: + name: ${{ inputs.package-artifact-name }} + + - if: ${{ inputs.nuget-feed-server == 'NuGet' }} + name: 'Publish package to NuGet' + shell: bash + run: | + dotnet nuget push **/*.nupkg --source ${{ inputs.nuget-feed-url }} --api-key ${{ inputs.nuget-feed-api-key }} + working-directory: ${{ env.working-directory }} + + - if: ${{ inputs.nuget-feed-server == 'AzureArtifacts' }} + name: 'Publish package to Azure Artifacts' + shell: bash + run: | + dotnet nuget add source ${{ inputs.nuget-feed-url }} --name nuget-feed --username username --password ${{ inputs.nuget-feed-api-key }} --store-password-in-clear-text + dotnet nuget push **/*.nupkg --source nuget-feed --api-key ${{ inputs.nuget-feed-api-key }} --skip-duplicate + working-directory: ${{ env.working-directory }} \ No newline at end of file diff --git a/.github/actions/source/compile/action.yml b/.github/actions/source/compile/action.yml new file mode 100644 index 00000000..7e6eea46 --- /dev/null +++ b/.github/actions/source/compile/action.yml @@ -0,0 +1,74 @@ +name: 'Compile source code' +author: 'Pete Sramek' +description: 'Compiles source code, uploads build artifacts.' +inputs: +# Required + assembly-version: + description: 'Assembly version.' + required: true + assembly-informational-version: + description: 'Assembly informational version.' + required: true + file-version: + description: 'Assembly file version.' + required: true + treat-warnins-as-error: + description: 'Treat warnings as errors.' + required: true + project-path: + description: 'Search pattern for source code.' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: ''9.x''' + required: false + default: '9.x' + build-configuration: + description: 'Build configuration. Default: ''Release''' + required: false + default: 'Release' + build-platform: + description: 'Build platform. Deafult: ''Any CPU''' + required: false + default: 'Any CPU' + upload-build-artifacts: + description: 'Upload build artifacts, Default: ''true''' + required: false + default: 'true' + build-artifacts-glob-pattern: + description: 'Search pattern for build artifacts. Default: **/bin/*, **/obj/*' + required: false + default: | + **/bin/* + **/obj/* + build-artifacts-name: + description: 'Upload build artifacts, Default: ''build''' + required: false + default: 'build' + +runs: + using: "composite" + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - if: ${{ inputs.treat-warnings-as-error == 'true' }} + name: 'Validate warnings with .NET CLI' + shell: bash + run: dotnet format analyzers --severity warn --verify-no-changes + + - name: 'Build with .NET CLI' + shell: bash + run: dotnet build ${{ inputs.search-glob-pattern }} --configuration ${{ inputs.build-configuration }} /p:Platform="${{ inputs.build-platform }}" /p:Version=${{ inputs.assembly-version }} /p:AssemblyInformationalVersion=${{ inputs.assembly-informational-version }} /p:FileVersion=${{ inputs.file-version }} + + - name: 'Upload build artifacts' + if: ${{ inputs.upload-build-artifacts == 'true' }} + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.build-artifacts-name }} + path: ${{ inputs.build-artifacts-glob-pattern }} diff --git a/.github/actions/source/format/action.yml b/.github/actions/source/format/action.yml new file mode 100644 index 00000000..f932a166 --- /dev/null +++ b/.github/actions/source/format/action.yml @@ -0,0 +1,73 @@ +name: 'Format source code' +author: 'Pete Sramek' +description: 'Formats source code using dotnet format tool. Pushes changes to the current branch.' +inputs: +# Required + project-path: + description: 'Path to the project or solution file.' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: ''9.x''' + required: false + default: '9.x' + format-whitespace: + description: 'Format whitespace. Default: ''true''' + required: false + default: 'true' + format-style: + description: 'Format style. Default: ''true''' + required: false + default: 'true' + format-analyzers: + description: 'Format analyzers. Default: ''false''' + required: false + default: 'false' + format-analyzers-diagnostics-parameter: + description: 'Format analyzers diagnostics parameter. Default: ''''' + required: false + default: '' + +runs: + using: "composite" + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - name: Format whitespace + if: ${{ inputs.format-whitespace == 'true' }} + shell: bash + run: | + dotnet format whitespace + working-directory: ${{ github.workspace }} + + - name: Format style + if: ${{ inputs.format-style == 'true' }} + shell: bash + run: | + dotnet format style + working-directory: ${{ github.workspace }} + + - name: 'Set target branch' + if: ${{ inputs.format-analyzers == 'true' && inputs.format-analyzers-diagnostics-parameter != '' }} + id: set-diagnostics-parameter + shell: bash + run: | + echo "format-analyzers-diagnostics-parameter=--diagnostics ${{ inputs.format-analyzers-diagnostics-parameter }}" >> $GITHUB_OUTPUT + + - name: Format analyzers + if: ${{ inputs.format-analyzers == 'true' }} + shell: bash + run: | + dotnet format analyzers ${{ env.format-analyzers-diagnostics-parameter }} + working-directory: ${{ github.workspace }} + + - name: 'Push changes' + uses: './.github/actions/git/push-changes' + with: + commit-message: 'Formatted csharp files' diff --git a/.github/actions/testing/code-coverage/action.yml b/.github/actions/testing/code-coverage/action.yml new file mode 100644 index 00000000..45d257f5 --- /dev/null +++ b/.github/actions/testing/code-coverage/action.yml @@ -0,0 +1,73 @@ +name: 'Test with .NET CLI' +author: 'Pete Sramek' +description: 'Run tests, collects code coverage, logs test results, uploads test artifacts' +inputs: +# Required + test-result-folder: + description: 'Folder where test results are stored' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + +outputs: + code-coverage-report-file: + description: 'Path to the generated code coverage report' + value: ${{ steps.variables.outputs.code-coverage-report-file }} + code-coverage-merge-file: + description: 'Path to the merged code coverage file' + value: ${{ steps.variables.outputs.code-coverage-merge-file }} + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - if: ${{ endsWith(inputs.test-result-folder, '/') }} + name: 'Set TEST_RESULT_FOLDER environment variable' + shell: bash + run: echo "TEST_RESULT_FOLDER=${{ inputs.test-result-folder }}" >> $GITHUB_ENV + + - if: ${{ !endsWith(inputs.test-result-folder, '/') }} + name: 'Set TEST_RESULT_FOLDER environment variable' + shell: bash + run: echo "TEST_RESULT_FOLDER=${{ inputs.test-result-folder }}/" >> $GITHUB_ENV + + - name: 'Set CODE_COVERAGE_REPORT_FOLDER environment variable' + shell: bash + run: echo "CODE_COVERAGE_REPORT_FOLDER=${{ env.TEST_RESULT_FOLDER }}coverage-report/" >> $GITHUB_ENV + + - name: 'Set CODE_COVERAGE_MERGED_FILE environment variable' + shell: bash + run: echo "CODE_COVERAGE_MERGED_FILE=${{ env.CODE_COVERAGE_REPORT_FOLDER }}code-coverage.cobertura.xml" >> $GITHUB_ENV + + - name: 'Set code-coverage-report output' + id: variables + shell: bash + run: | + echo "code-coverage-report-file=${{ env.CODE_COVERAGE_REPORT_FOLDER }}Summary.md" >> $GITHUB_OUTPUT + echo "code-coverage-merge-file=${{ env.CODE_COVERAGE_MERGED_FILE }}" >> $GITHUB_OUTPUT + + - name: 'Update dotnet-coverage tool' + shell: bash + run: dotnet tool update --global dotnet-coverage + + - name: 'Merge code coverage reports' + shell: bash + run: dotnet-coverage merge --output ${{ env.CODE_COVERAGE_MERGED_FILE }} --output-format cobertura "${{ env.TEST_RESULT_FOLDER }}**/*.cobertura.xml" + + - name: 'Update dotnet-reportgenerator-globaltool tool' + shell: bash + run: dotnet tool update --global dotnet-reportgenerator-globaltool + + - name: 'Generate code coverage report' + shell: bash + run: reportgenerator -reports:${{ env.CODE_COVERAGE_MERGED_FILE }} -targetdir:${{ env.CODE_COVERAGE_REPORT_FOLDER }} -reporttypes:"MarkdownSummary" \ No newline at end of file diff --git a/.github/actions/testing/test-report/action.yml b/.github/actions/testing/test-report/action.yml new file mode 100644 index 00000000..aee61285 --- /dev/null +++ b/.github/actions/testing/test-report/action.yml @@ -0,0 +1,60 @@ +name: 'Generate test report with Liquid Test Reports CLI' +author: 'Pete Sramek' +description: 'Run tests, collects code coverage, logs test results, uploads test artifacts' +inputs: +# Required + test-result-folder: + description: 'Folder where test results are stored' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + test-report-filename: + description: 'Filename of the test report. Default: test-report.md' + required: false + default: 'test-report.md' + +outputs: + test-report-file: + description: 'Path to the generated test report' + value: ${{ steps.variables.outputs.test-report-file }} + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - name: Install LiquidTestReports.Cli + shell: bash + run: dotnet tool install --global LiquidTestReports.Cli --prerelease + + - if: ${{ endsWith(inputs.test-result-folder, '/') }} + name: 'Set TEST_RESULT_FOLDER environment variable' + shell: bash + run: echo "TEST_RESULT_FOLDER=${{ inputs.test-result-folder }}" >> $GITHUB_ENV + + - if: ${{ !endsWith(inputs.test-result-folder, '/') }} + name: 'Set TEST_RESULT_FOLDER environment variable' + shell: bash + run: echo "TEST_RESULT_FOLDER=${{ inputs.test-result-folder }}/" >> $GITHUB_ENV + + - name: 'Set TEST_REPORT_FILE environment variable' + shell: bash + run: echo "TEST_REPORT_FILE=${{ env.TEST_RESULT_FOLDER }}${{ inputs.test-report-filename }}" >> $GITHUB_ENV + + - name: 'Set test-report-file output' + id: variables + shell: bash + run: echo "test-report-file=${{ env.TEST_REPORT_FILE }}" >> $GITHUB_OUTPUT + + - name: Generate test report + shell: bash + run: liquid --inputs "Folder=${{ env.TEST_RESULT_FOLDER }};File=**/*.trx;Format=Trx" --output-file ${{ env.TEST_REPORT_FILE }} \ No newline at end of file diff --git a/.github/actions/testing/test/action.yml b/.github/actions/testing/test/action.yml new file mode 100644 index 00000000..52b875a2 --- /dev/null +++ b/.github/actions/testing/test/action.yml @@ -0,0 +1,91 @@ +name: 'Test with .NET CLI' +author: 'Pete Sramek' +description: 'Run tests, collects code coverage, logs test results, uploads test artifacts' +inputs: +# Required + +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: 9.x' + required: false + default: '9.x' + build-configuration: + description: 'Build configuration. Default: Release' + required: false + default: 'Release' + project-path: + description: 'Search pattern for test projects.' + required: true + use-trf-logger: + description: 'Use TRX logger. Default: true' + required: false + default: 'true' + collect-code-coverage: + description: 'Collect code coverage. Default: true' + required: false + default: 'true' + code-coverage-output-format: + description: 'Code coverage output format. Default: cobertura' + required: false + default: 'cobertura' + code-coverage-settings-file: + description: 'Code coverage settings file. Default: ' + required: false + default: '' + upload-test-artifacts: + description: 'Upload test artifacts, Default: true' + required: false + default: 'true' + test-results-directory: + description: 'Search pattern for test artifacts. Default: test-results' + required: false + default: | + 'test-results' + test-artifacts-name: + description: 'Test artifacts name, Default: test-results' + required: false + default: 'test-results' + +runs: + using: composite + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - if: ${{ inputs.use-trf-logger == 'true' }} + name: 'Set TRX_LOGGER_ARGS environment variable' + shell: bash + run: echo "TRX_LOGGER_ARGS=--report-trx" >> $GITHUB_ENV + + - if: ${{ inputs.test-runsettings-path != '' }} + name: 'Set RUN_SETTINGS_ARGS environment variable' + shell: bash + run: echo "RUN_SETTINGS_ARGS=--setttings ${{ inputs.test-runsettings-path }}" >> $GITHUB_ENV + + - if: ${{ inputs.collect-code-coverage == 'true' }} + name: 'Set CODE_COVERAGE_ARGS environment variable' + shell: bash + run: | + echo "CODE_COVERAGE_ARGS=--coverage --coverage-output-format ${{ inputs.code-coverage-output-format}}" >> $GITHUB_ENV + + - if: ${{ inputs.collect-code-coverage == 'true' && inputs.code-coverage-settings-file != ''}} + name: 'Set CODE_COVERAGE_ARGS environment variable' + shell: bash + run: | + echo "CODE_COVERAGE_ARGS=${{ env.CODE_COVERAGE_ARGS }} --coverage-settings ${{ inputs.code-coverage-settings-file }}" >> $GITHUB_ENV + + - name: 'Test with .NET CLI' + shell: bash + run: dotnet test ${{ inputs.test-project-glob-pattern }} --configuration ${{ inputs.build-configuration }} -- ${{ env.CODE_COVERAGE_ARGS }} ${{ env.TRX_LOGGER_ARGS }} --results-directory ${{ inputs.test-results-directory }} + + - name: 'Upload test results' + if: ${{ inputs.upload-test-artifacts == 'true' }} + uses: actions/upload-artifact@v4 + with: + name: '${{ inputs.test-artifacts-name }}' + path: '${{ inputs.test-results-directory }}*' \ No newline at end of file diff --git a/.github/actions/versioning/extract-version/action.yml b/.github/actions/versioning/extract-version/action.yml new file mode 100644 index 00000000..43ad87a9 --- /dev/null +++ b/.github/actions/versioning/extract-version/action.yml @@ -0,0 +1,56 @@ +name: 'Extract version' +author: 'Pete Sramek' +description: 'Determines versions for the build.' +inputs: +# Required + branch-name: + description: 'Branch name.' + required: true +# Optional + default-version: + description: 'Default version to use if no match is found. Default: ''0.0''' + required: false + default: '0.0' + version-format: + description: 'Version format. Default: ''(\d+).(\d+)''' + required: false + default: '(\d+).(\d+)' + dotnet_sdk_version: + description: '.NET SDK version. Default: ''9.x''' + required: false + default: '9.x' +outputs: + version: + description: 'Version extracted from the branch name.' + value: ${{ steps.regex-match.outputs.match }} + +runs: + using: "composite" + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + + - name: 'Extract version from branch name' + id: regex-match + uses: actions-ecosystem/action-regex-match@v2 + with: + text: ${{ inputs.branch-name }} + regex: ${{ inputs.version-format }} + flags: 'g' + + - name: 'Set extracted version output' + if: steps.regex-match.outputs.match != '' + shell: bash + run: | + echo "version=${{ steps.regex-match.outputs.match }}" >> $GITHUB_OUTPUT + + - name: 'Set default version output' + if: steps.regex-match.outputs.match == '' + shell: bash + run: | + echo "version=${{ inputs.default-version }}" >> $GITHUB_OUTPUT diff --git a/.github/actions/versioning/format-version/action.yml b/.github/actions/versioning/format-version/action.yml new file mode 100644 index 00000000..035410fa --- /dev/null +++ b/.github/actions/versioning/format-version/action.yml @@ -0,0 +1,66 @@ +name: 'Format version' +author: 'Pete Sramek' +description: 'Formats versions.' +inputs: +# Required + version: + description: 'Version to use.' + required: true + patch: + description: 'Patch version to append to the formatted version.' + required: true + build-number: + description: 'Build number to append to the formatted version.' + required: true + sha: + description: 'Commit SHA to append to the formatted version.' + required: true + pre-release-tag: + description: 'Pre-release tag to append to the formatted version.' + required: true +# Optional + dotnet_sdk_version: + description: '.NET SDK version. Default: ''9.x''' + required: false + default: '9.x' + +outputs: + friendly-version: + description: 'Formatted friendly version.' + value: ${{ steps.format-version.outputs.friendly-version }} + assembly-version: + description: 'Formatted assembly version.' + value: ${{ steps.format-version.outputs.assembly-version }} + assembly-informational-version: + description: 'Formatted assembly informational version.' + value: ${{ steps.format-version.outputs.assembly-informational-version }} + file-version: + description: 'Formatted file version.' + value: ${{ steps.format-version.outputs.file-version }} + release-version: + description: 'Formatted release version.' + value: ${{ steps.format-version.outputs.release-version }} + +runs: + using: "composite" + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}' + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ inputs.dotnet_sdk_version }} + - name: 'Format version' + shell: bash + id: format-version + run: | + echo "friendly-version=${{ inputs.version }}" >> $GITHUB_OUTPUT + echo "assembly-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT + echo "assembly-informational-version=${{ inputs.version }}.${{ inputs.patch }}+${{ inputs.sha }}" >> $GITHUB_OUTPUT + echo "file-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT + if [ -n "${{ inputs.pre-release-tag }}" ]; then + echo "release-version=${{ inputs.version }}.${{ inputs.patch }}-${{ inputs.pre-release-tag }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT + else + echo "release-version=${{ inputs.version }}.${{ inputs.patch }}.${{ inputs.build-number }}" >> $GITHUB_OUTPUT + fi diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..02a54502 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +version: 2 +updates: + - package-ecosystem: "dotnet-sdk" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "nuget" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..082c11e9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,258 @@ +name: Build + +on: + workflow_dispatch: + push: + branches-ignore: + - 'preview/**' + - 'release/**' + paths: + - 'src/**' + +permissions: + actions: read + pages: write + id-token: write + contents: write + +concurrency: + group: build-${{ github.head_ref || github.ref }} + cancel-in-progress: false + +env: + dotnet-sdk-version: '9.x' + build-configuration: 'Release' + build-platform: 'Any CPU' + git-version: '6.0.x' + test-result-directory: 'test-results' + nuget-packages-directory: 'nuget-packages' + +jobs: + workflow-variables: + name: 'Set workflow variables' + runs-on: ubuntu-latest + + outputs: + is-release: ${{ startsWith(github.ref_name, 'release') }} + is-preview: ${{ startsWith(github.ref_name, 'preview') }} + + steps: + - name: 'Set workflow variables' + id: github + run: | + echo "is-release:${{ startsWith(github.ref_name, 'release') }}" + echo "is-preview:${{ startsWith(github.ref_name, 'preview') }}" + + versioning: + name: 'Extract version' + runs-on: ubuntu-latest + outputs: + friendly-version: ${{ steps.format-version.outputs.friendly-version }} + assembly-version: ${{ steps.format-version.outputs.assembly-version }} + assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }} + file-version: ${{ steps.format-version.outputs.file-version }} + release-version: ${{ steps.format-version.outputs.release-version }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Extract version from branch name' + id: extract-version + uses: './.github/actions/versioning/extract-version' + with: + branch-name: ${{ github.ref_name }} + - name: 'Create build number' + shell: bash + id: create-build-number + run: | + git fetch --unshallow --filter=tree:0 + build_number=$(git rev-list --count origin/${{ github.ref_name }} ^origin/main) + echo "build-number=$build_number" >> $GITHUB_OUTPUT + - name: 'Create pre-release tag' + shell: bash + id: create-pre-release-tag + env: + build-number: ${{ steps.create-build-number.outputs.build-number }} + run: | + if [[ '${{ needs.workflow-variables.outputs.is-release }}' == 'true' ]]; then + echo "pre-release-tag=" >> $GITHUB_OUTPUT + elif [[ '${{ needs.workflow-variables.outputs.is-preview }}' == 'true' ]]; then + pre_release_tag='preview' + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + else + pre_release_tag=$(echo ${{ github.ref_name }} | tr '/' '-' | tr '.' '-'| tr '_' '-') + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + fi + - name: 'Format version' + id: format-version + uses: ./.github/actions/versioning/format-version + with: + version: ${{ steps.extract-version.outputs.version }} + patch: ${{ github.run_number }} + build-number: ${{ steps.create-build-number.outputs.build-number }} + sha: ${{ github.sha }} + pre-release-tag: ${{ steps.create-pre-release-tag.outputs.pre-release-tag }} + + format: + name: 'Format source code' + runs-on: ubuntu-latest + + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Format source code' + uses: ./.github/actions/source/format + with: + project-path: '**/PolylineAlgorithm.csproj' + + build: + name: 'Compile source code' + needs: [workflow-variables, versioning, format] + runs-on: ubuntu-latest + + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Compile source code' + uses: ./.github/actions/source/compile + with: + project-path: '**/PolylineAlgorithm.csproj' + assembly-version: ${{ env.assembly-version }} + assembly-informational-version: ${{ env.assembly-informational-version }} + file-version: ${{ env.file-version }} + treat-warnins-as-error: ${{ needs.workflow-variables.outputs.is-release }} + + test: + name: 'Run tests' + needs: [build] + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Run tests' + uses: ./.github/actions/testing/test + with: + project-path: '**/PolylineAlgorithm.Tests.csproj' + test-results-directory: '${{ runner.temp }}/${{ env.test-result-directory }}/' + code-coverage-settings-file: '${{ github.workspace}}/code-coverage-settings.xml' + + - name: 'Generate test report' + uses: ./.github/actions/testing/test-report + id: test-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write test report summary + run: cat ${{ steps.test-report.outputs.test-report-file }} >> $GITHUB_STEP_SUMMARY + + - name: 'Generate code coverage' + uses: ./.github/actions/testing/code-coverage + id: code-coverage-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write code coverage report summary + run: cat ${{ steps.code-coverage-report.outputs.code-coverage-report-file }} >> $GITHUB_STEP_SUMMARY + + pack: + name: 'Package binaries' + needs: [versioning, build] + runs-on: ubuntu-latest + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + release-version: ${{ needs.versioning.outputs.release-version }} + package-artifact-name: package + outputs: + package-artifact-name: ${{ env.package-artifact-name }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: Download Build + uses: actions/download-artifact@v5 + with: + name: build + + - name: Pack with .NET + run: | + dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }} + + - name: Upload Package + uses: actions/upload-artifact@v4 + with: + name: ${{ env.package-artifact-name }} + path: | + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.nupkg + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.snupkg + + publish-package: + name: 'Publish development package' + needs: [pack] + env: + package-artifact-name: ${{ needs.pack.outputs.package-artifact-name }} + runs-on: ubuntu-latest + environment: 'Development' + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Publish package to Azure Artifact feed' + uses: ./.github/actions/nuget/publish-package + with: + package-artifact-name: ${{ env.package-artifact-name }} + nuget-feed-url: ${{ vars.NUGET_PACKAGE_FEED_URL }} + nuget-feed-api-key: ${{ secrets.NUGET_PACKAGE_FEED_API_KEY }} + nuget-feed-server: 'AzureArtifacts' + working-directory: ${{ runner.temp }}/${{ env.nuget-packages-directory }} + dotnet-sdk-version: ${{ env.dotnet-sdk-version }}' + + generate-assembly-metadata: + name: 'Generate assembly metadata' + needs: [versioning, build] + env: + friendly-version: ${{ needs.versioning.outputs.friendly-version }} + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Generate assembly metadata' + uses: ./.github/actions/documentation/docfx-metadata + with: + artifact-name: 'assembly-metadata' + docfx-json-manifest: './api-reference/assembly-metadata.json' + temporary-directory: './api-reference/temp' + output-directory: './api-reference/${{ env.friendly-version }}' + - name: 'Push assembly metadata artifact' + uses: ./.github/actions/git/push-changes + with: + artifact-name: 'assembly-metadata' + commit-message: 'Updated docs for version ${{ env.friendly-version }}' + working-directory: './api-reference/${{ env.friendly-version }}' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 1b11d4ec..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,97 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL Advanced" - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - schedule: - - cron: '29 17 * * 3' - -jobs: - analyze: - name: Analyze (${{ matrix.language }}) - # Runner size impacts CodeQL analysis time. To learn more, please see: - # - https://gh.io/recommended-hardware-resources-for-running-codeql - # - https://gh.io/supported-runners-and-hardware-resources - # - https://gh.io/using-larger-runners (GitHub.com only) - # Consider using larger runners or machines with greater resources for possible analysis time improvements. - runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} - permissions: - # required for all workflows - security-events: write - - # required to fetch internal or private CodeQL packs - packages: read - - # only required for workflows in private repositories - actions: read - contents: read - - strategy: - fail-fast: false - matrix: - include: - - language: csharp - build-mode: none - # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' - # Use `c-cpp` to analyze code written in C, C++ or both - # Use 'java-kotlin' to analyze code written in Java, Kotlin or both - # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both - # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, - # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. - # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how - # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - build-mode: ${{ matrix.build-mode }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - # If the analyze step fails for one of the languages you are analyzing with - # "We were unable to automatically build your code", modify the matrix above - # to set the build mode to "manual" for that language. Then modify this step - # to build your code. - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - if: matrix.build-mode == 'manual' - shell: bash - run: | - echo 'If you are using a "manual" build mode for one or more of the' \ - 'languages you are analyzing, replace this with the commands to build' \ - 'your code, for example:' - echo ' make bootstrap' - echo ' make release' - exit 1 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml deleted file mode 100644 index 0bfc8aa7..00000000 --- a/.github/workflows/dotnet.yml +++ /dev/null @@ -1,28 +0,0 @@ -# This workflow will build a .NET project -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net - -name: .NET - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Setup .NET - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 8.0.x - - name: Restore dependencies - run: dotnet restore - - name: Build - run: dotnet build --no-restore - - name: Test - run: dotnet test --no-build --verbosity normal diff --git a/.github/workflows/promote-branch.yml b/.github/workflows/promote-branch.yml new file mode 100644 index 00000000..43e9cdab --- /dev/null +++ b/.github/workflows/promote-branch.yml @@ -0,0 +1,216 @@ +name: 'Promote branch' + +on: + workflow_dispatch: + inputs: + promotion-type: + type: choice + options: + - 'preview' + - 'release' + description: 'Promotion type.' + required: true + base-branch: + type: string + description: 'Base branch to create target from.' + default: 'main' + required: true + +permissions: + actions: read + id-token: write + contents: write + pull-requests: write + +concurrency: + group: 'promote-branch-${{ inputs.promotion-type }}-${{github.ref_name }}' + cancel-in-progress: false + +env: + dotnet-sdk-version: '9.x' + is-development-branch: ${{ startsWith(github.ref_name, 'develop') }} + is-maintenance-branch: ${{ startsWith(github.ref_name, 'support') }} + +jobs: + versioning: + name: 'Extract version' + runs-on: ubuntu-latest + outputs: + friendly-version: ${{ steps.extract-version.outputs.version }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Extract version from branch name' + id: extract-version + uses: './.github/actions/versioning/extract-version' + with: + branch-name: ${{ github.ref_name }} + workflow-variables: + name: 'Set workflow variables' + needs: [versioning] + runs-on: ubuntu-latest + outputs: + base-branch: ${{ steps.set-base-branch.outputs.base-branch }} + target-branch: ${{ steps.set-target-branch.outputs.target-branch }} + target-branch-exists: ${{ steps.check-target-branch-exists.outputs.target-branch-exists }} + pull-request-exists: ${{ steps.check-pull-request-exists.outputs.pull-request-exists }} + steps: + - name: 'Set target branch' + id: set-target-branch + run: | + if [[ "${{ inputs.promotion-type }}" == "preview" ]]; then + target_branch="preview/${{ needs.versioning.outputs.friendly-version }}" + elif [[ "${{ inputs.promotion-type }}" == "release" ]]; then + target_branch="release/${{ needs.versioning.outputs.friendly-version }}" + fi + + echo "Setting target branch $target_branch." + + echo "target-branch=$target_branch" >> $GITHUB_OUTPUT + - name: 'Set base branch' + id: set-base-branch + run: | + base_branch=${{ inputs.base-branch }} + + echo "Setting base branch $base_branch." + + echo "base-branch=$base_branch" >> $GITHUB_OUTPUT + - name: 'Check if base branch exists' + id: check-target-branch-exists + env: + target-branch: ${{ steps.set-target-branch.outputs.target-branch }} + run: | + set +e + + git ls-remote --exit-code --heads origin ${{ env.target-branch }} + + if [[ $? -eq 0 ]]; then + echo "Target branch ${{ env.target-branch }} does exist." + target_branch_exists="true" + else + echo "Target branch ${{ env.target-branch }} does not exist." + target_branch_exists="false" + fi + + echo "target-branch-exists=$target_branch_exists" >> $GITHUB_OUTPUT + + set -e + - name: 'Check if base branch exists' + id: check-base-branch-exists + env: + base-branch: ${{ steps.set-base-branch.outputs.base-branch }} + run: | + set +e + + git ls-remote --exit-code --heads origin ${{ env.base-branch }} + + if [[ $? -eq 0 ]]; then + echo "Base branch ${{ env.base-branch }} does exist." + base_branch_exists="true" + else + echo "Base branch ${{ env.base-branch }} does not exist." + base_branch_exists="false" + fi + + echo "base-branch-exists=$base_branch_exists" >> $GITHUB_OUTPUT + + set -e + - name: 'Check if pull request exists exists' + id: check-pull-request-exists + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository_owner }}/${{ github.event.repository.name }} + current-branch: ${{ github.ref_name }} + target-branch: ${{ steps.set-target-branch.outputs.target-branch }} + run: | + pull_request_count=$(gh pr list --head ${{ env.current-branch }} --base ${{ env.target-branch }} --state open --limit 1 --json id --jq '. | length') + + if [[ $pull_request_count -eq 0 ]]; then + echo "Pull request does not exist." + pull_request_exists="false" + else + echo "Pull request does exist." + pull_request_exists="true" + fi + + echo "pull-request-exists=$pull_request_exists" >> $GITHUB_OUTPUT + + validate-promotion: + name: 'Validate promotion' + needs: [ versioning, workflow-variables ] + runs-on: ubuntu-latest + env: + promotion-type: ${{ inputs.promotion-type }} + base-branch: ${{ needs.workflow-variables.outputs.base-branch }} + current-branch: ${{ github.ref_name }} + target-branch: ${{ needs.workflow-variables.outputs.target-branch }} + pull-request-exists: ${{ needs.workflow-variables.outputs.pull-request-exists }} + outputs: + target-branch: ${{ env.target-branch }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Check promotion type' + if: ${{ (env.promotion-type != 'release') && (env.promotion-type != 'preview') }} + run: | + echo "Invalid promotion type ${{ inputs.promotion-type }}" + exit 1 + - name: 'Validate current branch' + if: ${{ (env.is-development-branch == 'false') && (env.is-maintenance-branch == 'false') }} + run: | + echo "Invalid current branch '${{ github.ref_name }}'" + exit 1 + - name: 'Validate default and current branch' + if: ${{ env.base-branch == env.current-branch }} + run: | + echo "Default and current branch cannot be the same." + echo "Default branch is '${{ env.base-branch }}'" + echo "Current branch is '${{ env.current-branch }}'" + exit 1 + + - name: 'Validate target and current branch' + if: ${{ env.target-branch == env.current-branch }} + run: | + echo "Default and target branch cannot be the same." + echo "Default branch is '${{ env.target-branch }}'" + echo "Current branch is '${{ env.current-branch }}'" + exit 1 + + - name: 'Validate pull request' + if: ${{ env.pull-request-exists == 'true' }} + run: | + echo "Pull request exists." + exit 1 + + promote-branch: + name: 'Promote branch ${{ github.ref_name }} to ${{ needs.workflow-variables.outputs.target-branch }}' + needs: [ workflow-variables, validate-promotion ] + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Create target branch' + if: ${{ needs.workflow-variables.outputs.target-branch-exists == 'false' }} + run: | + git config user.name "$(git log -n 1 --pretty=format:%an)" + git config user.email "$(git log -n 1 --pretty=format:%ae)" + git fetch origin + git switch ${{ needs.workflow-variables.outputs.base-branch }} + git checkout -b ${{ needs.workflow-variables.outputs.target-branch }} origin/${{ needs.workflow-variables.outputs.target-branch }} || git checkout -b ${{ needs.workflow-variables.outputs.target-branch }} + git push --set-upstream origin ${{ needs.workflow-variables.outputs.target-branch }} + - name: 'Create PR: "Promote ${{ env.current-branch }} to ${{ env.target-branch }}"' + if: ${{ needs.workflow-variables.outputs.pull-request-exists == 'false' }} + env: + GH_TOKEN: ${{ github.token }} + current-branch: ${{ github.ref_name }} + target-branch: ${{ needs.workflow-variables.outputs.target-branch }} + run: | + gh pr create --title "Promote ${{ env.current-branch }} to ${{ env.target-branch }}" --fill --base ${{ env.target-branch }} --head ${{ env.current-branch }} diff --git a/.github/workflows/publish-documentation.yml b/.github/workflows/publish-documentation.yml new file mode 100644 index 00000000..7f9af8e3 --- /dev/null +++ b/.github/workflows/publish-documentation.yml @@ -0,0 +1,85 @@ +name: 'Publish documentation' + +on: + workflow_dispatch: + +permissions: + actions: read + pages: write + id-token: write + +concurrency: + group: publish-docs-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + workflow-variables: + name: 'Workflow variables' + runs-on: ubuntu-latest + + outputs: + github-run-number: ${{ github.run_number }} + + steps: + - name: 'Workflow variables' + id: github + run: | + echo "github-run-number:${{ github.run_number }}" + + versioning: + name: 'Extract version' + needs: [workflow-variables] + runs-on: ubuntu-latest + outputs: + friendly-version: ${{ steps.versioning.outputs.friendly-version }} + + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + with: + fetch-depth: 0 # Ensure the full git history is available for versioning + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Extract version from branch name' + id: versioning + uses: './.github/actions/versioning/extract-version' + with: + branch-name: ${{ github.ref_name }} + + generate-docs: + name: 'Generate documentation' + needs: [workflow-variables, versioning] + runs-on: ubuntu-latest + env: + friendly-version: ${{ needs.versioning.outputs.friendly-version }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Generate documentation' + uses: ./.github/actions/documentation/docfx-build + with: + artifact-name: 'documentation' + docfx-json-manifest: './api-reference/api-reference.json' + output-directory: './api-reference/_docs' + + - name: 'Upload artifact' + uses: actions/upload-pages-artifact@v4 + with: + name: github-pages + path: './api-reference/_docs' + + publish-docs: + name: 'Publish documentation' + needs: [workflow-variables, versioning, generate-docs] + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + + - name: 'Deploy to GitHub Pages' + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 00000000..573c5891 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,258 @@ +name: 'Pull Request' + +on: + pull_request: + types: + - opened + - synchronize + - reopened + branches: + - 'preview/**' + - 'release/**' + +permissions: + actions: read + pages: write + id-token: write + contents: write + +concurrency: + group: pull-request-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +env: + dotnet-sdk-version: '9.x' + build-configuration: 'Release' + build-platform: 'Any CPU' + git-version: '6.0.x' + test-result-directory: 'test-results' + nuget-packages-directory: 'nuget-packages' + +jobs: + workflow-variables: + name: 'Set workflow variables' + runs-on: ubuntu-latest + + outputs: + is-release: ${{ startsWith(github.base_ref, 'release') }} + is-preview: ${{ startsWith(github.base_ref , 'preview') }} + + steps: + - name: 'Set workflow variables' + run: | + echo "is-release:${{ startsWith(github.base_ref, 'release') }}" + echo "is-preview:${{ startsWith(github.base_ref, 'preview') }}" + + versioning: + name: 'Extract version from branch' + runs-on: ubuntu-latest + needs: [workflow-variables] + outputs: + friendly-version: ${{ steps.format-version.outputs.friendly-version }} + assembly-version: ${{ steps.format-version.outputs.assembly-version }} + assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }} + file-version: ${{ steps.format-version.outputs.file-version }} + release-version: ${{ steps.format-version.outputs.release-version }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Extract version from branch name' + id: extract-version + uses: './.github/actions/versioning/extract-version' + with: + branch-name: ${{ github.base_ref }} + - name: 'Create build number' + shell: bash + id: create-build-number + run: | + git fetch --unshallow --filter=tree:0 + build_number=$(git rev-list --count origin/${{ github.base_ref }} ^origin/main) + echo "build-number=$build_number" >> $GITHUB_OUTPUT + - name: 'Create pre-release tag' + shell: bash + id: create-pre-release-tag + env: + build-number: ${{ steps.create-build-number.outputs.build-number }} + run: | + if [[ '${{ needs.workflow-variables.outputs.is-release }}' == 'true' ]]; then + echo "pre-release-tag=" >> $GITHUB_OUTPUT + elif [[ '${{ needs.workflow-variables.outputs.is-preview }}' == 'true' ]]; then + pre_release_tag='preview' + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + else + pre_release_tag=$(echo ${{ github.base_ref }} | tr '/' '-' | tr '.' '-'| tr '_' '-') + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + fi + - name: 'Format version' + id: format-version + uses: ./.github/actions/versioning/format-version + with: + version: ${{ steps.extract-version.outputs.version }} + patch: ${{ github.run_number }} + build-number: ${{ steps.create-build-number.outputs.build-number }} + sha: ${{ github.sha }} + pre-release-tag: ${{ steps.create-pre-release-tag.outputs.pre-release-tag }} + + build: + name: 'Compile source code' + needs: [workflow-variables, versioning] + runs-on: ubuntu-latest + + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Compile source code' + uses: ./.github/actions/source/compile + with: + project-path: '**/PolylineAlgorithm.csproj' + assembly-version: ${{ env.assembly-version }} + assembly-informational-version: ${{ env.assembly-informational-version }} + file-version: ${{ env.file-version }} + treat-warnins-as-error: ${{ needs.workflow-variables.outputs.is-release }} + + test: + name: 'Run tests' + needs: [build] + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Run tests' + uses: ./.github/actions/testing/test + with: + project-path: '**/PolylineAlgorithm.Tests.csproj' + test-results-directory: '${{ runner.temp }}/${{ env.test-result-directory }}/' + code-coverage-settings-file: '${{ github.workspace}}/code-coverage-settings.xml' + + - name: 'Generate test report' + uses: ./.github/actions/testing/test-report + id: test-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write test report summary + run: cat ${{ steps.test-report.outputs.test-report-file }} >> $GITHUB_STEP_SUMMARY + + - name: 'Generate code coverage' + uses: ./.github/actions/testing/code-coverage + id: code-coverage-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write code coverage report summary + run: cat ${{ steps.code-coverage-report.outputs.code-coverage-report-file }} >> $GITHUB_STEP_SUMMARY + + pack: + name: 'Package binaries' + needs: [versioning, build] + runs-on: ubuntu-latest + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + release-version: ${{ needs.versioning.outputs.release-version }} + package-artifact-name: package + outputs: + package-artifact-name: ${{ env.package-artifact-name }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: Download Build + uses: actions/download-artifact@v5 + with: + name: build + + - name: Pack with .NET + run: | + dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }} + + - name: Upload Package + uses: actions/upload-artifact@v4 + with: + name: ${{ env.package-artifact-name }} + path: | + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.nupkg + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.snupkg + + publish-development-package: + name: 'Publish development package' + needs: [pack] + env: + package-artifact-name: ${{ needs.pack.outputs.package-artifact-name }} + runs-on: ubuntu-latest + environment: 'Development' + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Publish package to Azure Artifact feed' + uses: ./.github/actions/nuget/publish-package + with: + package-artifact-name: ${{ env.package-artifact-name }} + nuget-feed-url: ${{ vars.NUGET_PACKAGE_FEED_URL }} + nuget-feed-api-key: ${{ secrets.NUGET_PACKAGE_FEED_API_KEY }} + nuget-feed-server: 'AzureArtifacts' + working-directory: ${{ runner.temp }}/${{ env.nuget-packages-directory }} + dotnet-sdk-version: ${{ env.dotnet-sdk-version }}' + + benchmark: + if: ${{ github.env.is_release || vars.BENCHMARKDOTNET_RUN_OVERRIDE == 'true' }} + name: Benchmark with .NET CLI on ${{ matrix.os }} + needs: [build] + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: Install .NET SDK + uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 8.x + 9.x + - name: Download Build + uses: actions/download-artifact@v5 + with: + name: build + - name: Benchmark + working-directory: ${{ vars.BENCHMARKDOTNET_WORKING_DIRECTORY }} + run: dotnet run --configuration ${{ env.build-configuration }} /p:Platform=${{ env.build-platform }} --framework ${{ vars.DEFAULT_BUILD_FRAMEWORK }} --runtimes ${{ vars.BENCHMARKDOTNET_RUNTIMES }} --filter ${{ vars.BENCHMARKDOTNET_FILTER }} --artifacts ${{ runner.temp }}/benchmarks/ --exporters GitHub --memory --iterationTime 100 --join + - name: Upload Benchmark Results + uses: actions/upload-artifact@v4 + with: + name: benchmark-${{ matrix.os }} + path: | + ${{ runner.temp }}/benchmarks/**/*-report-github.md + - name: Write Benchmark Summary + shell: bash + run: cat **/*-report-github.md > $GITHUB_STEP_SUMMARY + working-directory: ${{ runner.temp }}/benchmarks/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..3dd8da2f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,251 @@ +name: 'Release' + +on: + push: + branches: + - 'preview/**' + - 'release/**' + paths: + - 'src/**' + +permissions: + actions: read + pages: write + id-token: write + contents: write + +concurrency: + group: release-${{ github.head_ref || github.ref }} + cancel-in-progress: false + +env: + dotnet-sdk-version: '9.x' + build-configuration: 'Release' + build-platform: 'Any CPU' + git-version: '6.0.x' + test-result-directory: 'test-results' + nuget-packages-directory: 'nuget-packages' + +jobs: + workflow-variables: + name: 'Set workflow variables' + runs-on: ubuntu-latest + + outputs: + is-release: ${{ startsWith(github.ref_name, 'release') }} + is-preview: ${{ startsWith(github.ref_name, 'preview') }} + + steps: + - name: 'Set workflow variables' + id: github + run: | + echo "is-release:${{ startsWith(github.ref_name, 'release') }}" + echo "is-preview:${{ startsWith(github.ref_name, 'preview') }}" + + validate-release: + name: 'Validate release' + needs: [workflow-variables] + runs-on: ubuntu-latest + steps: + - name: 'Validate release branch' + if: ${{ needs.workflow-variables.outputs.is-release != 'true' && needs.workflow-variables.outputs.is-preview != 'true' }} + run: | + echo "This workflow can only be run on 'release/**' or 'preview/**' branches." + exit 1 + + versioning: + name: 'Extract version from branch' + runs-on: ubuntu-latest + needs: [workflow-variables, validate-release] + outputs: + friendly-version: ${{ steps.format-version.outputs.friendly-version }} + assembly-version: ${{ steps.format-version.outputs.assembly-version }} + assembly-informational-version: ${{ steps.format-version.outputs.assembly-informational-version }} + file-version: ${{ steps.format-version.outputs.file-version }} + release-version: ${{ steps.format-version.outputs.release-version }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + - name: 'Setup .NET ${{ env.dotnet-sdk-version }}' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + - name: 'Extract version from branch name' + id: extract-version + uses: './.github/actions/versioning/extract-version' + with: + branch-name: ${{ github.ref_name }} + - name: 'Create build number' + shell: bash + id: create-build-number + run: | + git fetch --unshallow --filter=tree:0 + build_number=$(git rev-list --count origin/${{ github.ref_name }} ^origin/main) + echo "build-number=$build_number" >> $GITHUB_OUTPUT + - name: 'Create pre-release tag' + shell: bash + id: create-pre-release-tag + env: + build-number: ${{ steps.create-build-number.outputs.build-number }} + run: | + if [[ '${{ needs.workflow-variables.outputs.is-release }}' == 'true' ]]; then + echo "pre-release-tag=" >> $GITHUB_OUTPUT + elif [[ '${{ needs.workflow-variables.outputs.is-preview }}' == 'true' ]]; then + pre_release_tag='preview' + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + else + pre_release_tag=$(echo ${{ github.ref_name }} | tr '/' '-' | tr '.' '-'| tr '_' '-') + echo "pre-release-tag=$pre_release_tag" >> $GITHUB_OUTPUT + fi + - name: 'Format version' + id: format-version + uses: ./.github/actions/versioning/format-version + with: + version: ${{ steps.extract-version.outputs.version }} + patch: ${{ github.run_number }} + build-number: ${{ steps.create-build-number.outputs.build-number }} + sha: ${{ github.sha }} + pre-release-tag: ${{ steps.create-pre-release-tag.outputs.pre-release-tag }} + + build: + name: 'Compile source code' + needs: [workflow-variables, versioning, validate-release] + runs-on: ubuntu-latest + + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Compile source code' + uses: ./.github/actions/source/compile + with: + project-path: '**/PolylineAlgorithm.csproj' + assembly-version: ${{ env.assembly-version }} + assembly-informational-version: ${{ env.assembly-informational-version }} + file-version: ${{ env.file-version }} + treat-warnins-as-error: ${{ needs.workflow-variables.outputs.is-release }} + + test: + name: 'Run tests' + needs: [build, validate-release] + runs-on: ubuntu-latest + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Setup .NET' + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Run tests' + uses: ./.github/actions/testing/test + with: + project-path: '**/PolylineAlgorithm.Tests.csproj' + test-results-directory: '${{ runner.temp }}/${{ env.test-result-directory }}/' + code-coverage-settings-file: '${{ github.workspace}}/code-coverage-settings.xml' + + - name: 'Generate test report' + uses: ./.github/actions/testing/test-report + id: test-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write test report summary + run: cat ${{ steps.test-report.outputs.test-report-file }} >> $GITHUB_STEP_SUMMARY + + - name: 'Generate code coverage' + uses: ./.github/actions/testing/code-coverage + id: code-coverage-report + with: + test-result-folder: '${{ runner.temp }}/${{ env.test-result-directory }}/' + + - name: Write code coverage report summary + run: cat ${{ steps.code-coverage-report.outputs.code-coverage-report-file }} >> $GITHUB_STEP_SUMMARY + + pack: + name: 'Package binaries' + needs: [versioning, build, test, validate-release] + runs-on: ubuntu-latest + env: + assembly-version: ${{ needs.versioning.outputs.assembly-version }} + assembly-informational-version: ${{ needs.versioning.outputs.assembly-informational-version }} + file-version: ${{ needs.versioning.outputs.file-version }} + release-version: ${{ needs.versioning.outputs.release-version }} + package-artifact-name: package + outputs: + package-artifact-name: ${{ env.package-artifact-name }} + steps: + - name: 'Checkout ${{ github.base_ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: Download Build + uses: actions/download-artifact@v5 + with: + name: build + + - name: Pack with .NET + run: | + dotnet pack ${{ vars.SRC_DEFAULT_GLOB_PATTERN }} --configuration ${{ env.build-configuration }} /p:Platform="${{ env.build-platform }}" /p:PackageVersion=${{ env.release-version }} /p:Version=${{ env.assembly-version }} /p:AssemblyInformationalVersion=${{ env.assembly-informational-version }} /p:FileVersion=${{ env.file-version }} --output ${{ runner.temp }}/${{ env.nuget-packages-directory }} + + - name: Upload Package + uses: actions/upload-artifact@v4 + with: + name: ${{ env.package-artifact-name }} + path: | + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.nupkg + ${{ runner.temp }}/${{ env.nuget-packages-directory }}/**/*.snupkg + + publish-package: + name: 'Publish package' + needs: [pack, validate-release] + env: + package-artifact-name: ${{ needs.pack.outputs.package-artifact-name }} + runs-on: ubuntu-latest + environment: 'NuGet' + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: ${{ env.dotnet-sdk-version }} + + - name: 'Publish package to Azure Artifact feed' + uses: ./.github/actions/nuget/publish-package + with: + package-artifact-name: ${{ env.package-artifact-name }} + nuget-feed-url: ${{ vars.NUGET_PACKAGE_FEED_URL }} + nuget-feed-api-key: ${{ secrets.NUGET_PACKAGE_FEED_API_KEY }} + nuget-feed-server: 'NuGet' + working-directory: ${{ runner.temp }}/${{ env.nuget-packages-directory }} + dotnet-sdk-version: ${{ env.dotnet-sdk-version }}' + + + release: + name: 'Create release' + needs: [workflow-variables, publish-package, validate-release, versioning] + runs-on: ubuntu-latest + env: + release-version: ${{ needs.versioning.outputs.release-version }} + is-preview: ${{ needs.workflow-variables.outputs.is-preview }} + steps: + - name: 'Checkout ${{ github.head_ref || github.ref }}' + uses: actions/checkout@v5 + + - name: 'Create GitHub Release' + uses: ./.github/actions/github/create-release + with: + release-version: ${{ env.release-version }} + is-preview: ${{ env.is-preview }} diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml deleted file mode 100644 index 1526b959..00000000 --- a/.github/workflows/static.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Your GitHub workflow file under .github/workflows/ -# Trigger the action on push to main -on: - push: - branches: - - main - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - actions: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - publish-docs: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Dotnet Setup - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 8.x - - - run: dotnet tool update -g docfx - - run: docfx ./docs/docfx.json - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - # Upload entire repository - path: './docs/_site' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 3c4efe20..88197d63 100644 --- a/.gitignore +++ b/.gitignore @@ -258,4 +258,7 @@ paket-files/ # Python Tools for Visual Studio (PTVS) __pycache__/ -*.pyc \ No newline at end of file +*.pyc + +# BenchmarkDotNet artifacts +**/BenchmarkDotNet.Artifacts/ diff --git a/DropoutCoder.PolylineAlgorithm.sln b/DropoutCoder.PolylineAlgorithm.sln deleted file mode 100644 index a7673087..00000000 --- a/DropoutCoder.PolylineAlgorithm.sln +++ /dev/null @@ -1,61 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34330.188 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DropoutCoder.PolylineAlgorithm", "src\DropoutCoder.PolylineAlgorithm.csproj", "{882322A6-E758-4662-8D1C-7C555C8FC3F2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{51C886AF-D610-48A4-9D73-2DEB38742801}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{576FEFFC-B624-40C3-A8AF-4E5233802EA0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget", "nuget", "{7F9807A1-01FF-40C3-9342-3F3F35D632DA}" - ProjectSection(SolutionItems) = preProject - nuget\DropoutCoder.PolylineAlgorithm.nuspec = nuget\DropoutCoder.PolylineAlgorithm.nuspec - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DropoutCoder.PolylineAlgorithm.Tests", "tests\DropoutCoder.PolylineAlgorithm.Tests.csproj", "{30324A08-AA42-425D-87DA-8F9C6AF60454}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{C13E31F9-B8EF-4915-A1C8-BC33F6431EB9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{33C03F16-4313-4579-87E6-65892AF21D7D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DropoutCoder.PolylineAlgorithm.Benchmarks", "benchmarks\DropoutCoder.PolylineAlgorithm.Benchmarks\DropoutCoder.PolylineAlgorithm.Benchmarks.csproj", "{9C7CBAD5-415B-4589-86E1-01C849F9C56C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks", "benchmarks\DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks\DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks.csproj", "{D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {882322A6-E758-4662-8D1C-7C555C8FC3F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {882322A6-E758-4662-8D1C-7C555C8FC3F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {882322A6-E758-4662-8D1C-7C555C8FC3F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {882322A6-E758-4662-8D1C-7C555C8FC3F2}.Release|Any CPU.Build.0 = Release|Any CPU - {30324A08-AA42-425D-87DA-8F9C6AF60454}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30324A08-AA42-425D-87DA-8F9C6AF60454}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30324A08-AA42-425D-87DA-8F9C6AF60454}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30324A08-AA42-425D-87DA-8F9C6AF60454}.Release|Any CPU.Build.0 = Release|Any CPU - {9C7CBAD5-415B-4589-86E1-01C849F9C56C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9C7CBAD5-415B-4589-86E1-01C849F9C56C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9C7CBAD5-415B-4589-86E1-01C849F9C56C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9C7CBAD5-415B-4589-86E1-01C849F9C56C}.Release|Any CPU.Build.0 = Release|Any CPU - {D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {882322A6-E758-4662-8D1C-7C555C8FC3F2} = {51C886AF-D610-48A4-9D73-2DEB38742801} - {30324A08-AA42-425D-87DA-8F9C6AF60454} = {576FEFFC-B624-40C3-A8AF-4E5233802EA0} - {9C7CBAD5-415B-4589-86E1-01C849F9C56C} = {33C03F16-4313-4579-87E6-65892AF21D7D} - {D9F175EA-6F4C-4BFF-AB1D-5F45324B6C1B} = {33C03F16-4313-4579-87E6-65892AF21D7D} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {93A268DC-0947-4FBB-B495-DDAD4B013D82} - EndGlobalSection -EndGlobal diff --git a/LICENSE b/LICENSE index ee65c099..f38ec86e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 Petr Šrámek +Copyright (c) 2025 Pete Sramek Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/PolylineAlgorithm.slnx b/PolylineAlgorithm.slnx new file mode 100644 index 00000000..5eac2683 --- /dev/null +++ b/PolylineAlgorithm.slnx @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index 2695d8c8..156a8f2a 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,29 @@ -# .NET Polyline Algorithm (.NET Standard 2.0) +# PolylineAlgorithm for .NET -Lightweight .NET Standard 2.0 library implementing Google Polyline Algorithm. Designed with respect to flexibility, but still with easy to use. +[![NuGet](https://img.shields.io/nuget/v/PolylineAlgorithm.svg)](https://www.nuget.org/packages/PolylineAlgorithm/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Build](https://github.com/sramekpete/polyline-algorithm-csharp/actions/workflows/build.yml/badge.svg)](https://github.com/sramekpete/polyline-algorithm-csharp/actions/workflows/build.yml) -## Getting started -### Prerequisites +Lightweight .NET Standard 2.1 library implementing Google Encoded Polyline Algorithm. +Package should be primarily used as baseline for libraries that implement polyline encoding/decoding functionality. -.NET Polyline Algorithm is avalable as nuget package Cloudikka.PolylineAlgorithm targeting .NET Standard 2.0. +More info about the algorithm can be found at [Google Developers](https://developers.google.com/maps/documentation/utilities/polylinealgorithm). -Command line: +## Prerequisites -`Install-Package Cloudikka.PolylineAlgorithm` +PolylineAlgorithm for .NET is available as a NuGet package targeting .NET Standard 2.1. -NuGet Package Manager: +.NET CLI: `dotnet add package PolylineAlgorithm` -`Cloudikka.PolylineAlgorithm` +Package Manager Console: `Install-Package PolylineAlgorithm` -#### Warning +## How to use it -Library is using ValueTuple Structure. ValueTuple struct is avalable in .NET Framework 4.7 and above. Incase your project is targeting lower version of .NET Framework you probably have to install System.ValueTuple NuGet package. (not tested yet) - -Command line: +In the majority of cases you would like to inherit `AbstractPolylineDecoder` and `AbstractPolylineEncoder` classes and implement abstract methods that are mainly responsible for extracting data from your coordinate and polyline types and creating new instances of them. -`Install-Package System.ValueTuple` +In some cases you may want to implement your own decoder and encoder from scratch. +In that case you can use `PolylineEncoding` static class that offers static methods for encoding and decoding polyline segments. -NuGet Package Manager: +## Documentation -`System.ValueTuple` - -### Hot to use it - -There are three ways how to use .NET Polyline Algorithm library based on your needs. For each is available Encode and Decode methods. - -#### Static methods - -Whenever you just need to encode or decode Google polyline you can use static methods defined in static PolylineAlgorithm class. - -##### Decoding - -```csharp - string polyline = "polyline"; - IEnumerable<(double, double)> coordinates = PolylineAlgorithm.Decode(polyline); -``` - -##### Encoding - -```csharp - IEnumerable<(double, double)> coordinates = new (double, double) [] { (35.635, 76.27182), (35.2435, 75.625), ... }; - string polyline = PolylineAlgorithm.Encode(coordinates); -``` - - -#### Default instance - -If you need to use dependency injection, you would like to have instance to deliver the work for you. In that case you can use default instance of PolylineEncoding class, which implements IPolylineEncoding<(double Latitude, double Longitude)> interface. - -##### Decoding - -```csharp - string polyline = "polyline"; - var encoding = new PolylineEncoding(); - IEnumerable<(double, double)> coordinates = encoding.Decode(polyline); -``` - -##### Encoding - -```csharp - IEnumerable<(double, double)> coordinates = new (double, double) [] { (35.635, 76.27182), (35.2435, 75.625), ... }; - var encoding = new PolylineEncoding(); - string polyline = encoding.Encode(coordinates); -``` - -#### Inherited base class - -There may be a scenario you need to pass and return different types to and from without a need to add another extra layer. In this case you can inherit PolylineEncodingBase class and override template methods CreateResult and GetCoordinates. - -##### Inheriting - -```csharp - public class MyPolylineEncoding : PolylineEncodingBase { - - protected override Coordinate CreateResult(double latitude, double longitude) { - return new Coordinate(latitude, longitude); - } - - protected override (double Latitude, double Longitude) GetCoordinate(Coordinate source) { - return (source.Latitude, source.Longitude); - } - - } -``` - -##### Decoding - -```csharp - string polyline = "polyline"; - var encoding = new MyPolylineEncoding(); - IEnumerable coordinates = encoding.Decode(polyline); -``` - -##### Encoding - -```csharp - IEnumerable coordinates = new Coordinate [] { new Coordinate(35.635, 76.27182), new Coordinate(35.2435, 75.625), ... }; - var encoding = new MyPolylineEncoding(); - string polyline = encoding.Encode(coordinates); -``` - -### Documentation - -Documentation is can be found at https://dropoutcoder.github.io/polyline-algorithm-csharp/api/index.html. - -Happy coding! +Documentation is can be found at [https://sramekpete.github.io/polyline-algorithm-csharp/](https://sramekpete.github.io/polyline-algorithm-csharp/). \ No newline at end of file diff --git a/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.yml b/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.yml new file mode 100644 index 00000000..fef191a3 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.yml @@ -0,0 +1,190 @@ +### YamlMime:ApiPage +title: Class AbstractPolylineDecoder +body: +- api1: Class AbstractPolylineDecoder + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2 + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L23 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2 + commentId: T:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2 +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Abstraction + url: PolylineAlgorithm.Abstraction.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. +- code: 'public abstract class AbstractPolylineDecoder : IPolylineDecoder' +- h4: Type Parameters +- parameters: + - name: TPolyline + - name: TCoordinate +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: AbstractPolylineDecoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.html +- h4: Implements +- list: + - text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: This abstract class provides a base implementation for decoding polylines, allowing subclasses to define how to handle specific polyline formats. +- h2: Constructors +- api3: AbstractPolylineDecoder() + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L27 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.#ctor + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.#ctor +- markdown: Initializes a new instance of the class with default encoding options. +- code: protected AbstractPolylineDecoder() +- api3: AbstractPolylineDecoder(PolylineEncodingOptions) + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2__ctor_PolylineAlgorithm_PolylineEncodingOptions_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L39 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.#ctor(PolylineAlgorithm.PolylineEncodingOptions) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.#ctor(PolylineAlgorithm.PolylineEncodingOptions) +- markdown: Initializes a new instance of the class with the specified encoding options. +- code: protected AbstractPolylineDecoder(PolylineEncodingOptions options) +- h4: Parameters +- parameters: + - name: options + type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: The to use for encoding operations. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when options is null +- h2: Properties +- api3: Options + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_Options + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L46 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.Options + commentId: P:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.Options +- markdown: Gets the encoding options used by this polyline encoder. +- code: public PolylineEncodingOptions Options { get; } +- h4: Property Value +- parameters: + - type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html +- h2: Methods +- api3: CreateCoordinate(double, double) + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_CreateCoordinate_System_Double_System_Double_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L153 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.CreateCoordinate(System.Double,System.Double) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.CreateCoordinate(System.Double,System.Double) +- markdown: Creates a coordinate instance from the given latitude and longitude values. +- code: protected abstract TCoordinate CreateCoordinate(double latitude, double longitude) +- h4: Parameters +- parameters: + - name: latitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The latitude value. + - name: longitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The longitude value. +- h4: Returns +- parameters: + - type: + - TCoordinate + description: A coordinate instance of type TCoordinate. +- api3: Decode(TPolyline) + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_Decode__0_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L66 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.Decode(`0) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.Decode(`0) +- markdown: Decodes an encoded TPolyline into a sequence of TCoordinate instances. +- code: public IEnumerable Decode(TPolyline polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - TPolyline + description: The TPolyline instance containing the encoded polyline string to decode. +- h4: Returns +- parameters: + - type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - TCoordinate + - '>' + description: An of TCoordinate representing the decoded latitude and longitude pairs. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when polyline is null. + - type: + - text: ArgumentException + url: https://learn.microsoft.com/dotnet/api/system.argumentexception + description: Thrown when polyline is empty. + - type: + - text: InvalidPolylineException + url: PolylineAlgorithm.InvalidPolylineException.html + description: Thrown when the polyline format is invalid or malformed at a specific position. +- api3: GetReadOnlyMemory(TPolyline) + id: PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_GetReadOnlyMemory__0_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineDecoder.cs#L139 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.GetReadOnlyMemory(`0) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineDecoder`2.GetReadOnlyMemory(`0) +- markdown: Converts the provided polyline instance into a for decoding. +- code: protected abstract ReadOnlyMemory GetReadOnlyMemory(TPolyline polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - TPolyline + description: The TPolyline instance containing the encoded polyline data to decode. +- h4: Returns +- parameters: + - type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A representing the encoded polyline data. +languageId: csharp +metadata: + description: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. diff --git a/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.yml b/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.yml new file mode 100644 index 00000000..74595727 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.yml @@ -0,0 +1,204 @@ +### YamlMime:ApiPage +title: Class AbstractPolylineEncoder +body: +- api1: Class AbstractPolylineEncoder + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2 + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L25 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2 + commentId: T:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2 +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Abstraction + url: PolylineAlgorithm.Abstraction.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. +- code: 'public abstract class AbstractPolylineEncoder : IPolylineEncoder' +- h4: Type Parameters +- parameters: + - name: TCoordinate + - name: TPolyline +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: AbstractPolylineEncoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.html +- h4: Implements +- list: + - text: IPolylineEncoder + url: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: This abstract class serves as a base for specific polyline encoders, allowing customization of the encoding process. +- h2: Constructors +- api3: AbstractPolylineEncoder() + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L29 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.#ctor + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.#ctor +- markdown: Initializes a new instance of the class with default encoding options. +- code: protected AbstractPolylineEncoder() +- api3: AbstractPolylineEncoder(PolylineEncodingOptions) + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2__ctor_PolylineAlgorithm_PolylineEncodingOptions_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L39 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.#ctor(PolylineAlgorithm.PolylineEncodingOptions) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.#ctor(PolylineAlgorithm.PolylineEncodingOptions) +- markdown: Initializes a new instance of the class with the specified encoding options. +- code: protected AbstractPolylineEncoder(PolylineEncodingOptions options) +- h4: Parameters +- parameters: + - name: options + type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: The to use for encoding operations. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when options is null +- h2: Properties +- api3: Options + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_Options + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L46 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.Options + commentId: P:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.Options +- markdown: Gets the encoding options used by this polyline encoder. +- code: public PolylineEncodingOptions Options { get; } +- h4: Property Value +- parameters: + - type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html +- h2: Methods +- api3: CreatePolyline(ReadOnlyMemory) + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_CreatePolyline_System_ReadOnlyMemory_System_Char__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L199 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.CreatePolyline(System.ReadOnlyMemory{System.Char}) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.CreatePolyline(System.ReadOnlyMemory{System.Char}) +- markdown: Creates a polyline instance from the provided read-only sequence of characters. +- code: protected abstract TPolyline CreatePolyline(ReadOnlyMemory polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A containing the encoded polyline characters. +- h4: Returns +- parameters: + - type: + - TPolyline + description: An instance of TPolyline representing the encoded polyline. +- api3: Encode(IEnumerable) + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_Encode_System_Collections_Generic_IEnumerable__0__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L64 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.Encode(System.Collections.Generic.IEnumerable{`0}) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.Encode(System.Collections.Generic.IEnumerable{`0}) +- markdown: Encodes a collection of TCoordinate instances into an encoded TPolyline string. +- code: public TPolyline Encode(IEnumerable coordinates) +- h4: Parameters +- parameters: + - name: coordinates + type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - TCoordinate + - '>' + description: The collection of TCoordinate objects to encode. +- h4: Returns +- parameters: + - type: + - TPolyline + description: >- + An instance of TPolyline representing the encoded coordinates. + + Returns default if the input collection is empty or null. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when coordinates is null. + - type: + - text: ArgumentException + url: https://learn.microsoft.com/dotnet/api/system.argumentexception + description: Thrown when coordinates is an empty enumeration. +- api3: GetLatitude(TCoordinate) + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_GetLatitude__0_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L219 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.GetLatitude(`0) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.GetLatitude(`0) +- markdown: Extracts the latitude value from the specified coordinate. +- code: protected abstract double GetLatitude(TCoordinate current) +- h4: Parameters +- parameters: + - name: current + type: + - TCoordinate + description: The coordinate from which to extract the latitude. +- h4: Returns +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The latitude value as a . +- api3: GetLongitude(TCoordinate) + id: PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_GetLongitude__0_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/AbstractPolylineEncoder.cs#L209 + metadata: + uid: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.GetLongitude(`0) + commentId: M:PolylineAlgorithm.Abstraction.AbstractPolylineEncoder`2.GetLongitude(`0) +- markdown: Extracts the longitude value from the specified coordinate. +- code: protected abstract double GetLongitude(TCoordinate current) +- h4: Parameters +- parameters: + - name: current + type: + - TCoordinate + description: The coordinate from which to extract the longitude. +- h4: Returns +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The longitude value as a . +languageId: csharp +metadata: + description: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. diff --git a/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineDecoder-2.yml b/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineDecoder-2.yml new file mode 100644 index 00000000..c548a5cf --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineDecoder-2.yml @@ -0,0 +1,49 @@ +### YamlMime:ApiPage +title: Interface IPolylineDecoder +body: +- api1: Interface IPolylineDecoder + id: PolylineAlgorithm_Abstraction_IPolylineDecoder_2 + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/IPolylineDecoder.cs#L13 + metadata: + uid: PolylineAlgorithm.Abstraction.IPolylineDecoder`2 + commentId: T:PolylineAlgorithm.Abstraction.IPolylineDecoder`2 +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Abstraction + url: PolylineAlgorithm.Abstraction.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Defines a contract for decoding an encoded polyline into a sequence of geographic coordinates. +- code: public interface IPolylineDecoder +- h4: Type Parameters +- parameters: + - name: TPolyline + - name: TCoordinate +- h2: Methods +- api3: Decode(TPolyline) + id: PolylineAlgorithm_Abstraction_IPolylineDecoder_2_Decode__0_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/IPolylineDecoder.cs#L23 + metadata: + uid: PolylineAlgorithm.Abstraction.IPolylineDecoder`2.Decode(`0) + commentId: M:PolylineAlgorithm.Abstraction.IPolylineDecoder`2.Decode(`0) +- markdown: Decodes the specified encoded polyline into a sequence of geographic coordinates. +- code: IEnumerable Decode(TPolyline polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - TPolyline + description: The TPolyline instance containing the encoded polyline string to decode. +- h4: Returns +- parameters: + - type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - TCoordinate + - '>' + description: An of TCoordinate representing the decoded latitude and longitude pairs. +languageId: csharp +metadata: + description: Defines a contract for decoding an encoded polyline into a sequence of geographic coordinates. diff --git a/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineEncoder-2.yml b/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineEncoder-2.yml new file mode 100644 index 00000000..99fbc198 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Abstraction.IPolylineEncoder-2.yml @@ -0,0 +1,49 @@ +### YamlMime:ApiPage +title: Interface IPolylineEncoder +body: +- api1: Interface IPolylineEncoder + id: PolylineAlgorithm_Abstraction_IPolylineEncoder_2 + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/IPolylineEncoder.cs#L13 + metadata: + uid: PolylineAlgorithm.Abstraction.IPolylineEncoder`2 + commentId: T:PolylineAlgorithm.Abstraction.IPolylineEncoder`2 +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Abstraction + url: PolylineAlgorithm.Abstraction.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Defines a contract for encoding a sequence of geographic coordinates into an encoded polyline string. +- code: public interface IPolylineEncoder +- h4: Type Parameters +- parameters: + - name: TCoordinate + - name: TPolyline +- h2: Methods +- api3: Encode(IEnumerable) + id: PolylineAlgorithm_Abstraction_IPolylineEncoder_2_Encode_System_Collections_Generic_IEnumerable__0__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Abstraction/IPolylineEncoder.cs#L23 + metadata: + uid: PolylineAlgorithm.Abstraction.IPolylineEncoder`2.Encode(System.Collections.Generic.IEnumerable{`0}) + commentId: M:PolylineAlgorithm.Abstraction.IPolylineEncoder`2.Encode(System.Collections.Generic.IEnumerable{`0}) +- markdown: Encodes a sequence of geographic coordinates into an encoded polyline representation. +- code: TPolyline Encode(IEnumerable coordinates) +- h4: Parameters +- parameters: + - name: coordinates + type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - TCoordinate + - '>' + description: The collection of TCoordinate instances to encode into a polyline. +- h4: Returns +- parameters: + - type: + - TPolyline + description: A TPolyline containing the encoded polyline string that represents the input coordinates. +languageId: csharp +metadata: + description: Defines a contract for encoding a sequence of geographic coordinates into an encoded polyline string. diff --git a/api-reference/1.0/PolylineAlgorithm.Abstraction.yml b/api-reference/1.0/PolylineAlgorithm.Abstraction.yml new file mode 100644 index 00000000..ff580e3c --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Abstraction.yml @@ -0,0 +1,35 @@ +### YamlMime:ApiPage +title: Namespace PolylineAlgorithm.Abstraction +body: +- api1: Namespace PolylineAlgorithm.Abstraction + id: PolylineAlgorithm_Abstraction + metadata: + uid: PolylineAlgorithm.Abstraction + commentId: N:PolylineAlgorithm.Abstraction +- h3: Classes +- parameters: + - type: + text: AbstractPolylineDecoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.html + description: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. + - type: + text: AbstractPolylineEncoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.html + description: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. +- h3: Interfaces +- parameters: + - type: + text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html + description: Defines a contract for decoding an encoded polyline into a sequence of geographic coordinates. + - type: + text: IPolylineEncoder + url: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.html + description: Defines a contract for encoding a sequence of geographic coordinates into an encoded polyline string. +languageId: csharp diff --git a/api-reference/1.0/PolylineAlgorithm.Coordinate.yml b/api-reference/1.0/PolylineAlgorithm.Coordinate.yml new file mode 100644 index 00000000..809d45d2 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Coordinate.yml @@ -0,0 +1,250 @@ +### YamlMime:ApiPage +title: Struct Coordinate +body: +- api1: Struct Coordinate + id: PolylineAlgorithm_Coordinate + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L22 + metadata: + uid: PolylineAlgorithm.Coordinate + commentId: T:PolylineAlgorithm.Coordinate +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Represents a geographic coordinate as a pair of latitude and longitude values. +- code: 'public readonly struct Coordinate : IEquatable' +- h4: Implements +- list: + - text: IEquatable + url: https://learn.microsoft.com/dotnet/api/system.iequatable-1 +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: >- + This struct is designed to be immutable and lightweight, providing a simple way to represent + + geographic coordinates in degrees. It includes validation for latitude and longitude ranges + + and provides methods for equality comparison and string representation. +- h2: Constructors +- api3: Coordinate() + id: PolylineAlgorithm_Coordinate__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L28 + metadata: + uid: PolylineAlgorithm.Coordinate.#ctor + commentId: M:PolylineAlgorithm.Coordinate.#ctor +- markdown: Initializes a new instance of the struct with default values (0) for and . +- code: public Coordinate() +- api3: Coordinate(double, double) + id: PolylineAlgorithm_Coordinate__ctor_System_Double_System_Double_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L46 + metadata: + uid: PolylineAlgorithm.Coordinate.#ctor(System.Double,System.Double) + commentId: M:PolylineAlgorithm.Coordinate.#ctor(System.Double,System.Double) +- markdown: Initializes a new instance of the struct with the specified latitude and longitude values. +- code: public Coordinate(double latitude, double longitude) +- h4: Parameters +- parameters: + - name: latitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The latitude component of the coordinate, in degrees. Must be between -90 and 90. + - name: longitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The longitude component of the coordinate, in degrees. Must be between -180 and 180. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentOutOfRangeException + url: https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception + description: >- + Thrown when latitude is less than -90 or greater than 90, + + or when longitude is less than -180 or greater than 180. +- h2: Properties +- api3: Latitude + id: PolylineAlgorithm_Coordinate_Latitude + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L62 + metadata: + uid: PolylineAlgorithm.Coordinate.Latitude + commentId: P:PolylineAlgorithm.Coordinate.Latitude +- markdown: Gets the latitude component of the coordinate, in degrees. +- code: public double Latitude { get; } +- h4: Property Value +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double +- api3: Longitude + id: PolylineAlgorithm_Coordinate_Longitude + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L67 + metadata: + uid: PolylineAlgorithm.Coordinate.Longitude + commentId: P:PolylineAlgorithm.Coordinate.Longitude +- markdown: Gets the longitude component of the coordinate, in degrees. +- code: public double Longitude { get; } +- h4: Property Value +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double +- h2: Methods +- api3: Equals(object?) + id: PolylineAlgorithm_Coordinate_Equals_System_Object_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L82 + metadata: + uid: PolylineAlgorithm.Coordinate.Equals(System.Object) + commentId: M:PolylineAlgorithm.Coordinate.Equals(System.Object) +- markdown: Indicates whether this instance and a specified object are equal. +- code: public override bool Equals(object? obj) +- h4: Parameters +- parameters: + - name: obj + type: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - '?' + description: The object to compare with the current instance. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if obj and this instance are the same type and represent the same value; otherwise, false. +- api3: Equals(Coordinate) + id: PolylineAlgorithm_Coordinate_Equals_PolylineAlgorithm_Coordinate_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L102 + metadata: + uid: PolylineAlgorithm.Coordinate.Equals(PolylineAlgorithm.Coordinate) + commentId: M:PolylineAlgorithm.Coordinate.Equals(PolylineAlgorithm.Coordinate) +- markdown: Indicates whether the current object is equal to another object of the same type. +- code: public bool Equals(Coordinate other) +- h4: Parameters +- parameters: + - name: other + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: An object to compare with this object. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the current object is equal to the other parameter; otherwise, false. +- api3: GetHashCode() + id: PolylineAlgorithm_Coordinate_GetHashCode + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L85 + metadata: + uid: PolylineAlgorithm.Coordinate.GetHashCode + commentId: M:PolylineAlgorithm.Coordinate.GetHashCode +- markdown: Returns the hash code for this instance. +- code: public override int GetHashCode() +- h4: Returns +- parameters: + - type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: A 32-bit signed integer that is the hash code for this instance. +- api3: IsDefault() + id: PolylineAlgorithm_Coordinate_IsDefault + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L75 + metadata: + uid: PolylineAlgorithm.Coordinate.IsDefault + commentId: M:PolylineAlgorithm.Coordinate.IsDefault +- markdown: Determines whether this coordinate is the default value (both and are 0). +- code: public bool IsDefault() +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if both latitude and longitude are 0; otherwise, false. +- api3: ToString() + id: PolylineAlgorithm_Coordinate_ToString + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L93 + metadata: + uid: PolylineAlgorithm.Coordinate.ToString + commentId: M:PolylineAlgorithm.Coordinate.ToString +- markdown: 'Returns a string representation of this coordinate in the format: { Latitude: [double], Longitude: [double] }.' +- code: public override string ToString() +- h4: Returns +- parameters: + - type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + description: A string representation of the coordinate. +- h2: Operators +- api3: operator ==(Coordinate, Coordinate) + id: PolylineAlgorithm_Coordinate_op_Equality_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Coordinate_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L119 + metadata: + uid: PolylineAlgorithm.Coordinate.op_Equality(PolylineAlgorithm.Coordinate,PolylineAlgorithm.Coordinate) + commentId: M:PolylineAlgorithm.Coordinate.op_Equality(PolylineAlgorithm.Coordinate,PolylineAlgorithm.Coordinate) +- markdown: Determines whether two instances are equal. +- code: public static bool operator ==(Coordinate left, Coordinate right) +- h4: Parameters +- parameters: + - name: left + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: The first coordinate to compare. + - name: right + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: The second coordinate to compare. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if both coordinates are equal; otherwise, false. +- api3: operator !=(Coordinate, Coordinate) + id: PolylineAlgorithm_Coordinate_op_Inequality_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Coordinate_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Coordinate.cs#L129 + metadata: + uid: PolylineAlgorithm.Coordinate.op_Inequality(PolylineAlgorithm.Coordinate,PolylineAlgorithm.Coordinate) + commentId: M:PolylineAlgorithm.Coordinate.op_Inequality(PolylineAlgorithm.Coordinate,PolylineAlgorithm.Coordinate) +- markdown: Determines whether two instances are not equal. +- code: public static bool operator !=(Coordinate left, Coordinate right) +- h4: Parameters +- parameters: + - name: left + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: The first coordinate to compare. + - name: right + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: The second coordinate to compare. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the coordinates are not equal; otherwise, false. +languageId: csharp +metadata: + description: Represents a geographic coordinate as a pair of latitude and longitude values. diff --git a/api-reference/1.0/PolylineAlgorithm.CoordinateValueType.yml b/api-reference/1.0/PolylineAlgorithm.CoordinateValueType.yml new file mode 100644 index 00000000..f39b468a --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.CoordinateValueType.yml @@ -0,0 +1,45 @@ +### YamlMime:ApiPage +title: Enum CoordinateValueType +body: +- api1: Enum CoordinateValueType + id: PolylineAlgorithm_CoordinateValueType + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/CoordinateValueType.cs#L11 + metadata: + uid: PolylineAlgorithm.CoordinateValueType + commentId: T:PolylineAlgorithm.CoordinateValueType +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Represents the type of a geographic coordinate value. +- code: public enum CoordinateValueType +- h2: Fields +- parameters: + - name: Latitude + default: "1" + description: >+ + Represents a latitude value. + + - name: Longitude + default: "2" + description: >+ + Represents a longitude value. + + - name: None + default: "0" + description: >+ + Represents no specific type. This value is used when the type is not applicable or not specified. + +- h2: Remarks +- markdown: >- + This enumeration is used to specify whether a coordinate value represents latitude or + + longitude. Latitude values indicate the north-south position, while longitude values indicate the east-west + + position. +languageId: csharp +metadata: + description: Represents the type of a geographic coordinate value. diff --git a/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineDecoderExtensions.yml b/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineDecoderExtensions.yml new file mode 100644 index 00000000..d318f9b8 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineDecoderExtensions.yml @@ -0,0 +1,182 @@ +### YamlMime:ApiPage +title: Class PolylineDecoderExtensions +body: +- api1: Class PolylineDecoderExtensions + id: PolylineAlgorithm_Extensions_PolylineDecoderExtensions + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineDecoderExtensions.cs#L16 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineDecoderExtensions + commentId: T:PolylineAlgorithm.Extensions.PolylineDecoderExtensions +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Extensions + url: PolylineAlgorithm.Extensions.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Provides extension methods for the interface to facilitate decoding encoded polylines. +- code: public static class PolylineDecoderExtensions +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: PolylineDecoderExtensions + url: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Methods +- api3: Decode(IPolylineDecoder, string) + id: PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_String_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineDecoderExtensions.cs#L32 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.String) + commentId: M:PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.String) +- markdown: Decodes an encoded polyline string into a sequence of geographic coordinates. +- code: public static IEnumerable Decode(this IPolylineDecoder decoder, string polyline) +- h4: Parameters +- parameters: + - name: decoder + type: + - text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html + - < + - text: Polyline + url: PolylineAlgorithm.Polyline.html + - ',' + - " " + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: The instance used to perform the decoding operation. + - name: polyline + type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + description: The encoded polyline string to decode. +- h4: Returns +- parameters: + - type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: An containing the decoded latitude and longitude pairs. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when decoder is null. +- api3: Decode(IPolylineDecoder, char[]) + id: PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_Char___ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineDecoderExtensions.cs#L55 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.Char[]) + commentId: M:PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.Char[]) +- markdown: Decodes an encoded polyline represented as a character array into a sequence of geographic coordinates. +- code: public static IEnumerable Decode(this IPolylineDecoder decoder, char[] polyline) +- h4: Parameters +- parameters: + - name: decoder + type: + - text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html + - < + - text: Polyline + url: PolylineAlgorithm.Polyline.html + - ',' + - " " + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: The instance used to perform the decoding operation. + - name: polyline + type: + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '[' + - ']' + description: The encoded polyline as a character array to decode. +- h4: Returns +- parameters: + - type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: An containing the decoded latitude and longitude pairs. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when decoder is null. +- api3: Decode(IPolylineDecoder, ReadOnlyMemory) + id: PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_ReadOnlyMemory_System_Char__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineDecoderExtensions.cs#L78 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.ReadOnlyMemory{System.Char}) + commentId: M:PolylineAlgorithm.Extensions.PolylineDecoderExtensions.Decode(PolylineAlgorithm.Abstraction.IPolylineDecoder{PolylineAlgorithm.Polyline,PolylineAlgorithm.Coordinate},System.ReadOnlyMemory{System.Char}) +- markdown: Decodes an encoded polyline represented as a read-only memory of characters into a sequence of geographic coordinates. +- code: public static IEnumerable Decode(this IPolylineDecoder decoder, ReadOnlyMemory polyline) +- h4: Parameters +- parameters: + - name: decoder + type: + - text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html + - < + - text: Polyline + url: PolylineAlgorithm.Polyline.html + - ',' + - " " + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: The instance used to perform the decoding operation. + - name: polyline + type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: The encoded polyline as a read-only memory of characters to decode. +- h4: Returns +- parameters: + - type: + - text: IEnumerable + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1 + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: An containing the decoded latitude and longitude pairs. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when decoder is null. +languageId: csharp +metadata: + description: Provides extension methods for the interface to facilitate decoding encoded polylines. diff --git a/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineEncoderExtensions.yml b/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineEncoderExtensions.yml new file mode 100644 index 00000000..4d27b37e --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Extensions.PolylineEncoderExtensions.yml @@ -0,0 +1,130 @@ +### YamlMime:ApiPage +title: Class PolylineEncoderExtensions +body: +- api1: Class PolylineEncoderExtensions + id: PolylineAlgorithm_Extensions_PolylineEncoderExtensions + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineEncoderExtensions.cs#L16 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineEncoderExtensions + commentId: T:PolylineAlgorithm.Extensions.PolylineEncoderExtensions +- facts: + - name: Namespace + value: + text: PolylineAlgorithm.Extensions + url: PolylineAlgorithm.Extensions.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Provides extension methods for the interface to facilitate encoding geographic coordinates into polylines. +- code: public static class PolylineEncoderExtensions +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: PolylineEncoderExtensions + url: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Methods +- api3: Encode(IPolylineEncoder, ICollection) + id: PolylineAlgorithm_Extensions_PolylineEncoderExtensions_Encode_PolylineAlgorithm_Abstraction_IPolylineEncoder_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Polyline__System_Collections_Generic_ICollection_PolylineAlgorithm_Coordinate__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineEncoderExtensions.cs#L32 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.Encode(PolylineAlgorithm.Abstraction.IPolylineEncoder{PolylineAlgorithm.Coordinate,PolylineAlgorithm.Polyline},System.Collections.Generic.ICollection{PolylineAlgorithm.Coordinate}) + commentId: M:PolylineAlgorithm.Extensions.PolylineEncoderExtensions.Encode(PolylineAlgorithm.Abstraction.IPolylineEncoder{PolylineAlgorithm.Coordinate,PolylineAlgorithm.Polyline},System.Collections.Generic.ICollection{PolylineAlgorithm.Coordinate}) +- markdown: Encodes a collection of instances into an encoded polyline. +- code: public static Polyline Encode(this IPolylineEncoder encoder, ICollection coordinates) +- h4: Parameters +- parameters: + - name: encoder + type: + - text: IPolylineEncoder + url: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.html + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - ',' + - " " + - text: Polyline + url: PolylineAlgorithm.Polyline.html + - '>' + description: The instance used to perform the encoding operation. + - name: coordinates + type: + - text: ICollection + url: https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1 + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '>' + description: The sequence of objects to encode. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: A representing the encoded polyline string for the provided coordinates. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when encoder is null. +- api3: Encode(IPolylineEncoder, Coordinate[]) + id: PolylineAlgorithm_Extensions_PolylineEncoderExtensions_Encode_PolylineAlgorithm_Abstraction_IPolylineEncoder_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Polyline__PolylineAlgorithm_Coordinate___ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Extensions/PolylineEncoderExtensions.cs#L55 + metadata: + uid: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.Encode(PolylineAlgorithm.Abstraction.IPolylineEncoder{PolylineAlgorithm.Coordinate,PolylineAlgorithm.Polyline},PolylineAlgorithm.Coordinate[]) + commentId: M:PolylineAlgorithm.Extensions.PolylineEncoderExtensions.Encode(PolylineAlgorithm.Abstraction.IPolylineEncoder{PolylineAlgorithm.Coordinate,PolylineAlgorithm.Polyline},PolylineAlgorithm.Coordinate[]) +- markdown: Encodes an array of instances into an encoded polyline. +- code: public static Polyline Encode(this IPolylineEncoder encoder, Coordinate[] coordinates) +- h4: Parameters +- parameters: + - name: encoder + type: + - text: IPolylineEncoder + url: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.html + - < + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - ',' + - " " + - text: Polyline + url: PolylineAlgorithm.Polyline.html + - '>' + description: The instance used to perform the encoding operation. + - name: coordinates + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + - '[' + - ']' + description: The array of objects to encode. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: A representing the encoded polyline string for the provided coordinates. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when encoder is null. +languageId: csharp +metadata: + description: Provides extension methods for the interface to facilitate encoding geographic coordinates into polylines. diff --git a/api-reference/1.0/PolylineAlgorithm.Extensions.yml b/api-reference/1.0/PolylineAlgorithm.Extensions.yml new file mode 100644 index 00000000..c39da0ca --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Extensions.yml @@ -0,0 +1,19 @@ +### YamlMime:ApiPage +title: Namespace PolylineAlgorithm.Extensions +body: +- api1: Namespace PolylineAlgorithm.Extensions + id: PolylineAlgorithm_Extensions + metadata: + uid: PolylineAlgorithm.Extensions + commentId: N:PolylineAlgorithm.Extensions +- h3: Classes +- parameters: + - type: + text: PolylineDecoderExtensions + url: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.html + description: Provides extension methods for the interface to facilitate decoding encoded polylines. + - type: + text: PolylineEncoderExtensions + url: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.html + description: Provides extension methods for the interface to facilitate encoding geographic coordinates into polylines. +languageId: csharp diff --git a/api-reference/1.0/PolylineAlgorithm.InvalidPolylineException.yml b/api-reference/1.0/PolylineAlgorithm.InvalidPolylineException.yml new file mode 100644 index 00000000..3f440ad0 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.InvalidPolylineException.yml @@ -0,0 +1,73 @@ +### YamlMime:ApiPage +title: Class InvalidPolylineException +body: +- api1: Class InvalidPolylineException + id: PolylineAlgorithm_InvalidPolylineException + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/InvalidPolylineException.cs#L19 + metadata: + uid: PolylineAlgorithm.InvalidPolylineException + commentId: T:PolylineAlgorithm.InvalidPolylineException +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Exception thrown when a polyline is determined to be malformed or invalid during processing. +- code: 'public sealed class InvalidPolylineException : Exception, ISerializable' +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: Exception + url: https://learn.microsoft.com/dotnet/api/system.exception + - text: InvalidPolylineException + url: PolylineAlgorithm.InvalidPolylineException.html +- h4: Implements +- list: + - text: ISerializable + url: https://learn.microsoft.com/dotnet/api/system.runtime.serialization.iserializable +- h4: Inherited Members +- list: + - text: Exception.GetBaseException() + url: https://learn.microsoft.com/dotnet/api/system.exception.getbaseexception + - text: Exception.GetObjectData(SerializationInfo, StreamingContext) + url: https://learn.microsoft.com/dotnet/api/system.exception.getobjectdata + - text: Exception.GetType() + url: https://learn.microsoft.com/dotnet/api/system.exception.gettype + - text: Exception.ToString() + url: https://learn.microsoft.com/dotnet/api/system.exception.tostring + - text: Exception.Data + url: https://learn.microsoft.com/dotnet/api/system.exception.data + - text: Exception.HelpLink + url: https://learn.microsoft.com/dotnet/api/system.exception.helplink + - text: Exception.HResult + url: https://learn.microsoft.com/dotnet/api/system.exception.hresult + - text: Exception.InnerException + url: https://learn.microsoft.com/dotnet/api/system.exception.innerexception + - text: Exception.Message + url: https://learn.microsoft.com/dotnet/api/system.exception.message + - text: Exception.Source + url: https://learn.microsoft.com/dotnet/api/system.exception.source + - text: Exception.StackTrace + url: https://learn.microsoft.com/dotnet/api/system.exception.stacktrace + - text: Exception.TargetSite + url: https://learn.microsoft.com/dotnet/api/system.exception.targetsite + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: This exception is used internally to indicate that a polyline string does not conform to the expected format or contains errors. +languageId: csharp +metadata: + description: Exception thrown when a polyline is determined to be malformed or invalid during processing. diff --git a/api-reference/1.0/PolylineAlgorithm.Polyline.yml b/api-reference/1.0/PolylineAlgorithm.Polyline.yml new file mode 100644 index 00000000..97411b9b --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.Polyline.yml @@ -0,0 +1,315 @@ +### YamlMime:ApiPage +title: Struct Polyline +body: +- api1: Struct Polyline + id: PolylineAlgorithm_Polyline + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L20 + metadata: + uid: PolylineAlgorithm.Polyline + commentId: T:PolylineAlgorithm.Polyline +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Represents an immutable, read-only encoded polyline string. + + Provides methods for creation, inspection, and conversion of polyline data from various character sources. +- code: 'public readonly struct Polyline : IEquatable' +- h4: Implements +- list: + - text: IEquatable + url: https://learn.microsoft.com/dotnet/api/system.iequatable-1 +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: This struct is designed to be lightweight and efficient, allowing for quick comparisons and memory-safe operations. +- h2: Constructors +- api3: Polyline() + id: PolylineAlgorithm_Polyline__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L28 + metadata: + uid: PolylineAlgorithm.Polyline.#ctor + commentId: M:PolylineAlgorithm.Polyline.#ctor +- markdown: Initializes a new, empty instance of the struct. +- code: public Polyline() +- h2: Properties +- api3: IsEmpty + id: PolylineAlgorithm_Polyline_IsEmpty + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L50 + metadata: + uid: PolylineAlgorithm.Polyline.IsEmpty + commentId: P:PolylineAlgorithm.Polyline.IsEmpty +- markdown: Gets a value indicating whether this is empty. +- code: public bool IsEmpty { get; } +- h4: Property Value +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean +- api3: Length + id: PolylineAlgorithm_Polyline_Length + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L55 + metadata: + uid: PolylineAlgorithm.Polyline.Length + commentId: P:PolylineAlgorithm.Polyline.Length +- markdown: Gets the length of the polyline in characters. +- code: public long Length { get; } +- h4: Property Value +- parameters: + - type: + - text: long + url: https://learn.microsoft.com/dotnet/api/system.int64 +- h2: Methods +- api3: CopyTo(char[]) + id: PolylineAlgorithm_Polyline_CopyTo_System_Char___ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L69 + metadata: + uid: PolylineAlgorithm.Polyline.CopyTo(System.Char[]) + commentId: M:PolylineAlgorithm.Polyline.CopyTo(System.Char[]) +- markdown: Copies the characters of this polyline to the specified destination array. +- code: public void CopyTo(char[] destination) +- h4: Parameters +- parameters: + - name: destination + type: + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '[' + - ']' + description: The destination array to copy the characters to. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when destination is null. + - type: + - text: ArgumentException + url: https://learn.microsoft.com/dotnet/api/system.argumentexception + description: Thrown when the length of destination does not match the polyline's length. +- api3: Equals(Polyline) + id: PolylineAlgorithm_Polyline_Equals_PolylineAlgorithm_Polyline_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L110 + metadata: + uid: PolylineAlgorithm.Polyline.Equals(PolylineAlgorithm.Polyline) + commentId: M:PolylineAlgorithm.Polyline.Equals(PolylineAlgorithm.Polyline) +- markdown: Indicates whether the current object is equal to another object of the same type. +- code: public bool Equals(Polyline other) +- h4: Parameters +- parameters: + - name: other + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: An object to compare with this object. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the current object is equal to the other parameter; otherwise, false. +- api3: Equals(object) + id: PolylineAlgorithm_Polyline_Equals_System_Object_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L119 + metadata: + uid: PolylineAlgorithm.Polyline.Equals(System.Object) + commentId: M:PolylineAlgorithm.Polyline.Equals(System.Object) +- markdown: Indicates whether this instance and a specified object are equal. +- code: public override bool Equals(object obj) +- h4: Parameters +- parameters: + - name: obj + type: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + description: The object to compare with the current instance. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if obj and this instance are the same type and represent the same value; otherwise, false. +- api3: FromCharArray(char[]) + id: PolylineAlgorithm_Polyline_FromCharArray_System_Char___ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L168 + metadata: + uid: PolylineAlgorithm.Polyline.FromCharArray(System.Char[]) + commentId: M:PolylineAlgorithm.Polyline.FromCharArray(System.Char[]) +- markdown: Creates a from a Unicode character array. +- code: public static Polyline FromCharArray(char[] polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '[' + - ']' + description: A character array representing an encoded polyline. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The instance corresponding to the specified character array. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when polyline is null. +- api3: FromMemory(ReadOnlyMemory) + id: PolylineAlgorithm_Polyline_FromMemory_System_ReadOnlyMemory_System_Char__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L205 + metadata: + uid: PolylineAlgorithm.Polyline.FromMemory(System.ReadOnlyMemory{System.Char}) + commentId: M:PolylineAlgorithm.Polyline.FromMemory(System.ReadOnlyMemory{System.Char}) +- markdown: Creates a from a read-only memory region of characters. +- code: public static Polyline FromMemory(ReadOnlyMemory polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A read-only memory region representing an encoded polyline. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The instance corresponding to the specified memory region. +- api3: FromString(string) + id: PolylineAlgorithm_Polyline_FromString_System_String_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L188 + metadata: + uid: PolylineAlgorithm.Polyline.FromString(System.String) + commentId: M:PolylineAlgorithm.Polyline.FromString(System.String) +- markdown: Creates a from a string. +- code: public static Polyline FromString(string polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + description: A string representing an encoded polyline. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The instance corresponding to the specified string. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when polyline is null. +- api3: GetHashCode() + id: PolylineAlgorithm_Polyline_GetHashCode + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L124 + metadata: + uid: PolylineAlgorithm.Polyline.GetHashCode + commentId: M:PolylineAlgorithm.Polyline.GetHashCode +- markdown: Returns the hash code for this instance. +- code: public override int GetHashCode() +- h4: Returns +- parameters: + - type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: A 32-bit signed integer that is the hash code for this instance. +- api3: ToString() + id: PolylineAlgorithm_Polyline_ToString + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L87 + metadata: + uid: PolylineAlgorithm.Polyline.ToString + commentId: M:PolylineAlgorithm.Polyline.ToString +- markdown: Returns a string representation of the polyline. +- code: public override string ToString() +- h4: Returns +- parameters: + - type: + - text: string + url: https://learn.microsoft.com/dotnet/api/system.string + description: A string containing the characters of the polyline, or an empty string if the polyline is empty. +- h2: Operators +- api3: operator ==(Polyline, Polyline) + id: PolylineAlgorithm_Polyline_op_Equality_PolylineAlgorithm_Polyline_PolylineAlgorithm_Polyline_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L140 + metadata: + uid: PolylineAlgorithm.Polyline.op_Equality(PolylineAlgorithm.Polyline,PolylineAlgorithm.Polyline) + commentId: M:PolylineAlgorithm.Polyline.op_Equality(PolylineAlgorithm.Polyline,PolylineAlgorithm.Polyline) +- markdown: Determines whether two instances are equal. +- code: public static bool operator ==(Polyline left, Polyline right) +- h4: Parameters +- parameters: + - name: left + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The first polyline to compare. + - name: right + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The second polyline to compare. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the polylines are equal; otherwise, false. +- api3: operator !=(Polyline, Polyline) + id: PolylineAlgorithm_Polyline_op_Inequality_PolylineAlgorithm_Polyline_PolylineAlgorithm_Polyline_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/Polyline.cs#L150 + metadata: + uid: PolylineAlgorithm.Polyline.op_Inequality(PolylineAlgorithm.Polyline,PolylineAlgorithm.Polyline) + commentId: M:PolylineAlgorithm.Polyline.op_Inequality(PolylineAlgorithm.Polyline,PolylineAlgorithm.Polyline) +- markdown: Determines whether two instances are not equal. +- code: public static bool operator !=(Polyline left, Polyline right) +- h4: Parameters +- parameters: + - name: left + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The first polyline to compare. + - name: right + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The second polyline to compare. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the polylines are not equal; otherwise, false. +languageId: csharp +metadata: + description: >- + Represents an immutable, read-only encoded polyline string. + + Provides methods for creation, inspection, and conversion of polyline data from various character sources. diff --git a/api-reference/1.0/PolylineAlgorithm.PolylineDecoder.yml b/api-reference/1.0/PolylineAlgorithm.PolylineDecoder.yml new file mode 100644 index 00000000..4c518e1d --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.PolylineDecoder.yml @@ -0,0 +1,149 @@ +### YamlMime:ApiPage +title: Class PolylineDecoder +body: +- api1: Class PolylineDecoder + id: PolylineAlgorithm_PolylineDecoder + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineDecoder.cs#L11 + metadata: + uid: PolylineAlgorithm.PolylineDecoder + commentId: T:PolylineAlgorithm.PolylineDecoder +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. +- code: 'public sealed class PolylineDecoder : AbstractPolylineDecoder, IPolylineDecoder' +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: AbstractPolylineDecoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.html + - text: PolylineDecoder + url: PolylineAlgorithm.PolylineDecoder.html +- h4: Implements +- list: + - text: IPolylineDecoder + url: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.html +- h4: Inherited Members +- list: + - text: AbstractPolylineDecoder.Options + url: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.html#PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_Options + - text: AbstractPolylineDecoder.Decode(Polyline) + url: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.html#PolylineAlgorithm_Abstraction_AbstractPolylineDecoder_2_Decode__0_ + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h4: Extension Methods +- list: + - text: PolylineDecoderExtensions.Decode(IPolylineDecoder, string) + url: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.html#PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_String_ + - text: PolylineDecoderExtensions.Decode(IPolylineDecoder, char[]) + url: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.html#PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_Char___ + - text: PolylineDecoderExtensions.Decode(IPolylineDecoder, ReadOnlyMemory) + url: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.html#PolylineAlgorithm_Extensions_PolylineDecoderExtensions_Decode_PolylineAlgorithm_Abstraction_IPolylineDecoder_PolylineAlgorithm_Polyline_PolylineAlgorithm_Coordinate__System_ReadOnlyMemory_System_Char__ +- h2: Remarks +- markdown: This abstract class provides a base implementation for decoding polylines, allowing subclasses to define how to handle specific polyline formats. +- h2: Constructors +- api3: PolylineDecoder() + id: PolylineAlgorithm_PolylineDecoder__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineDecoder.cs#L13 + metadata: + uid: PolylineAlgorithm.PolylineDecoder.#ctor + commentId: M:PolylineAlgorithm.PolylineDecoder.#ctor +- markdown: Initializes a new instance of the class with default encoding options. +- code: public PolylineDecoder() +- api3: PolylineDecoder(PolylineEncodingOptions) + id: PolylineAlgorithm_PolylineDecoder__ctor_PolylineAlgorithm_PolylineEncodingOptions_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineDecoder.cs#L17 + metadata: + uid: PolylineAlgorithm.PolylineDecoder.#ctor(PolylineAlgorithm.PolylineEncodingOptions) + commentId: M:PolylineAlgorithm.PolylineDecoder.#ctor(PolylineAlgorithm.PolylineEncodingOptions) +- markdown: Initializes a new instance of the class with the specified encoding options. +- code: public PolylineDecoder(PolylineEncodingOptions options) +- h4: Parameters +- parameters: + - name: options + type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: The to use for encoding operations. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when options is null +- h2: Methods +- api3: CreateCoordinate(double, double) + id: PolylineAlgorithm_PolylineDecoder_CreateCoordinate_System_Double_System_Double_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineDecoder.cs#L21 + metadata: + uid: PolylineAlgorithm.PolylineDecoder.CreateCoordinate(System.Double,System.Double) + commentId: M:PolylineAlgorithm.PolylineDecoder.CreateCoordinate(System.Double,System.Double) +- markdown: Creates a coordinate instance from the given latitude and longitude values. +- code: protected override Coordinate CreateCoordinate(double latitude, double longitude) +- h4: Parameters +- parameters: + - name: latitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The latitude value. + - name: longitude + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The longitude value. +- h4: Returns +- parameters: + - type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: A coordinate instance of type . +- api3: GetReadOnlyMemory(Polyline) + id: PolylineAlgorithm_PolylineDecoder_GetReadOnlyMemory_PolylineAlgorithm_Polyline_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineDecoder.cs#L26 + metadata: + uid: PolylineAlgorithm.PolylineDecoder.GetReadOnlyMemory(PolylineAlgorithm.Polyline) + commentId: M:PolylineAlgorithm.PolylineDecoder.GetReadOnlyMemory(PolylineAlgorithm.Polyline) +- markdown: Converts the provided polyline instance into a for decoding. +- code: protected override ReadOnlyMemory GetReadOnlyMemory(Polyline polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: The instance containing the encoded polyline data to decode. +- h4: Returns +- parameters: + - type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A representing the encoded polyline data. +languageId: csharp +metadata: + description: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. diff --git a/api-reference/1.0/PolylineAlgorithm.PolylineEncoder.yml b/api-reference/1.0/PolylineAlgorithm.PolylineEncoder.yml new file mode 100644 index 00000000..05665bb8 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.PolylineEncoder.yml @@ -0,0 +1,161 @@ +### YamlMime:ApiPage +title: Class PolylineEncoder +body: +- api1: Class PolylineEncoder + id: PolylineAlgorithm_PolylineEncoder + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L11 + metadata: + uid: PolylineAlgorithm.PolylineEncoder + commentId: T:PolylineAlgorithm.PolylineEncoder +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. +- code: 'public sealed class PolylineEncoder : AbstractPolylineEncoder, IPolylineEncoder' +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: AbstractPolylineEncoder + url: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.html + - text: PolylineEncoder + url: PolylineAlgorithm.PolylineEncoder.html +- h4: Implements +- list: + - text: IPolylineEncoder + url: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.html +- h4: Inherited Members +- list: + - text: AbstractPolylineEncoder.Options + url: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.html#PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_Options + - text: AbstractPolylineEncoder.Encode(IEnumerable) + url: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.html#PolylineAlgorithm_Abstraction_AbstractPolylineEncoder_2_Encode_System_Collections_Generic_IEnumerable__0__ + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h4: Extension Methods +- list: + - text: PolylineEncoderExtensions.Encode(IPolylineEncoder, ICollection) + url: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.html#PolylineAlgorithm_Extensions_PolylineEncoderExtensions_Encode_PolylineAlgorithm_Abstraction_IPolylineEncoder_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Polyline__System_Collections_Generic_ICollection_PolylineAlgorithm_Coordinate__ + - text: PolylineEncoderExtensions.Encode(IPolylineEncoder, Coordinate[]) + url: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.html#PolylineAlgorithm_Extensions_PolylineEncoderExtensions_Encode_PolylineAlgorithm_Abstraction_IPolylineEncoder_PolylineAlgorithm_Coordinate_PolylineAlgorithm_Polyline__PolylineAlgorithm_Coordinate___ +- h2: Remarks +- markdown: This abstract class serves as a base for specific polyline encoders, allowing customization of the encoding process. +- h2: Constructors +- api3: PolylineEncoder() + id: PolylineAlgorithm_PolylineEncoder__ctor + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L13 + metadata: + uid: PolylineAlgorithm.PolylineEncoder.#ctor + commentId: M:PolylineAlgorithm.PolylineEncoder.#ctor +- markdown: Initializes a new instance of the class with default encoding options. +- code: public PolylineEncoder() +- api3: PolylineEncoder(PolylineEncodingOptions) + id: PolylineAlgorithm_PolylineEncoder__ctor_PolylineAlgorithm_PolylineEncodingOptions_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L17 + metadata: + uid: PolylineAlgorithm.PolylineEncoder.#ctor(PolylineAlgorithm.PolylineEncodingOptions) + commentId: M:PolylineAlgorithm.PolylineEncoder.#ctor(PolylineAlgorithm.PolylineEncodingOptions) +- markdown: Initializes a new instance of the class with the specified encoding options. +- code: public PolylineEncoder(PolylineEncodingOptions options) +- h4: Parameters +- parameters: + - name: options + type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: The to use for encoding operations. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when options is null +- h2: Methods +- api3: CreatePolyline(ReadOnlyMemory) + id: PolylineAlgorithm_PolylineEncoder_CreatePolyline_System_ReadOnlyMemory_System_Char__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L31 + metadata: + uid: PolylineAlgorithm.PolylineEncoder.CreatePolyline(System.ReadOnlyMemory{System.Char}) + commentId: M:PolylineAlgorithm.PolylineEncoder.CreatePolyline(System.ReadOnlyMemory{System.Char}) +- markdown: Creates a polyline instance from the provided read-only sequence of characters. +- code: protected override Polyline CreatePolyline(ReadOnlyMemory polyline) +- h4: Parameters +- parameters: + - name: polyline + type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A containing the encoded polyline characters. +- h4: Returns +- parameters: + - type: + - text: Polyline + url: PolylineAlgorithm.Polyline.html + description: An instance of representing the encoded polyline. +- api3: GetLatitude(Coordinate) + id: PolylineAlgorithm_PolylineEncoder_GetLatitude_PolylineAlgorithm_Coordinate_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L21 + metadata: + uid: PolylineAlgorithm.PolylineEncoder.GetLatitude(PolylineAlgorithm.Coordinate) + commentId: M:PolylineAlgorithm.PolylineEncoder.GetLatitude(PolylineAlgorithm.Coordinate) +- markdown: Extracts the latitude value from the specified coordinate. +- code: protected override double GetLatitude(Coordinate coordinate) +- h4: Parameters +- parameters: + - name: coordinate + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html +- h4: Returns +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The latitude value as a . +- api3: GetLongitude(Coordinate) + id: PolylineAlgorithm_PolylineEncoder_GetLongitude_PolylineAlgorithm_Coordinate_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoder.cs#L26 + metadata: + uid: PolylineAlgorithm.PolylineEncoder.GetLongitude(PolylineAlgorithm.Coordinate) + commentId: M:PolylineAlgorithm.PolylineEncoder.GetLongitude(PolylineAlgorithm.Coordinate) +- markdown: Extracts the longitude value from the specified coordinate. +- code: protected override double GetLongitude(Coordinate coordinate) +- h4: Parameters +- parameters: + - name: coordinate + type: + - text: Coordinate + url: PolylineAlgorithm.Coordinate.html +- h4: Returns +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The longitude value as a . +languageId: csharp +metadata: + description: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. diff --git a/api-reference/1.0/PolylineAlgorithm.PolylineEncoding.yml b/api-reference/1.0/PolylineAlgorithm.PolylineEncoding.yml new file mode 100644 index 00000000..2028ccbe --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.PolylineEncoding.yml @@ -0,0 +1,254 @@ +### YamlMime:ApiPage +title: Class PolylineEncoding +body: +- api1: Class PolylineEncoding + id: PolylineAlgorithm_PolylineEncoding + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L19 + metadata: + uid: PolylineAlgorithm.PolylineEncoding + commentId: T:PolylineAlgorithm.PolylineEncoding +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: >- + Provides methods for encoding and decoding polyline data, as well as utilities for normalizing and de-normalizing + + geographic coordinate values. +- code: public static class PolylineEncoding +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: PolylineEncoding + url: PolylineAlgorithm.PolylineEncoding.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: >- + The class includes functionality for working with encoded polyline + data, such as reading and writing encoded values, as well as methods for normalizing and de-normalizing geographic + coordinates. It also provides validation utilities to ensure values conform to expected ranges for latitude and + longitude. +- h2: Methods +- api3: Denormalize(int, CoordinateValueType) + id: PolylineAlgorithm_PolylineEncoding_Denormalize_System_Int32_PolylineAlgorithm_CoordinateValueType_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L91 + metadata: + uid: PolylineAlgorithm.PolylineEncoding.Denormalize(System.Int32,PolylineAlgorithm.CoordinateValueType) + commentId: M:PolylineAlgorithm.PolylineEncoding.Denormalize(System.Int32,PolylineAlgorithm.CoordinateValueType) +- markdown: Converts a normalized integer value to its denormalized double representation based on the specified type. +- code: public static double Denormalize(int value, CoordinateValueType type) +- h4: Parameters +- parameters: + - name: value + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: The normalized integer value to be denormalized. Must be within the valid range for the specified type. + - name: type + type: + - text: CoordinateValueType + url: PolylineAlgorithm.CoordinateValueType.html + description: The type that defines the valid range for value. +- h4: Returns +- parameters: + - type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The denormalized double representation of the input value. Returns 0.0 if value is 0. +- h4: Remarks +- markdown: >- + The denormalization process divides the input value by a predefined precision factor to + produce the resulting double. Ensure that value is validated against the specified type before calling this method. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentOutOfRangeException + url: https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception + description: Thrown when value is outside the valid range for the specified type. +- api3: GetCharCount(int) + id: PolylineAlgorithm_PolylineEncoding_GetCharCount_System_Int32_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L222 + metadata: + uid: PolylineAlgorithm.PolylineEncoding.GetCharCount(System.Int32) + commentId: M:PolylineAlgorithm.PolylineEncoding.GetCharCount(System.Int32) +- markdown: >- + Determines the number of characters required to represent the specified integer value within predefined + + variance ranges. +- code: public static int GetCharCount(int variance) +- h4: Parameters +- parameters: + - name: variance + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: >- + The integer value for which the character count is calculated. Must be within the range of a 32-bit signed + + integer. +- h4: Returns +- parameters: + - type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: >- + The number of characters required to represent the variance value, based on its magnitude. + + Returns a value between 1 and 6 inclusive. +- h4: Remarks +- markdown: >- + The method uses predefined ranges to efficiently determine the character count. Smaller + + values require fewer characters, while larger values require more. This method is optimized for performance + + using a switch expression. +- api3: Normalize(double, CoordinateValueType) + id: PolylineAlgorithm_PolylineEncoding_Normalize_System_Double_PolylineAlgorithm_CoordinateValueType_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L180 + metadata: + uid: PolylineAlgorithm.PolylineEncoding.Normalize(System.Double,PolylineAlgorithm.CoordinateValueType) + commentId: M:PolylineAlgorithm.PolylineEncoding.Normalize(System.Double,PolylineAlgorithm.CoordinateValueType) +- markdown: Normalizes a given numeric value based on the specified type and precision settings. +- code: public static int Normalize(double value, CoordinateValueType type) +- h4: Parameters +- parameters: + - name: value + type: + - text: double + url: https://learn.microsoft.com/dotnet/api/system.double + description: The numeric value to normalize. Must be a finite number. + - name: type + type: + - text: CoordinateValueType + url: PolylineAlgorithm.CoordinateValueType.html + description: The type against which the value is validated. Determines the acceptable range for the value. +- h4: Returns +- parameters: + - type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: An integer representing the normalized value. Returns 0 if the input value is 0.0. +- h4: Remarks +- markdown: >- + This method validates the input value to ensure it is finite and within the acceptable range + + for the specified type. If the value is valid, it applies a normalization algorithm using a predefined precision + + factor. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentOutOfRangeException + url: https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception + description: >- + Thrown when value is not a finite number or is outside the valid range for the specified + + type. +- api3: TryReadValue(ref int, ref ReadOnlyMemory, ref int) + id: PolylineAlgorithm_PolylineEncoding_TryReadValue_System_Int32__System_ReadOnlyMemory_System_Char___System_Int32__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L40 + metadata: + uid: PolylineAlgorithm.PolylineEncoding.TryReadValue(System.Int32@,System.ReadOnlyMemory{System.Char}@,System.Int32@) + commentId: M:PolylineAlgorithm.PolylineEncoding.TryReadValue(System.Int32@,System.ReadOnlyMemory{System.Char}@,System.Int32@) +- markdown: Attempts to read a value from the specified buffer and updates the variance. +- code: public static bool TryReadValue(ref int variance, ref ReadOnlyMemory buffer, ref int position) +- h4: Parameters +- parameters: + - name: variance + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: A reference to the integer that will be updated based on the value read from the buffer. + - name: buffer + type: + - text: ReadOnlyMemory + url: https://learn.microsoft.com/dotnet/api/system.readonlymemory-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A reference to the read-only memory buffer containing the data to be processed. + - name: position + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: A reference to the current position within the buffer. The position is incremented as the method reads data. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if a value was successfully read and the end of the buffer was not reached; otherwise, false. +- h4: Remarks +- markdown: >- + This method processes the buffer starting at the specified position and attempts to decode a value. + The decoded value is used to update the variance parameter. The method stops reading when a + termination condition is met or the end of the buffer is reached. +- api3: TryWriteValue(int, ref Span, ref int) + id: PolylineAlgorithm_PolylineEncoding_TryWriteValue_System_Int32_System_Span_System_Char___System_Int32__ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncoding.cs#L133 + metadata: + uid: PolylineAlgorithm.PolylineEncoding.TryWriteValue(System.Int32,System.Span{System.Char}@,System.Int32@) + commentId: M:PolylineAlgorithm.PolylineEncoding.TryWriteValue(System.Int32,System.Span{System.Char}@,System.Int32@) +- markdown: Attempts to write a value derived from the specified variance into the provided buffer at the given position. +- code: public static bool TryWriteValue(int variance, ref Span buffer, ref int position) +- h4: Parameters +- parameters: + - name: variance + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: The integer value used to calculate the output to be written into the buffer. + - name: buffer + type: + - text: Span + url: https://learn.microsoft.com/dotnet/api/system.span-1 + - < + - text: char + url: https://learn.microsoft.com/dotnet/api/system.char + - '>' + description: A reference to the span of characters where the value will be written. + - name: position + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: >- + A reference to the current position in the buffer where writing begins. This value is updated to reflect the new + + position after writing. +- h4: Returns +- parameters: + - type: + - text: bool + url: https://learn.microsoft.com/dotnet/api/system.boolean + description: true if the value was successfully written to the buffer; otherwise, false. +- h4: Remarks +- markdown: >- + This method performs bounds checking to ensure that the buffer has sufficient space to + + accommodate the calculated value. If the buffer does not have enough space, the method returns false without modifying the buffer or position. +languageId: csharp +metadata: + description: >- + Provides methods for encoding and decoding polyline data, as well as utilities for normalizing and de-normalizing + + geographic coordinate values. diff --git a/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptions.yml b/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptions.yml new file mode 100644 index 00000000..4869791d --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptions.yml @@ -0,0 +1,74 @@ +### YamlMime:ApiPage +title: Class PolylineEncodingOptions +body: +- api1: Class PolylineEncodingOptions + id: PolylineAlgorithm_PolylineEncodingOptions + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptions.cs#L18 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptions + commentId: T:PolylineAlgorithm.PolylineEncodingOptions +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Options for configuring polyline encoding. +- code: public sealed class PolylineEncodingOptions +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Remarks +- markdown: This class allows you to set options such as buffer size and logger factory for encoding operations. +- h2: Properties +- api3: LoggerFactory + id: PolylineAlgorithm_PolylineEncodingOptions_LoggerFactory + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptions.cs#L34 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptions.LoggerFactory + commentId: P:PolylineAlgorithm.PolylineEncodingOptions.LoggerFactory +- markdown: Gets or sets the precision for encoding coordinates. +- code: public ILoggerFactory LoggerFactory { get; } +- h4: Property Value +- parameters: + - type: + - text: ILoggerFactory + url: https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.iloggerfactory +- h4: Remarks +- markdown: The default logger factory is , which does not log any messages. +- api3: MaxBufferSize + id: PolylineAlgorithm_PolylineEncodingOptions_MaxBufferSize + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptions.cs#L26 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptions.MaxBufferSize + commentId: P:PolylineAlgorithm.PolylineEncodingOptions.MaxBufferSize +- markdown: Gets the maximum buffer size for encoding operations. +- code: public int MaxBufferSize { get; } +- h4: Property Value +- parameters: + - type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 +- h4: Remarks +- markdown: The default maximum buffer size is 64,000 bytes (64 KB). This can be adjusted based on the expected size of the polyline data, but should be enough for common cases. +languageId: csharp +metadata: + description: Options for configuring polyline encoding. diff --git a/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptionsBuilder.yml b/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptionsBuilder.yml new file mode 100644 index 00000000..f54c56a2 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.PolylineEncodingOptionsBuilder.yml @@ -0,0 +1,126 @@ +### YamlMime:ApiPage +title: Class PolylineEncodingOptionsBuilder +body: +- api1: Class PolylineEncodingOptionsBuilder + id: PolylineAlgorithm_PolylineEncodingOptionsBuilder + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs#L15 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptionsBuilder + commentId: T:PolylineAlgorithm.PolylineEncodingOptionsBuilder +- facts: + - name: Namespace + value: + text: PolylineAlgorithm + url: PolylineAlgorithm.html + - name: Assembly + value: PolylineAlgorithm.dll +- markdown: Provides a builder for configuring options for polyline encoding operations. +- code: public class PolylineEncodingOptionsBuilder +- h4: Inheritance +- inheritance: + - text: object + url: https://learn.microsoft.com/dotnet/api/system.object + - text: PolylineEncodingOptionsBuilder + url: PolylineAlgorithm.PolylineEncodingOptionsBuilder.html +- h4: Inherited Members +- list: + - text: object.Equals(object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object) + - text: object.Equals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object) + - text: object.GetHashCode() + url: https://learn.microsoft.com/dotnet/api/system.object.gethashcode + - text: object.GetType() + url: https://learn.microsoft.com/dotnet/api/system.object.gettype + - text: object.MemberwiseClone() + url: https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone + - text: object.ReferenceEquals(object, object) + url: https://learn.microsoft.com/dotnet/api/system.object.referenceequals + - text: object.ToString() + url: https://learn.microsoft.com/dotnet/api/system.object.tostring +- h2: Methods +- api3: Build() + id: PolylineAlgorithm_PolylineEncodingOptionsBuilder_Build + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs#L37 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptionsBuilder.Build + commentId: M:PolylineAlgorithm.PolylineEncodingOptionsBuilder.Build +- markdown: Builds a new instance using the configured options. +- code: public PolylineEncodingOptions Build() +- h4: Returns +- parameters: + - type: + - text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: A configured instance. +- api3: Create() + id: PolylineAlgorithm_PolylineEncodingOptionsBuilder_Create + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs#L27 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptionsBuilder.Create + commentId: M:PolylineAlgorithm.PolylineEncodingOptionsBuilder.Create +- markdown: Creates a new instance for the specified coordinate type. +- code: public static PolylineEncodingOptionsBuilder Create() +- h4: Returns +- parameters: + - type: + - text: PolylineEncodingOptionsBuilder + url: PolylineAlgorithm.PolylineEncodingOptionsBuilder.html + description: An instance for configuring polyline encoding options. +- api3: WithLoggerFactory(ILoggerFactory) + id: PolylineAlgorithm_PolylineEncodingOptionsBuilder_WithLoggerFactory_Microsoft_Extensions_Logging_ILoggerFactory_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs#L72 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptionsBuilder.WithLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory) + commentId: M:PolylineAlgorithm.PolylineEncodingOptionsBuilder.WithLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory) +- markdown: Sets the logger factory for logging during encoding operations. +- code: public PolylineEncodingOptionsBuilder WithLoggerFactory(ILoggerFactory loggerFactory) +- h4: Parameters +- parameters: + - name: loggerFactory + type: + - text: ILoggerFactory + url: https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.iloggerfactory + description: The instance of a logger factory. +- h4: Returns +- parameters: + - type: + - text: PolylineEncodingOptionsBuilder + url: PolylineAlgorithm.PolylineEncodingOptionsBuilder.html + description: The current builder instance. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentNullException + url: https://learn.microsoft.com/dotnet/api/system.argumentnullexception + description: Thrown when loggerFactory is null. +- api3: WithMaxBufferSize(int) + id: PolylineAlgorithm_PolylineEncodingOptionsBuilder_WithMaxBufferSize_System_Int32_ + src: https://github.com/sramekpete/polyline-algorithm-csharp/blob/develop/1.0/src/PolylineAlgorithm/PolylineEncodingOptionsBuilder.cs#L54 + metadata: + uid: PolylineAlgorithm.PolylineEncodingOptionsBuilder.WithMaxBufferSize(System.Int32) + commentId: M:PolylineAlgorithm.PolylineEncodingOptionsBuilder.WithMaxBufferSize(System.Int32) +- markdown: Sets the buffer size for encoding operations. +- code: public PolylineEncodingOptionsBuilder WithMaxBufferSize(int bufferSize) +- h4: Parameters +- parameters: + - name: bufferSize + type: + - text: int + url: https://learn.microsoft.com/dotnet/api/system.int32 + description: The maximum buffer size. Must be greater than 11. +- h4: Returns +- parameters: + - type: + - text: PolylineEncodingOptionsBuilder + url: PolylineAlgorithm.PolylineEncodingOptionsBuilder.html + description: The current builder instance. +- h4: Exceptions +- parameters: + - type: + - text: ArgumentOutOfRangeException + url: https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception + description: Thrown when bufferSize is less than or equal to 11. +languageId: csharp +metadata: + description: Provides a builder for configuring options for polyline encoding operations. diff --git a/api-reference/1.0/PolylineAlgorithm.yml b/api-reference/1.0/PolylineAlgorithm.yml new file mode 100644 index 00000000..ace2f946 --- /dev/null +++ b/api-reference/1.0/PolylineAlgorithm.yml @@ -0,0 +1,71 @@ +### YamlMime:ApiPage +title: Namespace PolylineAlgorithm +body: +- api1: Namespace PolylineAlgorithm + id: PolylineAlgorithm + metadata: + uid: PolylineAlgorithm + commentId: N:PolylineAlgorithm +- h3: Namespaces +- parameters: + - type: + text: PolylineAlgorithm.Abstraction + url: PolylineAlgorithm.Abstraction.html + - type: + text: PolylineAlgorithm.Extensions + url: PolylineAlgorithm.Extensions.html +- h3: Classes +- parameters: + - type: + text: InvalidPolylineException + url: PolylineAlgorithm.InvalidPolylineException.html + description: Exception thrown when a polyline is determined to be malformed or invalid during processing. + - type: + text: PolylineDecoder + url: PolylineAlgorithm.PolylineDecoder.html + description: >- + Decodes encoded polyline strings into sequences of geographic coordinates. + + Implements the interface. + - type: + text: PolylineEncoder + url: PolylineAlgorithm.PolylineEncoder.html + description: >- + Provides functionality to encode a collection of geographic coordinates into an encoded polyline string. + + Implements the interface. + - type: + text: PolylineEncoding + url: PolylineAlgorithm.PolylineEncoding.html + description: >- + Provides methods for encoding and decoding polyline data, as well as utilities for normalizing and de-normalizing + + geographic coordinate values. + - type: + text: PolylineEncodingOptions + url: PolylineAlgorithm.PolylineEncodingOptions.html + description: Options for configuring polyline encoding. + - type: + text: PolylineEncodingOptionsBuilder + url: PolylineAlgorithm.PolylineEncodingOptionsBuilder.html + description: Provides a builder for configuring options for polyline encoding operations. +- h3: Structs +- parameters: + - type: + text: Coordinate + url: PolylineAlgorithm.Coordinate.html + description: Represents a geographic coordinate as a pair of latitude and longitude values. + - type: + text: Polyline + url: PolylineAlgorithm.Polyline.html + description: >- + Represents an immutable, read-only encoded polyline string. + + Provides methods for creation, inspection, and conversion of polyline data from various character sources. +- h3: Enums +- parameters: + - type: + text: CoordinateValueType + url: PolylineAlgorithm.CoordinateValueType.html + description: Represents the type of a geographic coordinate value. +languageId: csharp diff --git a/api-reference/1.0/toc.yml b/api-reference/1.0/toc.yml new file mode 100644 index 00000000..b69f5d3f --- /dev/null +++ b/api-reference/1.0/toc.yml @@ -0,0 +1,46 @@ +### YamlMime:TableOfContent +- name: PolylineAlgorithm + href: PolylineAlgorithm.yml + items: + - name: Classes + - name: InvalidPolylineException + href: PolylineAlgorithm.InvalidPolylineException.yml + - name: PolylineDecoder + href: PolylineAlgorithm.PolylineDecoder.yml + - name: PolylineEncoder + href: PolylineAlgorithm.PolylineEncoder.yml + - name: PolylineEncoding + href: PolylineAlgorithm.PolylineEncoding.yml + - name: PolylineEncodingOptions + href: PolylineAlgorithm.PolylineEncodingOptions.yml + - name: PolylineEncodingOptionsBuilder + href: PolylineAlgorithm.PolylineEncodingOptionsBuilder.yml + - name: Structs + - name: Coordinate + href: PolylineAlgorithm.Coordinate.yml + - name: Polyline + href: PolylineAlgorithm.Polyline.yml + - name: Enums + - name: CoordinateValueType + href: PolylineAlgorithm.CoordinateValueType.yml +- name: PolylineAlgorithm.Abstraction + href: PolylineAlgorithm.Abstraction.yml + items: + - name: Classes + - name: AbstractPolylineDecoder + href: PolylineAlgorithm.Abstraction.AbstractPolylineDecoder-2.yml + - name: AbstractPolylineEncoder + href: PolylineAlgorithm.Abstraction.AbstractPolylineEncoder-2.yml + - name: Interfaces + - name: IPolylineDecoder + href: PolylineAlgorithm.Abstraction.IPolylineDecoder-2.yml + - name: IPolylineEncoder + href: PolylineAlgorithm.Abstraction.IPolylineEncoder-2.yml +- name: PolylineAlgorithm.Extensions + href: PolylineAlgorithm.Extensions.yml + items: + - name: Classes + - name: PolylineDecoderExtensions + href: PolylineAlgorithm.Extensions.PolylineDecoderExtensions.yml + - name: PolylineEncoderExtensions + href: PolylineAlgorithm.Extensions.PolylineEncoderExtensions.yml diff --git a/api-reference/api-reference.json b/api-reference/api-reference.json new file mode 100644 index 00000000..78956c32 --- /dev/null +++ b/api-reference/api-reference.json @@ -0,0 +1,59 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", + "build": { + "xref": [ + "https://learn.microsoft.com/en-us/dotnet/.xrefmap.json" + ], + "content": [ + { + "files": [ + "index.md", + "toc.yml", + "guide/*.{md,yml}" + ], + "exclude": [ + "_docs/**" + ] + }, + { + "dest": "", + "files": [ "*.yml" ], + "group": "v1.0", + "src": "1.0", + "rootTocPath": "~/toc.html" + }, + { + "dest": "", + "files": [ "*.yml" ], + "group": "v1.1", + "src": "1.1", + "rootTocPath": "~/toc.html" + } + ], + "resource": [ + { + "files": [ + "media/**" + ] + } + ], + "groups": { + "v1.0": { "dest": "1.0" }, + "v1.1": { "dest": "1.1" } + }, + "output": "_docs", + "template": [ + "default", + "modern" + ], + "maxParallelism": 1, + "globalMetadata": { + "_appName": "PolylineAlgorithm for .NET", + "_appTitle": "PolylineAlgorithm for .NET", + "_enableSearch": true, + "_enableNewTab": true, + "_disableContribution": false, + "pdf": false + } + } +} \ No newline at end of file diff --git a/api-reference/assembly-metadata.json b/api-reference/assembly-metadata.json new file mode 100644 index 00000000..0416ceed --- /dev/null +++ b/api-reference/assembly-metadata.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", + "metadata": [ + { + "src": [ + { + "src": "../src", + "files": [ + "**/*.csproj" + ] + } + ], + "dest": "temp", + "outputFormat": "apiPage" + } + ] +} \ No newline at end of file diff --git a/api-reference/favicon.ico b/api-reference/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..eb57e8d716a3427562638ca13d1a4e7df39e7247 GIT binary patch literal 249170 zcmeFa2Xvg(wf;@8Ri^i%nUO{s_3GZMWLv#=$+EHOy;mFe-fb`~5E2rSKxiQy2sb43 zgc3?9ri6}-!Qfuy{r&bkmT~gkyVm#p*Z&f7uf#fxJQ|JO_nh9Vxf{^V0#B`Cah-72{Bf%XCyn(3N~B;7b0A*Sr&Oo1Y5uT8|}hl{IPL z8Q6j{-s`w6NcYyw`2yC*V`CraQNZLi3v@1Q_{sAYtnkZJ^8+X%k;e8 zWBSDBG41oY&AmRCMZ7Mn_!t4F`S=L(e87<`{7!F*GkIT%EBTXvGx>R+!*rk1W?E%V zPE=bkg}>8h3zS>*fA!Bm{|tQdGoYMY9dSCC9B)ZZnCZ5d7W!?L+k+14BaGJq4$EiY zdmn!OD7Y6MB>?7wF1rMs4u(^F4x9L#*aAktWdr+`_;8u95y{vH(^2fjK5WG&KBwh* zpWS?)$C9+lmYi@#(!i4|`1>V{AVWDvzkbLh^ndlwz<9i!>XiZMI zJaOQFM&ggbTwA{_U=se9ed*p*`>)!vkw^MYJQn?5HVyyxZueK`wdk8Euh;xsg!vqq zG;lzh!<=-P%WB@_b66h?IBn12%RgZ3Vf1>zsRx{Tyk011yCFC0@ZnsHnAlz+tO1jr0F{ec$b`#Nml6XBfvGcs$3NyeOczMo; z5)g1C5hd`5N`S>N7=c=We;$69^$=r+pX>A5&5tl{wkIcEVNMv(G2lBVjpLp&7^+aH zMeG0ipD_cvS96`_go{v*f05!bJri=9e@8ay`(&6F5s}VHN*JhWQ31ot=&vwg68gT5 zxkP4%#jEq&O^3r#P+e!nSvU|0CcF9GVPl8u&CKdX4JM z;1uuea2O-tAhNf^+8r)lYlq!C#pa7jbV#Y3a>-)3X4xieMHugH#~#=uno}&XkyT>P z93$pHj+h)iu@VW85d`~*h8^%~B*1IE*bJXT?ZH0|uU?zl2B+l^*S#a;uxtt0&3_8o zl7H;8B`+pQn5jwy_nOWyY(YOsWG4O%zu2_8Z_^y6g!4l#(~}{$X;08?IvOIQ#MqVM zGJlZbvOF7fnji4kk~dkC2VRgk@Z=gI#3B6N@d^`5vIY+Sd%jMN6Jhm%y8ok8;fzR1 z7|>)hC0y>aC*K%!ntqkyG`$dVnm++U`xw1JSU5@^(R_U1_rd$u!+0JnqSS*)leoaG zmB>EX84z12Lp(W?B&YOJnKA#T^25j9me;;IBDddrj|9R#ID$(YcAumVo+d-4FOrm1Ixs5l`-DF}wYS4e-MQ4F8Y4=(`TZ|MBm+HpRbT19;Ty<=O=sa3tcg?n(7n zKM1?6Ps1aAf^S%CP8v9qd!N7@WE`6d{;6B4|LdP;Kt%K@-81SZlJtA*C=dVAFEepI^)bB_>Kt^dh`}&oD!}J^W_$>}g!dz40$=!(qzcZ0L z$YCho{hyvmQtsnsWWk3gn3D#~beWSD2JFe-4?2<`VSe5q`?f

VU^~ROb=3{W!k* zaHhB->OVgGaB>}96g)H7H2G4+6&owzAw7~=zEFnG`k~a#c~}SYywJFFtHbpvB|7*X}e5#=t za5wW9U=$<{IC(OmREs5XKohVV&2uS?e@SRPaDZB(lcEkw(mbf%yBZ2A?eicm>4>`~ z-2-u9NyE#KEBR>HWjYjcn!dudL1&Yn$b+LL~YDTLNrK1gvO);rCIBZzGgcM`%H_#&Kl0XeUo zq0mO8^LwD+JO=E*-HHpg@Vwb34wF~x&TR2UCre=HIg(qkNyhZtFQpefD^&~sF4H%E zEH^#*mAvxB5&8SBLvsH^56SS6L&U}Vs0?682P6Xm1!a=azDiPne^&c-lGU+U@@HHp z`L!2`B@i>#)u)L;w^wp<3&fL>Ay!ua>cDk?cMsR;LN4&I);e4Wj!tZan|aHx1H{Ou*$+Q;TM|}T5>GxaVZe8)nYTj5|E7>p_lx3P!@ztn zUJ51bX1`p4``iR2yoY)E1LIM@-Sh*yIq5w1RWYwutbEg7C-b+*;⪼`@8$3ARlf? z6GlOVWC}-cUvWR6v^3ym4{IpNJ_!;=LTP(>%|2v?XeciW<$>=ni2&YuU?q$^rx-WvCUZr&FFvTeQhL98Aakf;xLusdK74FUQc@>K#?VuxpmGh={azV) z{*y9k?iQ(D{)KdH-Y-}DY`5J1`hIz9?-BXzz)|`6!;j10p(6zoqpMOJj-+3?t;w4#$%*Ha&yAi8~U4*>T9?sKv^DWThGHC=(a zvXN-|-mu5?M8sp-lIk^YXY7l3%txS44C_~{*`M9!MWApv_x4R&fCK{8I?(+vqSFx- zo^)twi3(DE!()iZFh7>u3F7StP%b=<3Qn*FECk+8J(|mUlyQLD`hxP4H$ll`Am&Gi z-b+l038%m|CUcK@4D|+T21qUaYXijr@xR}fjt_D*MIe3}TlNf>d6m~;xf}le1h@4L z<4XpWwZ?7g?HWU!U@D+j@Vl8ByTffbeJb_D?>iZ7?qtAErp@94Ele4xaaui+np-PF zYL-iJ=Up=7tS6=H+IOUN?RGi!rk&D$>t3n8`JkMC*FJgZy@T@Jp@XvZz+rjx$v?~3 zvE#&RO~&!YH9HqNp`t&4C2;3WmRR#D$vlSs%uWbE_h!kOexsChED&c}3D@Q{v_Gpi zU4}MXD#K=Ie6UOgH_wr*$!AIm@q;s%FE&R|%v`UXC8oo`&;XbZmK|eeXPYnrI=F8% zB4eNzNr>2yK_#;JK*(kN3`$Ha6FGj#Xh@u2P8TX&@?W0N8R~?q*g}k2{ zM}7Zq>MPM|N@xkVO^-2p8Em2WfY*{fvWV5HMI#t~Thg&ukYzWvUECU|f71dJ9er@< zd&Dsv2{^60Q=Cp>MAtKLg?qeK(|Wrp;Q~{_fCiAK7Ek3vO^Oe^^o+7^Wh)}vF|?B0;&n1fQETe$EXh3 z0iSk=6&~gGQLsaCUYO_gwHAw0+^OSa%qe$E`JBH=?V6oZx#5UZZW5`!?x-|uJ|wN1 z56Fdge<{CyZ@+wmzu$T2usr_UUu1IGRNe!AfyGrArUX+c2=L*Yfj`&a%9$vcIR7~O zH%L|&F+lfql0N+wDLiGf#3r30HfNCZg03wEMfs&tG99AOaXp0LddcnBDEVzGCBNnx z$(k@*yoFQ69Lg7qDk%G1Rw*c6_Pn8tX3a)6OSlnR(1ec*Z&~S+R*MI=qqqdGf zfPyB953z|{lMj2?XCGDWR9nEn7MQowsPrcB@MHLv@7v9ZbCVMXbYKfcu|9n%rIWu& zX?$Qjozu5ZRK||+_eUis3~X_llP_~Qldto*lJD`kO-~|`zXh%p@B2euM{n5Y6dwDE zsgCa(zngWTz)Bx|*hFpA(9tKYpRl(+aoJ2O`I}jcZ|V#DC$>miWNGmR94eV{z#VCy{x~}#q&0C>bkQRN=iHn8(YOb7{ny}9~YluOLY$Qe@4NbMpwy+ zC)aE065q29A9@ez%%?TAsVNV*+7X86Fs@Ut^`8g#`j7Y4cfa5t3U0!$dNPJd>d;2X zEjwF=)X$OOQ_q)xuLL}}jgp-NZ%_s`EtcsUzmUd_`1(z~(zxlMG-CtWZp02;w@a?P zXOH~x!(RCc+#fmED=)qLl1!b-IwbQR;LC~4N%mz(Ud5R*q4Oef_(T6G{uTSF(ErTt z4U!GMGkR{6f|)l+UirDC0@DcQu^}4BXO_sYt_70cy-9LAH%MCZ5^+wrM6w!JN(Ocy zwQU{T0DD4+5NW+iB9&)Ja9EvqqQk&^lu*WtJcLtvp*CAdO$hx(}D zgc}N>b*V0>kdv+F#te9s#yXS8keT+QhkS~wco8Z6*T|wb+f9j=V|tr0!AcKf3^mER zR0`|=YA99nFmm|4GQyjgE=%IIP>t^qiapGD1vkHqu^*blI%@c$>!|mw+f>sZxOLo` znl6>?jA8s6de5bEt1imyJy<`3(eWeAlKFGTN?!8{Np1PAq&D3sIW-GN-i?86dwC0w z*sOTk31>?C>bIqC!y#$exL@iv;_=rWm1$Ul_RTwG(fyyx>)ZFrj>CuLvx6efzW9pN zmY0jm%(Pii;qj`DP`cz)oh~J_*UOOBE5sRydw;!bH{L%Nq{ceeO1dJsbF*Ym-ynHC z>m;*BMSz=N0Bev4r;17S8=^fM>?}IARf>rM3cA)yN!uJTMJps{%H;?X8x83&Mg}3h zZ8PZK#N#@$3d<$4d9I{ZoiD*LEfUEeBKANkVu6>a0w$!91x&@relW!zwKB&nfQKpe z7~eC+%8L29CY!nbBV?X-0w>y;Eq|np`G+oR(o&Z246+DQSkhdEvNzoV-vOyS{Qv$^ zv}-0u-zSU6Zz8p>?L?#(BB(46+D&&LVEi71{^c;yU)XKm9dbDiGl<@g4d9!CH&^H? z^p)Kh)=c++4&5r;uim2_mSm^+%IU${2D8Ybgv5bmRK{pnLbl#96M*(+eT)LTHm*zW z@0<8K=KZaYq16$w*p2(rwlSwaoe1!1$*R1D?_&~G`Il@_!Nl2;H+`K%5SI#@7fTKq zrQo=3@gX`n!xWlPq++o-jeQD)5vWu&(s_wP-J|${4LMvyz#gFHg$<~L%}6m65^Z0% z9E36KV7%dX*nUsB`VZVz%Q94!b4*DIttdz}w60e3`1MFOzOUiu9pUIE{xL?6fiP?M_7V zV5m^ii>FBOsAjG{!tW*G|3FkmoAn!{2L_pjM-P|84m#fAg2;OD#L)vbr+;E}^};Bc=z{rpQZrMyZU7TzD^ ztN!8&q)R4!AXWKLf%#Z6a<&mZM_;o>@jg%hO&)JM8EN|ccWdb2=ujOWso2Xt+g zf*G47xAqb-d(+spT2g2eODGG=b-Cnrsg+nQ(WR{q z`ew<1C!}jkp}eANtrWK|<~=W$(AaLuj3yG}WU|ZQDj0hob3{pmAswpIvx6GDS_Bdc zesqJN=0eFYdO?ylI~dIf9{b^-$G#g*@DYaldCHaUbK8>F+AYZ!f)H&?8U{R48AjRR ze*qOmy2g9@8ie`p6ll!H4w+7~BhA!_tB7TPN(}NR_Ql^KZp+7v-4VC-FnfhWhK-oj zVT>@lRUNlm_eh_U;87d0Qh3xxEVXtncD@CP*W&Pt&7X~fER*yRr%G({V#%w%P9lS6 zh}G=owW_M8$!bHvftcVUeBJ>eW&X{Ols`WAb9uS!7O-q zlbb|Xc&G%5Iwfn;RZ`rzPNvMdO>#ywVh_L$Yi~y9OB+!o<7Tdq?DiWZr{e~Rjcp@F z_8af*xh{j&U5yXD30M`YWPBeLu85qbXk z7p1Cv3e9|YeE7b}0%ll~Lim2}jP;T>9WLIp(U^0GFUFj?v8rZCEh?2kB>F<#H%V&O z&63uBi-cM?^SDW39qX|N>m+CTCMlV@R)T}dSsO3f4ET4uB{;NFidoA@r>^NbDZy@J z^BCnZ3;U6YElFqH`-a+p40Oee?(5MQunCkIWp=EVqK-u}xc*{^6j#6kyhhr?&<4Pi zW|boBdo5wMGA|lC`c!k$co3VbgR)abT!Ye>lX#Jgk_ipgvQ5_(yZ#6S^EQ%e^YH*P zu?JIN2csFIh#5vD@<_g2zb~bUvDut-I%eZaxaoE9xqEnvr|6k_gK~vWwPYcTv`Zx; zTb$63OVa*IpH^8bq=7=5oP14Q`14$nzLxNYEu)f$)$J3DFGp;tr4X=FBs6lqWR$ZF zntzCd@)HR++(SP0Udfw$r8vw!IPpKipKH=k^JP*1X9N0g>M)i#_m4yBALMNZ(9Nm3 zLh_qeO6CaQ3_LYs6wDYQMV$-Te%DD3#4;1tkj@rKYr9UoE!Rs*3+|(J1-~~}aw^Z2 z$jDYm@dPT+b0rCrXd<29uq80Z0}Pj-xns?QsauFkBM@q1F4QdkXTy-;l_(tn-p7aj z8wl$#?nBL(F}Us^FpUq*x|q&t{u6}UtAR^8ZVL&H?izbqp%k^vmmxhHq*x&_?J@{?`Z39uzY#8y zNoPMOwW|*>j!5I`LsHLUHPCMc`YV6APu|?#D|?R~lrQCwJpRIqg!*Mrh6JuLQ7nYg zmO!=?RGdKx&pJuP?PttbDN#&7X5(D31+#HYE~7jrm8{*MuG=I${Z1Kt!NW3n!QUkF z^j}M;WCP6WGg6wjLb=%4MzK7X=nsm(rbT!@SweW!=x{Rq`Ifwd>ID>9uB$urJg^c@hj-qGn0^D7~0p zFVcpO;eoh2*eh0xl3Zw4Xpp4j*Gt-%3niywxnwnbPom8aNVxU)k~ZUc$v$g~0gz|vomCYrPi;zY+?)`NO>R`Knv+Q+jyU08n;7C$ICs3C)>s>y>`7u8=ap41|vR^N?a>hxsF zBphTr`TUwy2c>1rerZ{ESSr`{O6yI#WYh0=%3Gh~@X6`#J#d>IVsih^22eeR5<5bw2I=REO5au^CAOghLXF+T)s}1+=6@6AP-!s4~?D6}1G~v&85nk#-OT zX&+W&pFV=x_;4m4APhJ9tMvCy+#^cb)avU{FYm|eE5g+irSjS^*Q%!`x$Of9{1{x1 z-5wN&Cr`ZTr4k-8TVkaPB&QBJrTK2Q`LD5>zn9|E|01I=eMia`d@dEsNan2Qm5JAU zDBh-D;UOQ8+$jsiW`e9??f&_ixW1R2)^FDPQ{K|Tbts`e4u4fF?FRfWCW*XG3Tm$u zdnngnIWEY2#*`k(>cR8i@%!MP4Kd86zB~sUWKAcD+;tOP0rJU+u^+P8Zw2jm$JSL4 z=y{SgUGiaM#r2z|u=QtB(EW%M&wf!xUihJuE+QchUh4_a z+t&9=_lm8OJ!-bN@EB3>qQPxwc$p0CULr%gRvS`?FLylqOtIvXBwMzOs#_x6D?gOB zHM^yC{XuEpuus}I?UCs>eI*s`qt5uAgfj+1su3vgt|@udGVY9rrE1j<>=i6yC5eUg zM_?U0r10$jkd)TjNCsRF{=q(@sPkHJ#|9yCxWR&lL}04qPdSZZfMt@_u>upmTCy2g z9oPeyLk3KsZ>YRzj4l#{(|H~1uZ0Ggyl)ovKqbe*nG3`>coNq};REZcHBrIAQ>3VU zu4GhSEoqa_GJ-{4#vt+evSDIQ~uFEc-VSe?~z4HU7bm-4FY(yhzfU!GH5Y@nlg1fNk_p^x+*c zjkP7vB}p6w_v%lwSaZYev$quQSqMcrIuMJprr*HpZD&O8&b3Okl}lpmmig; zRY#>(1;*98CI7s~B-F-x;n$=1@f@x_XWDE;8ulbYfEoMlN*gYN+pof}FOhU2xg2bE zW(P??Y+NQnU*Cvf4~zl+GrPe*QD6@HAR9`U)ur`@*I^T`$L7xwXL&K8kpz$wMV2*$C_TLUU^t*RvcmU zN~I3$@5IYLkwDeMlG*TUDJY%K-%24ddh8yQ7kxeO|NlDte|;VJFB1RJ@=GMrv{v%k zmPuf6HS2~y#opS|ON<&)UF#@~B{6J3rm>%heDU*{gaFyBeJ&%<7!;KCU>B4RU^j=H z{j^M+`XE#xL`|86|$G*|kMu8E0hSiN<2uWUP zj|?M?Hi)P{ui_jEB0>g7(lkdnW2iLD`6JldC9NwCNGp+lHN3z1hP`s*<9p=&T@>{k zJ|sI19hJxa^1Mtcn*i6Rhz{FjVxBVwjg>KAaMQwVnm?&%#jfwMbg^yN=U?W(O( zy=t#iEqX_SIa7(4Nk!sc!^N%AyzE2vIEc~siigZ0?5D)8U1_JCBZ+adWE{)xt* zTMcd>B}y-9TP6OS$wrZ)6AV~vA<3QuFX~xJF%Z5V{AYJ81Jf(9^WdL2AU@*XXJ}l2 zsF<#?0L2C|_C-v205+fiUyw)9L2C86WQo%#epFs<6*KBmUga55h=3Wy7x)n;!^9>T zq!shq7D#r@#S$GqT>|-&NO)v1H(nGPEkH#mWPa%?z$R$%Bldv3;A1an>|pE@Y(;=Q zU=$zl_cZmS1xhq18gULqUT_NPv+WVo37Rg_2Z_J1kt{bnt7f6(HQ=wBek55pEizN?XAJhO+JQX79_XI<9=7wZ?8}2vyAJh*(LXI_-W#J&LDS zwLJkYpy_6do1{`$9BISwFVpFjrKY~^hcf(>U-EuW%Fy#(m$GXRAl_ zNg~LRAYtN~+Ide&-KyPEvkV)8@1JqwPPy%={qpv%UfFp>i~5er(=Wb6K_9$9_cp#t z3ux=>D&@id_>0U~ewReSe_$p)zx#G6IrW!PxA=8wr#Pr}-F|EnTxIFIaQ-rWSCdb4 z;SB0#FK(445(|wh!2i;tQqLo_RXVT*HLDJx2ketc7r)55-3q558A!sSfW)OG95S>L zRYDz+BJ9F7;CwZhjN?DM6D1hVpn8CgzVFldKF%kUQ>a?VUO*X)G4hC2qA10g#4j1+ zyWjv`l793wbFYqQu?*^1EHRRiVPb`JhVq8YHtawvc7)h7w}rC{=uOBgn=X+-Q%Nru zVb?=oh{9^Nsfu&Zerm^nKagiA)F~ukDKvaQw8ItX(pha`s3q<_G+Y9?_2M6Kp`=b( z#1^B@8ETi;g=?Dq8yR}`voiY1H)ZPLtRy8J)Cbr;NMy6B&N- zD^hgYql6OoQh$1@WL1%P7(3q|L)+#_A#^vNdmDtA8_}~|Tm@4JJ2{AtzCJ7A#)$UCgb!P#V&y*R*t}bA ze`3FU3gzE_WH0bPBrm-7I=TG{5)LFF*taTmq@{S|7r(fdn!ls+r}uWqS+_ncMd$xe ziY|NyV@_^ay+4?2bYxkH*TYxO|Cak1XdA;w{8 z;or3@$T_Z}zL0AgddZ)mw6{n;?zd2n2^h(>5Vq+1BqMG|Ml^AcgaDZTbm)H!37`-5 z3jO~I{$HB_g)}lDvPCZ8%b=c>;w^#Ffk*8ZF(b(a3QJ{h&tlBODg*u+5*9J?k&j{> zHJf44hb~eC%)!KF*U!D?8);aZPe+~IQMbsxegP#>421N#Es*o z8ld!z%fU4!w4Twp96Nw1owatil+S)ZtSJ>7vviSkF4`uw3q)!bi$NKy*Bq28=6}K^ zABn$F@qZuqU;ORIzsgt8|FmhBN_rzDY%@=MSV};oC@HiaGY74npD9wR@%V!oNx}wy}2MJJ?skCumbS z*sE093SP@s?w1M3sU;V^iQMuS65Y?GuyU!GNYcf7(9JTq>>`BH#qY|r zYj;TV^1U+c!Z&1O%fr}!ozl$TY{I@YvM$y9oqFtf!>ahG!$s<-U5<1Eb!%XK>(owN z`Zx)m(e&pdBjWlUDS3qC7gHn4J%gJp_UhoCO)_LARd!@cT=d}tsVj1+EJe*k-TcSo zj9WjIpFX=s-uvQ^?B2gu_8s0YFK>BMY8xAH`$}2k`&PqNExer8P$LgN^Nj2~cvRl~ zV!zz=myhMj``(w%8+VX8fRYfJv@xb@Dq+dH{GCboIxvNV9vOTZ)MckMa<6qup{Prs zSWu8k zH674S5)hi-H~MUVKA&!ce{uJJoC**QM4*USgoJrr-<23NCaZG}^sEqDihm}IGh=U} zW9y}8<`P02tuMG9pF&N8QU+wBbgebgo`o4mA6m=MM*R^XXQA3%Xh&h)0`9pHDo^MR z_O;H$8yO<0C5@6j;VjNhz`xf)LmO_BXv5FI;6v0lJu5@bCxpND@5nv-r249N#SY(}!?4LT_yZDmMHM?b4^N(ck)TJE5^cT3m zK0*N9L--GTO9MV6j{gtA|NZ#Vxc|42`TAD-fAH->e#t1m44;e5Cj>}uBgCaG)SErr zkk4Ik01JCgkCM?NWmNjlAUSNLi%!7576+uk4T?_tHGX%mG|oL@eud0fuua;S-{y7u@LvZQgjM+8Mnc(octRbclJINVg3n~~8NU#Vw*bzkDKeW3 z!ss?E`-s=UFQ~8S-nd)F&iIWa`_GZV72lWHNMG$x`4-l(fwie*{h)n@Jy)Avr|ZT# z*MgC@RR;_^RKMU|$wc`~AD*i@gWsuUp=ehSoMCwWnunsALu5k@GVQ{5$dG zLxvBRJMXzmKH2+)d~jf&{0-ajgFo$-vu@cg&FjB{ryRh~vlkb>N1YWRGTgz#`5|dT z&fxlY$MFyUtYH5(6ZW^O-B>EpzG{!u&HIQJ<2}fO@YK0)gIyB$*s%N_)_Ht0>*^;w z_L1K3OUkgRQ21-{^+jT)7M?eC-w|2}nLuS{W2lwmik*6hLdGJovL3j9+I z`>A97ZkfGqFSY=zv#-mQTQc7*@U8kq*bU}?0{ma`A32794N)~_`PTA(1OMqrpO;BC z_|IrsC;ldt_0~#J6Jc)p5ax=wirP)>{|T0q6Dlq;{Qp05fEaQ>m~d{?h0h2kMCwVS zHEhCvU4KL-oc_2Ba5PD%aF%pl`&aA%{+T)L1i$TIzKxixmC?*-0{e{&wI4)=(lP%< zaiwV5D#55U&IQDEq}8TrtOjo=JNqf(l{(2Be5Q0Repfn(H5z$d?Q#pguYtd%Jfj95 zsUwd4xDBYs|97q4E+y0E!uR2p>`@ajTWm}#zJ589CNemCS}W`)V?CGUWHqJS#g79FX0N*Wcn=x~3x&A~(Z<^+W}grL~C6kgM_k5tW3n z1<}k@xoYLL^2YY}<*$Z3l{l<_UM(fNOhjGOTv(#AB@F8ET?XZ%oNv({2qw1IHu zT5*txQ-#xyD>bF015H%Ac5Yk4J7AxV8h9f7|JnT?uMdI_YVA-CA!7DSzSk^J&&^Uq z*>beBOKcRBXo+p(%w`(sI@Bq-WJ9?8==)rU#`IZ&icUZ6bQAQ_qga&=Rgjja+%J zX)wuJ{zfYnpb7L>E&ew^zqb7xFa7IFL{Q^Hk3x3E<@9#o5n9(tumu4ZFJ8b>=GC8% zP?TX*b!-2E2{AJ;tPzy}fml63`v#H%dfW_xk1{|QTiM(?!cvOd4#VF?dgDcy5lmM;2hY7uNJcn=lwTUpCyEPB00!XUp6g{EHrt=|(V zH{lhgo^h8ry_v97?dT)vP&|RoxW%BIf*ZDE-b@bEL)6Z!UnbdgK!ZpiA8U|5lcFKo zqAXrc(Nd9_LZ(?~&X)JT+$%4<`HpmVwo+=QNla}A(@2%q@Mt8bh#0i+LOZXu7)MJ> z1AeEpozf`}Q55vfzJs!5*8%y>I|pUX13RVX`p>a!&r2xEp?`?qF1%lC*cs9TD{Wm* z9}#oiGUs*52I<`Q4yMqel7fUhiIud=tOYMir|#$ZdnhQlOR`Q`%{{GWVAZD1q;fri zm`DG~tBqh^P15Ker6Jt(GpffIqfB6`NMLAxka1EQ`{CH*%Z_ij_$S`>XQk_x zwmUrqy^>SErUM0yt@E^wPr?(;Swr(U++#m%#D=6GJm2%!F-WM+ib4{i~J`L|U z6z`~!e+U~K#@%ajAfw|4Qn>_X&irds+Ker(2anB)W7dUj0@hWTQ}3_X|3^{2PoUS| zS24bw->qBxinv1~P<=SPf_+*tWj-Ez2l!@BvldmTw)LxaN*n4;J4v?&I_j%=z6smh zzIG=Gxr1EKeyM?>5kRt@`w{s`0`hzZ?~^&K3ruOEnUgJ2La4)+%aHC>FjQrxoQ!b_ zNp0A^Eu&c?B{O6QtTk)q&5}9uhce<6RLaq{B-1EpLy-4}g0gh=DrsnIffZ0bs%oVU z@cz$3i&f&K&y=FW0Q6%$v_*2z*kN+x&weWJ?%XZ!?A|AT`1r6~_vB8w^0p@>l0D3L zPfZ-=3_VRwTfI}7P+3~J_nr-VWc-;Ah_9eiyctuZr0gnbpYyV`lcZ{5Z`RKLf}}lV z>DaU^7`G;Cv~u5>J6TK=HyKI~>^x=MsS>WDXiMEcc3tsbK-Whec+F&;qpd4R>{5`# z$WWCK+n{Vw3xYCn;~6|gnXgoEor)dEBEm01(ThrSxzIUUkO;IPOt3Lz{Gx{qxE>~%yY%)Sro_bG7dlNs24@<{9t#XaAv zlBa4g`$_FW75=Aw@TTd@TN%{j(;a;g&3WrdYNcSV7 z78{`NtBO_)HbIpERhp}K?<(v->BXr3b@xh;BEbyBzXklWulfpHwOC9GU3q-jY5Qi2 z|BO?AjIMt^K2n(|do9I--wCD}1*d78AQNoCzH3Q;%LWu!qB)8{icX=-dCClu^Vo0H zVh2jDjl^8mqz)q7aiU9Nb?ZZCl^EF+1wW-qTHy2E~V5+SD!0WTVrTj*Vkj{-lXInn$TnyC4~PixO-ueFJqv#;;nX5YVVzy5dwODm9WJ3=f{K5Q zC{Dz_MuL4q@vnA3@gIQ?Xg{WdbqS@1qldQ~(sNp+l&0p#-Nc65r&dk}`RTgp9G6 z?-xs?jN(CxID$wlL5N(aZLNfvyHx&0>I{4dk-ip;<`~L=7L6*l;fgqe6Y(D-k=%!W zqs@RKfsC#nkxc!}z<-D0AFgI`pe9%YD3_@+@w5jF%o{}y++#J^tky?{;!^Rc_}BZ_ zj87HcSMfOJlD8zU@q3a#Zl;mo)iwb2)9T-}Kq!=5PC>_W1`p8Wek&?K6?R}63I1B; z6KZ4Bwj3K(>{rGAqzgaz*5cn{8rVXn^f6A~==Bjn>ZxBToCf3Pq^gV&6(nC5z+2Wz zS~Fo7F{Pd;V-$UZ?-Dp&`nV2BBFiuIu;7WKQ=8XbTytoEtmkrl?mt`4s;K2LM}rHXvTC7`F??=@|S>)xa=5 zox}Ex_7p90^|Lmu?KSeqGf&C;`wq*CZ@(?0M-G;dw#_&PN^EqO^sM}f7?-)Et*9Ly z+y-CjfOB;)=c=kSp>{P812tkx$6o#_cKSAo3$(*m6Zgu|Dbj9VLO~3D8t{MZ-qkL~ z)ZxvNRz@HAcna9Ya)992YZ>~uL;@3*N{|siF87XEczk$9@$XSf#Xo+jgr+Q$bnHPk zrwM7{nA(~QR8#}saQg`SAWZxiJwZwA!@fQme1O8jjIJMG!-&hTLn-3aq|(!W`ZfOT zX~Y8$!U5IK!}-YKDDJCx)N$Mf;Hx#etJxkBNm9P(0QUWHPDZ|-vl=FXf3m!)&}m^2 zBdp!3WWHjK`}US?wtT9@E6*YA~9{AR@!4;gK15ekZ&aKPB4S{XD8j?X^K zWUpp}`OFzN5!c>|68K%>obO5bmCs8XzdH{7VG4hD_VO3`8)K9*VCPk(+|3JY_L z41(Kzl8mdKA(!0n8F38!o{V(|9KVzKZd=Q#LYy?vflcVZZ?&>_>xp?v&iezsTg24F z@ln-lu-T~%>m{Xpfn=1Pi9M%-AN!*n@AhzsL?@gt-f?rq4ekTu=SgV7wURP{!sm(c zkuqVP1jk>?&#o2!*trq}|A7(9#4~)cI7d+UHj*)Vp}0yHNf7Ns_fU-aj3W7^QAim@ zD~J+P^koqK0smZ|Y6IyMke4rg2mgN%{2!9Zr~U-hKJNcL!~vye{*o*waUIw*I61aZ z?cs?-pVvwcRerTXXTqf)N_PES*w6E+5K3W9m~(Ki%_uhfznwJ+c_^@Q2V`i)#n{tr za47Xv=m8Xxsn74jexLu3;~yJ)&O73(`I-0{eq!L?L7}zA7RNZh@u;ytipTmg*^qxh z^^Z3HXv?g||M(>CQ%@>W{^RteNOW8$nc=09(L#I&{$s7g0!Z+wx*q6(TEG<Qs9E*qW7>&k+x6e|4CP`RG8G@J%|H8otr*g5 zd>yYf@W133{*x)j<21^_Qx{10+Ap!mhlSof5G07cuiOib!0foNA3+P3v{b`KRwDuFE^mf`bIk`Y_mlcyC?Tf&F++V5kpGiYQ zj5gbhjyovuevZ?*_ZYE8IdMn(rq5*cy&uWk<+pI!0og!e06$eee(nN+F(;50hVY7ZNTaW!5wsvPurDy(wh%BlEW)oEjGWHbSZ2R^SOb?O}P z6;^;PGV8yhTCe`jKfiCGP&2E3 zo|Ikj3LGC@4*y?IA#4*v^>)p)*O8&t=hO}y$3N?%{NO|zpx9UKR&7Nb|6B0?6U1{I z{|mwYS4QPvh2~|j?Z$hu_nXlRYQba!xtsDUUXY?zs+ovmC!BT{`uSGYkeC6Tpi=)P zv0Q`hnGIxwiSM-#-Z&k|Z=nczCijZ}QM;!+fC{zDjvvb8E1$s+kz=@yy#>FXvGEJJ z_4gmk>z^K!H{RJQ<0g!!dH{Ul{}umwVy^mk#lD;77S&sFGr}?`KT`^`qmmx<7;WbNC~7yl_8x1Bz)gsu=W+)e17z-{7g8*+SAP5XKDp}tFGvGu58!U( zO=uHlvBj8X=s)sD#kE_JGVVm0Bcy9tEn)1YpWZazq~%cj<&r{SY|i8}#o?o1mfC9L z!$9cc4P?-t<)a3d1ON0h#vEh`_0z`VLwo2*ZD69jT$hW3kKFW;dc%VxkXc55RGXxc zp^S{aRQzM;J0w)FjRg|OVv#CpiwQA}J_1aD78LazTx!q+sDi>j(!5zl(*MwQ1MpY( zZ@@nldBx9MM3Mi0am@WwIAUxg!hIeqp+n_Bz7h&qi%e9b=?}KwgiGF+thzgle%=II z)PTJ9DRMxqA#X=g)8t2Y{z%%|kc72hk%OEZzI>U`b1Ufs3ai*+)x4*Mvnnn2nVTxM ztkVCHXTBlc>U+dn_hZBTJ1H{wui#G#=NpB;A^(&9Gvt5nSLOeZhtm)|6!&QwfP+k3 z9B67MMU&k?KbV?n@^IM{1ZArUXjOBqGB4R<`X+o)3Q>`{bbBXL{1O{`4)XdZMsGv| z@NWR}O@vI%B;K{)MhkJYxLS*<6?RRGX5gU-2r1y?dl-GvN*Np?l+A zx%JVV^5L%ivgg1ddFH9-W%MxQdFa2M`|kt3@gSeG2o188n-P-Yyr>lCr%6dcniSd|HLkt zeG8ocEA|?R&PEJv*YbnXwd{b5yX1A8{_T`^u9V0WM7xQI6?CRJCN2|y=~BroBp6=;sh*8eOG`gi25{A(M*!{BwRStv7s$ z^FJV^Gk!!l8pkuyRp218Htn1Tjig@#j#&v%J7TDodrl*w)iqmWI6_d({12pb z@qW6}9+M)19h-kJJIRNk<$N1EOi`=-B zVu6K{JCss6tiOxBF_5I(uQ6TaYAWSE zWpn>b7Yz_Xz4Gi|UzKT7rxEaDIUwtL47PrvpLU}f z9cIFXtF~(3*#TtFRcj6};sKwS(F|_MF zH6tijE}A2+ZQVw(K(D;;MXx;Y`a!w!$DdG^Tmr` z@52L!2%<8kULoNTbb3WcL43n_bGj}ah!Z3-NKP5TrFK3WWCS9kiA+7x?LQlOh>Q+R zW@sY8I0TgYHjXT($j0H%5pT{k35_}f0pTj~Pe2$Li&#*)jI**<8JU#@z1A|U|a02u#}(s3(7xPe+b;L?gu2DT6z;u~+R(|qO8ym9bj1%c%Et)M&W7CiL?CY62t~%O+r+r zvt8#eF8nI?kB@H!{sZ9On-Z0wWzAxXeY z7A@Fb?J{lOP^|MligkWwJiNu_?U2o|wXs^qfv( zlD1i0^5oxMkxxkyzO(b7{Aud}S@zo<*u>9_^4Ad;JTE~FcFUHCour)x`)O0a{^av% zZQ|2`5y12qbM34(&flVlNk6W_r6MJ3tLxi0bT4~I8hJR%Q6KdnVLevSi`~-h{1hXB zi5=j3eXRyFda6&VJAvp$yR|7J_hg7ScbY^-o-LsfaDg$4#WZn&n5He@EIB<@K!sO5 z@k9kmjxhxD)hqulryypQb^kDqf7%G_?ub;J|4V74JhY9(K;>nB;taM4oY9siVGc4L zXf364b%IRn{yux?6B#`FQ9kdCzvnM9+J^LaQsp_?n&hIeZ0N8d@(SgepK}27r-zQp z`#e7S(koIrb*!ZM=|cCpC7n-U?!59T#KprhiE_+Jl1nx0xpL(jFx`S#&xyO@mlCLa zKr+F~yiR|E3}CjBOP&$*%x)rJ8)Qq*AEWa2XxZ2!SL7 zGa5UN3gLu$J{*NkkxU9p zZd_YnY4VBfP4MKGVl#X{S2SB(W?Ikw?6d+48xc6Z$0c>f2OUsMzV~1?mMzmA5XMX zalQ*@VNd8uUfSs#L}1qw-_&;56u-e-@fX!dWZVVf9=}+U$1E4yq-BzdikE}$&n0P? z3H~F9uH&!%3uX7aq^#rnw9}bW6_Y zD=3C~7{15JT-UzO*@WMhU_m!+!4Y_w+9#J6Cq>KP;c`KO$dpGTXKT zy|V3)$it66DPu>CKp=CG7)0O{!G9J> z51Tvs|H6Nq3;YYt{XBN^59?&`f5S$zK2|R=D84?wi3H9NT0-5_f)k6HNQ9+w^3Ra= zd0>Bq1gFfWj{9oKop_Ph(??UsjnJ*}A$!8jVdq)^r$@U6@tt833PBVB7oGcNRF=Hb zc_i$15tAwRCP4@0+YnMUX{$xP+8(SYr&PhA8Ytp!p+HAl0~P?ySL-tajI=3R369UseYUfLtO_wM8Lt^@MNm$pcCeXCKlqaXXJzTWWriXFuX z{v|6KFnoS-ek%BnNMTMyG9sM12iGS7B$@nNabH{zJ8lQm7R1shvSwfQ*?>N58U7a= zqZ}i|9#$I=gfA!;h!uuq`KGnK;BN{MBtT`TX0&F>M7HTY-(AC+Q`f z#5h^lQ#bZovB~e#p01zMaQtJPcy9w6$8c{a7O-K@td>Ly+BmfYA=8O%($}l~(4qe} zID^gu*WSlUQ#)=$i41{%&f`P}C@20`{5Nr8Tk}RO28Tng+DFmH$1-c($DD*l za(Bf(8Ghzdk_#R!E?QYgUc1?wdP1S@b1xW(W<=#bo_JDrDCYMZl&@&r*l|#8z){({ z|EN6p@E>K+U<$9mh7*M>I;vSZmb_{xg4NnmIG6o5|0`6oha^xzk_G(dPF@6`Ci%xb zAH)2Kk1umR@i(jf{U`Vj;QyTzex-48RR-t&7ByeR$zLTTMM-{QA01vkyrOg_N5fwu zA&N;eOD~qxyc&ECex7}2p=id($v2Zbmhh3)#08VOBtRjxJCu!Y34kTeOr^j&wQ#!3 zSotyB9A6FoXQB@%{*|kDkeF6JV5rt;DBY{SlosN*7Hn%fez%e0AD<>_j^V$!d@*(b z{1bC2{^J~9l|W52e9i5T+XA%%$MH|m54=EaLmdAHXo>wJ1^pBVOutPEYcCRyUlW@s z+8!q{O&MCk3v%I)K9d)>?2&D>^L>VIc=>Nzq@lVY&WqX0J``|2d(t?43QVeR$xQVf z=ln(a5j4M4d_FC96kI6w(-8i1GqDNB@UOU6E}&yjVU`qRMR}d7|7u&}T7cq5i;OiZ zpyyVnfL}fNN)v}3_Od_dl+({VMP7XUZ}JhEz$-fs$=!eZm{Wo7lj7QW63%PjG!2sH za1>Q;J(^vB!}*NZh0}G2`&IdO^K(9;P0R_rluu4b4e+VMMN(N;DIKStA{ShJh0IyD zST0|1t#q9}TdG@|WPIs3$<5D_a2R1;FGnvKGoW40TGOPTgsz`fuJlTK9>UNiPT|LF za1yyEotoup368x4Gqr>y0XfNuOC+s<(38AN_ROD1_tJNP|INTYh-l*UANUd7q5S#GC3nWD6U;cCs z!mT`Ak~t(vKc_=K^4XDAKrQIG90E#rFcPtkkVgAftZaE_xR?VHFO{-OACjKicS$(EHnq-ferQp~8i>?LWu z>}jL6#}zwGrgD-;m-ccje3g#;G33+iPzh@PrY*!Q>^ADVDhU78q-dy6Ye)#Zp686b zp2`TvMjeR=H33HbA#^~)1U&_$V#!uM8RIS~U|(f*-Ogv^tmkm8;f6a65eB*GS2=Cr z9rDDx9Nx3*Al>}?P+5?pxPg9AF8}6vH34~%qf(e~^RC z_Q*RszLZzreMcU9_F1|8uDj);tFMv?Ws{AX1;uz8^hB@ItZ`PhV zjw%u|nv~O|Q}v==4wyPD;}&n{z{5u*I^t5+Csk6JH^b#YRaL_DVlso&Rs8h6`*HWZ zgms5WsT`J%Ih^^E0|$9z96TbQ@U!iQkI3!!Kza>5EcXBY} zcCPgo5-Pu6VpR`HKDCkhxj*r6Noh}97CB}E{-yZuqh=}Ge;~wxXcI1y5XCduoY<1z zLkKpy4OxhE0Md?wxr)&7n^$%^^)!Xh0+P_UI^9FzRS=lO&qJztN}iIq4a&N`Afx39b?9-MapBLXWv}vN@l=n^E9=h$NfSBz5FD z(zs-sbn<@n3l#rjB>=wk)8>k%E}*6@j{j)}{#62m$|JuR*jN1P^C#k;`jN^H!s-H3S{cS!ptV{c?F_>j$#p#v3IV zi5TbU1y#g{P-wuegYS)V2ypmrb20%*R8BwpOc4L5e7NHajw?jyIHH2MfOe5>h+o)HHLn#Kht9kw}TRW{{63Z%PVicBdga@5z6^S#`#>DwBT>(Sv`6rsD2)#BGKrK zB2dy}fYqy85Cwe0duR}zC*HBk#f~W8oy^CSlf)YjYje`?Z{tiRi!)6sE_{F>T&r*Vj-K9_BJ zKY0DEpnWS=?Ni3b`wxNqBl4+Q2IgTKDc+lZbcbZ-;sHqtI5_Hk5ND0F6L>VPIY5Wg zU&UYkE3Ck8_{6uB{||HT9VJznwSBMeopBUNopVlfA|p9x=!T~0ZgLhA=9~aYN)iKR z)KSMc=72emX&iM_6ay$CG@-l6Ss2{k@48RjO~L5%yx;oPQvbNusj9B7I(5!{?Yysz z^B<3tg|-k0>k;=yLcgo{OUk5@`&=ru=M!+D&zX-J~wPsca4%=Ty6$%}V{ z(9hphmZCr(R$Ixe)z+NKv$#}d@+%1R=~dqh!<-CaUK_u@GB%3Sil}C0`7vmUxhiT82uy# z5dm@r6b$rEL242u8r%y{l^!kv^jOw*5Nv0!32TUe*raG1G_1t(3JM5tbDm%zK7hRF zDCCDEVF0T@NqMlrgG%g$S6;I%d-m8aMiR;YtwRwi4z>v&c$0kLW7bCEpd0rdvO1Jz zt>7bZ0A#k27nw5$Ch*YKPl}JRc5U0h_)XjogIf+lJWy2bow3m59OZW?ehjN4K67e8 zxy4gBd|c-x_Lr_SrS)EDVpncTuA-5|1n}>B`ePV@PZ3&x68)0?&>o zzl~w~Ao;&>#EcUVGm7nx4+GP}zgPX?GC=BH_}{!&v9bXFTQLPbgX*w7`7}362gjv1&cFvBePmZJ zT4V(+nq$0kEhS39d?F@DGRBtVfYgnS5vZ7k$*`PuIM?EPQ>)O6hQd~ph{;0O;nYxy z^_qM?F`vCQc*ZUpICHyoy|m7X&iEDzA=srW@3tI_$c9ZdCQ+uwU-(QKo79}awNY%g zci%qtef37_H^9E+7&2@Vzk36}Lo%Qi{MYT@Z?*dlARmwid-mJE)*Z6NPj0iRSG;6- z)HKD?WZmo3yKMBrHP-pm4=u6eX-gdZB7<+1;?Rh$?nvw=r21tF{N|1S;rRFGq4-{7 z_+H|>oCUE3ITv!SNvQKo2pb9}(Vzk2?+L{9-8^63N^eYZ0lXNMm(vSQPXKY5OyHk6 z<{`rO)x=wXGL~2wq1ei+H#%bK;~0BZ*n0+ST>BlP;;86&9Yr57f-5~jIHkCT2_W1~p*jb5$j^f(ZXBKYHQfC7c)5y;78M zk+$@g|yDPL7YWd+vXbb0W^iIV;5P;E&q(@UH{@TX?={?_pcB<7Zp3i4w~fciW`f zezGaI{Krn6_YqtSeeL+Dd{o@|)_wGS49>XUGE1Jo`d@;HlI`}0uDL|9jv+6AzW?8+ z^pA6>SO1LNW`Zr&Kk!e-v&zDcPlmZQk3LQHz81mz5eoz8Um7vOFEWX~513mkF2`4< z7?=``TzDNc@FRnMnBH@Ka3vAyjZzPO`P>Z_Us!I(6K`ruq4y;EfmGr%jJ~uA)Nds* zno;8Ap~OeN_(bHxC`>tMeJBM~+0QTIzokO|;9pG3^8MA%slI*}_Wu?9597Tm4Ge}f z9JFqie*?G7GB?jmlQOf$K4Sx+$`aFVCBu3q+`7v;Rm^rwU`de9M-y{sNXqwp`2LNXvPJK3cM9sWrfY9EE~B`*h@Y?2A!_nGjI9AM0)!yV z!GXMm6!3S$(xp~MIEhw$-&;?51VQthjY6OaV$Rkxg<*;=z49GJtV@ZfV#<6ZT$O zZi(eI>rX5Swqi`L7)EbqcRSx=`#uP}?<07x4>8*CUMn07Qz1P_O`@_fS;3sVAg)D_ z%H(so&MH?OF>;)(+q~6kDVf>~zJuQ;6F@OPng3G%$TQ4>H9O5d+kDt=e{G+gbLVb5 z`8HD5Hy*ahx1;Yae1_h)c6QwHDR5}@BF%lJH6L=1wV=E?TB$#-xiGK2pkqh|{O0(t z@B0ajK@7$pVhYjknb>8TC1FQrQhJ$zDO>-zg-G{C=r-p^xs!qv%%sDN7IszMDv{L`GzJ^bS*gs{4iv70$|0ChM8GJRR zSD5mO>z9-38BT9o#Z|S~81#3^!$+owvAJBHKjm4aaJZ-+dBD6K*6b7*B*i~LnR))? zCyCo`uyHEpC*q)nDY{;&sUOe|+x?7k|zz#@FiXaFW@5+IdCkXVu-XAO%!^a-b|D<6@6g6Z1B2fYjHgos~ zD@n)|-#-{G1AMuj_L*kW%e_{tUD$UE>^mMZ%9}2|>`JTMxfdNL+{^S8?umHG6yD1U zKk6}S6R&G+q_m*^v7X}sY$A3p*Wso+@5a3#9V&CFp-rDX%XTP|fOx5qiGc{H(c^tG z1>Ug%WkXPvP;Thb0)I`(O~fovDn({ML}PiMT>hv8PMtP=;2#U&s%Sg1VUo}7$vmUZ zGx0VjL-gMUaRPxOreX@gt9Vwl>rLX)bGtNHxLLDYd-<(*Z7V;g#+~+mY=irGSpHN_ zRTK0J;Lr0thi&B+vqwJMWz+83iP}GC({9~EB{Ez2daBrN*<;k;I znRn88)}i}_44S8+oA2}Rceh01IGULszqR@o?O%juelk76So0rcpo(pM1x-XmC60o$tinEyQQhsqyJ%7J?SWuKzq!a2*D9of>cHl_gft<>O6@e zf>BXfX=^st68SP7;6J54`E{i@7W-;0N8KbjhD}HvqVAYxhf4d zVM?#v%#5PJ16<{!RCqytGv=IqPBa0`<5JX;JWzG5A_O%Di5ikp`(o`{JLRltLRu}TYq^rB=(uoSJ)QrDDb z#>A7hUr1773tqje?BVx2mxl9m;*Q_C9ucU(zplZCT|e84U+lND@7+TGA*9N;{A}ZH z{*R3%puB7ftyzXr#_ z`WbZn2hB%Z3apW6GJnZkPG&a30@yrZxnkBreia$O@pu71TjSjPOb^HLPeHc0opZ1h zw6e!B3QY0;i4OwVS_gesd@m24PVFiR<`u|O#{XFOt0i#Q+#qXLf<@rkGl6K(C?vKe zf`oIvW6lTKANV&U@Ys?9_L0{plJK*&D|;9b+lAajGmA>^Z-Y*M1(pU4+vdCQEJjeA zU5X{pAFrSU_*W@PFu%rfPkqC(&iDXpW2cS1fia)JU&X^CY2Z5L#%;FrtsVBk#=~~O z^to&q0#Yo;;^Cpsxda;b1XtLrhMtyW>jgy*a}VodkAi>rYkq4Sebkm=y8~4%1q78> z&|~lI>vM9_5}mlwxf~7oz(a7aVF3hH0vr)zvVsc>^6ek*ePG*xW1XPSs$=`h0u}_E zdIlDooEHGZt|&T( z8viByi-o11ynW_Xj3Q?{jN<@s+6QkyEY1~p48!JrN8w+9en3KdsGF!`2^`(6=k`cUnW&=9^b!; zM`w*Ad)b>>k_9^I{eesomIE_Y1+u}t!rI4cP{rJl_eefSr3J5fx#0I$`1h;O-FqR? zJf1%DD%(M{ZYwz4A{pS+vLb&0{;N^z>!sGgy<|Ww$6DmVH|sasYwv$xciex!&A;JB zo4t6kEx2(h)jp5dhhKbYYc_1O@e{{ku2Vz^=F*S@&px}H`3EErNe;-IP>{WbRmls?ez#WeJGlnn+|7j&-gTY) z!u$^M{0*%fljoZs*72K>XOc%=_3Jt3rBx)Ja&NM&LRWWj-- z0UKW1^WMRG-s__LGP_4o2QUV+T7|vR{ceFjHTw=FVOx3?-u5gg9dH}U7f?NkM?Z`; z?wTEL4uh~b|`><`tJ$>}=P-PIw z6N8@{gRH#-=4Fcn_Y_@9q~A64QofU(h`c`r-+EuTz7KyaS)nDH!OH>vxw=0`7P4B; zL*Fl~YlUMx{ITC>dQH*5fMGl+@-Hqfw2xP;#2v>3XWwt5Zl{i;YG0fV1PALe`PZ?8 zRYe9qS^164S+K~u_v}Sdl4NlV*Mx*(L?boLaV>aW#ODqjT0%4=k-s4?IlsXJ`r7&p zo2_m)1=9}uvH?Q&26|TE07V1qs43ctj9F7n0=cX_(Bt4Z0y)?SS)#Cj8~G}m06DA% zsDLpkh!D!n5dI_G_e%CCjKF-nk(gkZl`?_zC|W_w`54??+@_ z^_~N^@Y?y7h)dEC+LQLfXWOJ(*AdyGt_ZzVfxa3(eTB89Q#B&98%+g7ambFPQkAHz zQ6w3PI6@H4W(mo9-P_Q8TG6!O@xQVD7wdmRXg^M*@rV87>`Pp!#B9sx0zC^9M%h)@ zG0$cZLm6Od4PpPk@GnLtMt@2sh!tK8l3BbrgW8!aMbZ{AhfdLbbgxEfjs$q_X>L=;hzpz$=(hGx-_IZ+Dt?8223YLlhItS>+1<70J~M zxx#*PnH;c#hC%ABkS`k9J06>3EK$1(e2gmO%m}i5ReVP!k-#c43S+LJQV;?OF*!Dh z>t(%3@>hWU0oeZKe8+eyiI+UL)jr$KtUfARx3fQl8aq~ zTOHB;Ixw&mIUw7=9{=dY4Ng~+&7+a<-iIHyPF;xPV{b;!2&MajC0S78YzyQNuibRZZQzaSXu=$^xcFlx zjI+^`CgT5T^k=BC$m{=*4d8#P@MvB2i_!$q&-iW5c zJ&FRA#x&9;6%Viis^lXYB=WcVh=0ATN8bPD?!SxvH4c&fYnv$=N|cJ|Usl)C=(j|b zk6_#nglr0mi-cKb|52v@NU48bBTDGuuQ81xbIig8NFQ^r^=F))`gXS&4eb^+CS}$azG{5e0C)KVxa`7=bxo;#_{Ic|{mWCSdB1;XFoOx!O7nyp|;ANhI(|Vv>yL zHTeNZviDhU%!>-xd*(mAjpUBZ!2{g-1NQRU??JHLiOIs4mu!2nTZ!yA(Ius{y_KYw z>Tc}nc3Krt0!r^*Mv~Njm}td3|24Slb#2{nRsLTh05RiwR6|GKSnzAG_pf_M=(&SG z-=kz-YHE_bLJ|LV;Jz6ZS3}}UrtnefA1G`h0={wQE?Y!VKuQ`F!@x?6NE!p1fCx+= zk)B9VxQ_J;$Oj2Kk>*P6Hne{I`r30Zyo~$5&%wVMGeA(=%&Jks0LaV4kQ?&xXJ5El zA(bV|yzkVhgZ+EuO4~?7&ZEnT(vBTv85x`lBCIiu2~8+dZi@L4!M@OhaIGlRt;`Z7 zYjZO*?6j#T+goqHV_T`&k-M+jJ{P8d+d~jnB+`XEBnCJSEx9Arh>D>@hf{nYlS!r@ zBMVUhCq!mgyKX02`}QZ(IFwIxPe~z|*hu`H5K%~Se30dly>3Xj`%Mz3zEC37EiBbdL_j$ZcqbmKDZ91yCWAw6zSBxLI5ne z0Fn)40vstGvLcsIVFu%VJ6`;u8^x!-{8C)|QgG-RGUNiN<_{AA_<8R|m~Q==vn=k&aY_pc{v3rRjEz})3~Z3XeG zZ3lm{ZA7Bq{rFSs*#n*dr|tv%s&`%3)4q1M#K4ayy_3|OR^q3X*qMA|MOV)$MDY$f2`hMttfEPkFmpR zH`O__UoN+BzL`*$OZ;PwE5ug~2IQ7M@Yutanw|u{aJ$+6%A9EmeBhGk_ag_x7r0d$ zK`gSu{T8m5u3LUiw#~kM!$^UM_#qn83$s9%fRp_L!hKd~46Y5!yDYO9>W#gWGcI8|K8=x!F)U1dZ z(yf1`W#zP|DFtFsYFVR?XIL2F#HNHM8$_g9Qu7Jc`Q&G;%hcB_ui{B-HvCx{|E{Lz z74;v6f9->i4EP<~|6u4B`=uWL;{AwDZf1GCnR4Id3XAG}H3L7EP|iqd1-QnPN z0{Zu4NL44!T4Up;e`Ay8ueVbm(;rW$Wx{Pg+nGz(TWT&fpon@rtD>IMDJy2qk34%s zh{}XTAu=kos;n^27#<(;Djr5-=0Yo|+(&aN}Y&8)$z7TmpMuiyXQ>&STp@DD{NWx7!AKX&2- zd-s!nyBfi2%IB*Q12P4+lL2`CYbg$$80YmulWh zRBi*N$*T3$_UTt&+pBN=!(MsgEqm{uAKACxueD8N5w;_~)Ui~@v4;Oq$+9b3mYU}~ zB?4sS>-Sdg1^&<^=(Sq17Y{!9q@^MDQEat zgwil`khLFsKZ)#hM7EeUamttUDnG-lgQu(j3X?_+Q{27s_an>{{6oNByz)(As8#DQ z+LC)*0`0=3^jcnNDT77#r6`}weU=jgMEe!-ck935uNhLB;+ze?Zt1n#T|0gmk-Re0 zy=eTL8-Us$rf3`@LDW1$fPX1-`V_UBNO8a<$Ua9y-!k^jy>MCYwgoR7w%cCVVg;@G zfPH!pp{gkAaRsyPcA)M9{Hy0zvjs%|r)Wcu)1R=Uv`!Y^fCv?ZA2ICvxU^O_@bp`4 z>}{KD0GXR|>U*a@R%0JmA7tA0emit{r>$DM%1TF!vj*^ri?&Z$CgIHAJAafoSFKJC z)EvUS@7nQnp4sW}Wh1M84gbQ1TYR?5PH|NKtunDv4M}*ua?N5%UaMr^6&hd;tLQ+{ zX!$6=Gxfo_ zlXJYUn$J|xg6f<^`SHOgpIO^BZDDIYj_BS0V~tZ=+aP+;httYZb;C{@bnfHKgrp#( zpf6Fs1y*(Cx9mM;g0PQ=P{h*yl+~6z^aWJtbF>7_r*D*biodXj*h@tJep}iPmHx9o zaR0^mA4H_p_p80qkm8B>=4JHYo@)s`rd#8#S3_Si-*PI&`H$+aVjk#-Ma+z14oDdO zeR#mBe_Dp}7}J_D=`Kw3YR1gc|GSWus0BpocwCC>uaJOh^3?Y$S3q^bWkm4G$f8!< zKuzVHTW#i3wRZ1^d+eoe4%%Da{A9O3^qOU6=it^c>#|WaGyi5l`$ww~|36rtg?y=` zPzZ)X8*;(FES|ZTiOdE{AQIc4X_Vzb(K2S%D>mxx9oF|2vV6B5unV84vwvap?O@+; z!`)w9z0O8VngX3nH0~uPJNiy$tXy+p%3m*CD`8($Uc$cW_MPs>25<#H)bux}{$I7f z!iV&~{#XB}rO)z@b=2R4d*>d=MPR9?pjGoiText6wQJLcDdfs}p-aJ|>i4}|@}K9! z2fz5)y3go;xh#r;efaOszz^mxnA!}EoDAS`kkJq7_EwYO>)yLJeI7*7Ip0M6X6bv} z{y1EIWkMC@(^0=sZjff#NiOOfjy;c{&QPC2_<-M$mK0|bPMu=!toYP6?c8e%ue*Vw zAG#Vj*J!Tyv{NQq4W@n_MR!}I^M!k17L3+_)h(FowH#foK6tO@{5NovDPMU>yy8n6M|8f!~bn z$CE`li(31|&+o9OSL~%x{V=ZL&-RZGzqX4nnN6=uK7IJ`Yp_2WHB7L!C5yQB`=DH; zSP=Y6&WxsLaO%SC*0%cv*k`fW3eZ9~PGZK-X;k*CvGQev2f+T&+Yi`zk8h=Y>nGcF zV83mLy6>wEbvF9cvuSaPX66leB-5;ZA7RF0)ni!tIX6AAzDZxYUk&@-{ci#OTT%mD zn49AK1L5D>d_MH!pX(@EJh%8R>yahlb^*P%AKM%XXvRgq613>}OAU&36y zY>|8cpR%dDck2>ra|<%?s_|78UfKO>u%Hh2ZB+8S{Knfhjwss#_R$V?eyOz#Zl|!ye-{GEf2h&=xoz^dp_hXOJ``-Sq=JVF> z-0!lRt0+DkJ8q0|c_ZL#KjApUQC2tWI^_WyLZDycB8SZ-$xm@gDXOa!l{FA`rjm7y z1M16jvD$VxV?Cn}fq(gO%zqmH8>Mk+0x|C|OX&9h=C!{L{-KfIN46l_liRE0Xe6sC zu37}qz?4>HmIlLLJYpb*R)&PZvl!Jvbdb@n=@bTJj8H@%Tm(=IIFgQGYJgKFEVeEe ze8}jn8cR6o5^Fx_CRjQ#*Kx}=a#aj}Lm8zm=B~4s?XhJq|77p1{*SHOg=@EezkT-g zcQ#}8^(5XpQfmuE3~*@7`V)|D64%B`&VJr?5BKLjsAgCrZ6}fq7ujnt^(hY2s^Ec z%`{fWsb&YCKz$3oDz+G=Ms0&?9XbO4Sl}NX_E7jk5m1>#;pb5Q z-MW6bGg2>UMDE8;9AmwDbqz!!;w3d+W>P4`K_+U>ylaRA9>Be)0FRp6jk`(Ek%)B* zxQdoXkxCb>Bj&$aOvHMqcB&>sI@KO2=GTbGc#BQ%YU!OR z3hqr3*0111Qct^{yRu=c~KylONc3+~du-Vym}ovD+TJmoa_ap&O&s7M8!56WRAC zHn8JQgr%J^tbI?vA2xukF7&4Y;QO+#?opW8- z>=2G;J-prC{_cS7Bm*Q?*R|Vs+NIO4q`i)4E}3%u^) zJjoDLJN%>ad0dBCum#*}DQlpNp01IWFDwjP1wtD9R$ar5l5L^oqWk)M%m}^j#W&x9 z?SwuB&bcA-|9IqV6DF0kEIHG%aeov0Ek>VTZ}Fw~Q0V@Kb-HMc4Q6C)$vh^ITv^NG z?G(E5T&-o`ztgl;bp1bP>9ijg^jbhjgSJ|CACBxL?J2UxzkT*EjP+9{quYb*>$t=O zYu2haJyR{|tr6pI11K5QhsFFKrobc?4YkCs=ULOPm%$o+xux`nix81Y$+wJBz_uBh}-DH05_z$vv?+#o3 z_8V3?Zk)xE$!V$#F8d~uLiI+3U!#)RTDy|jQ~`WJ$exJ{e4auE!?C>v;y#qpG%$49 zJG`$on2jJy*c9DgK|%I+R?Z0Qikp72Q}5qq%fH!gJLompedr)_diGJcy3mp!r3$bU z?AfF7qt}%23fz6q%jNN}o*&QDp>Tk=0ra}l`|NMmUxg0!xIgwNRuNaA#vZx$y2Z9- z*G^i|573TER&F=@mwhYtjh&qL{SQ2VE{(#yK7#+F&o{vPv9GD6UiiQ8qKhcNKa8EF zaJTSJQ4YFay*z8d!VhZQhw*3XX{WfN881`9-HUXtS997MHMK~#j;0qlVk6uhF`W1? zfc`gND98Tcd__Z`^HQ241^4Nki_fw1FFl`$N6A!J5K2G>#BrTFb?NBZfmc^=#?(h9 zktUFfu0rHZgy?Ho3J0oS*`)*=mV#5QN2l`H28*)NRWO1;l zcRcxh8$9QL^_WG`I<2K`r>tOp+ViyjFQ+J-2@8>_*p#|o3M26wL*Wwk6!`yb!+(u_ z0srwa5wQDY6RJ4Ha{HWXan1XZ4v2BGT<&&L7@IX^rBOzENZ7_%T#vIE1A74zqpomF zA^BCXvsW?3eFT%6Ml6IdYysnfZ?is^e9fFKLVQ&3lrJK)cgr?gynK&+xaNTEfDvln zp*=3__U7lG+ZmUhV;PLUYjPsGSFSECzD?2n(Xlz!ve%h5;Jmjf^rzLIqTvDf4ufwX zoCw9Mo8ChzVbsiR*1Y31LUv6po&6ON4;|!r4}yDD0UWgR?ys>|zTWMy|MSm#ar^h# z!kd>-P)H>Sdf)GJ9goIN;MOY4UmxPf)z@R+uB-hndss9d9{>8AbfM(yui?M`d$c!r zuW&JX%t(9ty?04pZKWp_rWx?52AK`mDX&qnGrFqE6_SOY@Bj3;{yU`qVf0=^As%Yg zx%;wxmHC&>Trcc{i?w{;2IxOVLxCF!_2;pltNf^q0LQS;Z%s&uvT0|ZZa2b5*tskI4MloEYd-c0g~X*pO6~r?KVqw> z!jX-yb6khak{k%^7YdZYx^TTNw3NM+M3Y1+=5MnOQ{Q1m;vE*-YY`PPH&|LJRdFTPxRK!{=dYw- zb)R*+0^NUMo#hXI$8!2UYt08fWQ83FqcJlu6}kuQhd&bjb#GO<7EjT6lQ_cFg#6M5 z&$og~Mt*mzVjOA#J|HP`@dE?fQGTD$g|>#SA5N!I8% zKATFes3w0#-@`N=k!HE=#@fJ>U$D^>2Ww1dZ~Uu1r1u9y%~6Ukp$Q*icOOL>us5t@ zk)$uO@J%&xJHOim8+Ti^4W(J@ya#sJt6%J<$?ZS(6Sl^IgL~|r2OqNJ%siUL0{tGo z&yQe6K3YS^#^rF0zptZozsJ7zxt44I`N8V_m0c_bFTE~ZA5`uIkG<{>{|@a7*$P3E z8k3W9GHvXHarQ6dVjcef+S)pscJ8^BP3S(BRG_2o;ogOxv)9kz$MC<)9@kWWi!Zy7 zvEd)uKfhdQD}P)Ewl>)crGp3B(pzq|kH7o|p8&dHFf4yyJ+{$0Y?lE4$Ohy?(7P`kk8EQp<)`D? z?fdMVPrk54G%NM#Lxm~#E2@#Gg{bOde@9Z$6G7al+ql0%-@7ZAG)E&zC9HFp0h-ynkaoFRis67xK50R}k}KlrW=y3;HohF`tQnRGf){Eft^X zkA#2rUw!(|*=tZB<#wCGq{4-a`K7OaG;*K}JHL59C|6Xyq?9z*Nwm97(U}>YEUn{M zsKQTYg5%jtl)1!G$>(RF|Ko=l|Y45_m)^+qfRzVX$pR0%$%sE7=K-GOT=)xE%diUYj z{G;gmKkbe>JL~4pEvZF`MUs|ILC3_US>w=T+Y_}6RF_a6Ic36V7aCA+_=`d7L! zAF3XO#@%P(udDIaWB=HrQuFf9U93U=Fsmssz>6=xgtCN#w)~}+2*oE7az}sidJM5C z*Yt9X4Djb4e)RIdG4J8iB@w5~!vD@MYGy6lwz3ZB-ERGRTS+AoEGA8|sb`*L=be9^ zwI=nbB7gt?I{MF5{8KVeOLmd>e>CBsFqilU)JKv5N3Mb5mO&YT(i&R+b5+UMkeE|9 zQjO2Q{EFQR182t$C$Z1eY~8?8`M)G&K{9c{w#CJE^5n@-l-+F0U#HaP(-rn5O?+!9 z^;rkW@H%WH*-2WfX+V7c)6ebM*WR#euD{VnPnc-MMFmctCpA5em?o(mY<;Co8T)31tP!Hgi4t}1v+Qm_k}LKl|OvcIMGIK^Ta84yXS zUDCiAmOf;*^*L*qJ^4|ceN!hJlUUm!aI{{6NSm-?v}U$%ngt#J1QeM~Y6#HCWh zx3?gx=c)0L&dgVc--r1Heeb?`lV6#CnFV@}H~$5VG|b!oJNPTa7Ki{>DTruM4_ohE z-Rz@}KelP7o{CAsx$+)`C1ZiHhvNTs^e|JeqB8fchnQ@yGdVC#98(~lrx1k9@>o?J zIg^F=yX|@es{XqK{}%b#z(3QaLQ)ujBR5A3hbak|Ub&E;5*qL#K;j|jyFc<-swi+` zfZvpe$k)j5R&7qQN1l3?i3(rZd5FH;JO%@D9V8l4I6pD4ixNbPh#6@Rq88*@*RCCH zP)UC)8$QH_l$TQUTVf@pgRDo7ZjRa~DLIjp7OI6k7Om2rz2Wp-m&4%160To%)y_zE=WNLgJEeI5Tu@Q>r3H;QHGSJzXh_`Al^MqEdF zZ!uLqRQ{>|Zvs_-xw4Y`vm;+bd z^bBDbs<6Ob4ZUM8zxywnblRzKdMDWN$HVOo4|t;n3~iFx#do(anP%f>{lkXOsj5ZS1|ppqMqIWDyK zKBA}fKR?^9pAXw^RfHWPRCMToz4?z*xj|ltC^RtkT8C(YqF;Z%iPzOBtsY$p(*`!EG z2`CMcpOfrN1oiA|xk@GEk?=1wCY@`OjB6=3JcVf**DhOTKWyJ(FTVe_jXQ0MW$`^? z>lFQ0d^G8q*b|U7N|)-INgk4}<^IQVzLB_&5rh(TR27k9XXN^7uu-(smb>4$`SH!H zxbqYncJ3=yN!q9qH*y$w7f*$T!m4jocppT1d9Yq5 zE}dp=PhMuNPFrp*&-{!kt6-R4>HMIwZ#eR}68@ke*V5!e8gKg3b@nlhI_gKi^S=8b zZfEG2_5t_5JNn>(#~-!7Kl`*jw)`1;Y^ax2`BLI0TjC60`sGA{_Rrcm6Bc>M0HvTazN?+VU(8)qmiX- z9y$n{v~1=&>pb#r48N-)Jf1^}kCYkrG#Ohat`WQk$*mYZKEYacJRLbiwUfK==uB)G zEy)1(+6qcNeuv)wMlSuYbMp9)V(4#nH}F4D_-D9x2>(juXOFxESKt=M^x0zkA}g%C z)Dqeb0`n;}KA|s>$&u{u<4GGvWHh(JE<^2sXI{0Xx8H7^JGUpS+t5xpfvUX*RMs)8 zMfOl?PQEqoKi-N773Pe(m1^Ri*71_>Y%rD7;_VtrW&aQccb5}}83x0uC>EzK z+iidUbg%tDRoD-kw_)>@W80}*K{g4$2OX43WodE(E_ysNI4+uTIdSf>^nvz7a4(MF zDF{&oa#^}juDr1Cb-zD)8KBUA5$ zav-aY==9*613iD#V_^gQ3tO&ZhtClHBM7Z@?A*cDZrDHyMAdUjD`<$teje{7thS3m zp|!S>>eojfe;oTdng0*|SNPX=IQ(;;o00l&LCVkLU%xw_L8ck0Tyt=r%r$pMn2fV% zgmf(DgbRx(kx-~4I5*iA$S3(F>_hnjt^pGKM`Bk-<9kh@0{DyXzoXMf>B*mL)rMMI z{@R;%;bm7?5_Y6yz6Q=VM$g8^q=G-6#trUm_;pQ?EzbKjp-D`wC*pp_VKx zOv~X}Ol&W0)0{!KF5wCEO3W5#4{&e!J$`o%VT+xgvH=bar;xYtV_AGrxIAI zR@E_BfxZvl6GyNZ$PV2brR{}pVO}LYO6h6O`q%y6gny53$pP(gEj9>@hV z;slYsukStfJOUf!2)_Mue~$inaFnc)ZVxRm>8kQ&W5~B>IU7^h3gN#gsg-GGon_le z_id$_R$=mL(tg!+{srZ8RMk^{CEmW5=%Pzbp{os@EZGr`fBAg{xyZ+m{y+8_q$k6D zqj&&IL(9clo<&JOu}c@oUr2Y?ROjdPAlF=efUxiIuk+;^$zIk#-m+ms=*Ias<%&O1 zu0hi<Kff;_eYip5(*k>+&p7%Tlb*##h=a5tk}?ccAKk%H~*2$a* zIOrPFiF(|LiPj{w14DAIw1G1|upXyIB~xma^(45o^j@2>yNq2G=#xq`t* zzYG4^fA!4&Zh8gfz8?Q6r1LY-|LW#RWu*}VC>VdOCBuD|*z-K5V=f`hzr>2^0%$V| z7Vw^9nA4VHCt%k%By8IVKe92n*R+KQY^@WqjhgcJyiSAcq><-X@#MLdIBt=}5?{z* zm~;CxUqSxXy4Z^*1`fTJVL+4(NbgrbtvrOsLvJ{2r`^5PURViLt4h|kZX-oDkr)ng z2U{{0yE2aNmYx!Gyr`qKRH~}wo^w7PN5}3D+5L*``7R#qQyW=;4ph29OuqI_I`5csPp#kala8?CkCHg%gKQ- z8E~XCPaQeP8+2Yeaj>VCKTp~(pIEd*551u4eLXp+&{~8646j)oO?p7h{i78t(l45dJ+$imqLP z^Ebdex+*3D|AhZbCFT&_G{aH~r&_Dw&oexF4}6d{R#Bi=)hh};CqN2;=e{TYA|5NDrb@(4k8i11CG+6%gnC+KUKGTwWpKGnE z;03HACRn93;Zkck_F8MnfUvm29`c1JP=Up8 zg)m$I5mGq$5$k#7N>n`5dkhH}4)hh;FDKhF99O@B%xgKcT!McU6@S;gwAH@fd5Fs0 zgZAnhZ(3$%x>HdK=_)*|Y_V>66wf1%S$a(-<}bltp>etVGW(_S74DO|SEx_W*WbJd z@L9h9$^7@Q(9xR%f<{Y*VT-w2)$ShpeybmWcA&cc_vaxM&+iI1{~h!t_GDTk3O)R% zPMK&Mw$xEgr%FpIe8`}0paO0q;aN4niOt*5dy@UX;Npv1h}2i^c=umsyDFL$*7v_l z$73Jsc_wCm63spFn3iJbmzn7srM-yFp+Z9DnokADJ(COVmt1>QI_U3h+O@VvpMM^6 z<&gd3vo9Gep6ks2DAajMY91zbGGPV2%eg8?)W6#ggaTs~{^z~o=}{&-1y!Z2Vr0`l zThq8y%WQY4wVTMmX{vYoo%tpsA4ggWGY8X}mp~KO4B9_9V@Oem`=>#pBumK~U|ng1 ztC;hVRb0Q#O4zG{{!l`Mt*3r((KP=i40+6QI!;G5CGtCtsDEenaNmAU^PhcpME!G3 zqA;B@I!&UgX}+aa!S_QYZw_2uIaKqC|05HQ4_DnkVxFZ8I0tT%nRNMx|3}UKORd#} z>#gHBDuO$ef%!yh5S3`jg`KTc$y960>-nS*(#I?$t9ZSokNm5(o%SB4)pmG4gn38+ zbi~~kFGvMh)=CC{Rbd7={FCxKg$|+DRvm!9g~iaQv(LQ{&Zj_~>)Ix9JykKHZWXz$ zM=iI9Fe~fT!qMipQf|Vy%zRb#XbJBg|9Y$?6G85P_OB0X9c%I*i-*8Xz&)lBFda@X z$)9LvrUd8kzvKK@T{0q)(0>fwT52i|5C7?YtLvg_SSej(&A~pz5mA5Uwc~iNOhTT=98Yx% zpP$g0!ShS4+nH+!2a} z^`|0DX#=IH1{1QD`cEB#=|ALA@G!$w%g7}4=KmiB|GM7N50cGM+@q-E982$1X$4iY z(9vKUB9A=W{agloWgrLA!Mn_Y)L}E}{-M%`!C)D5`-mSb4-=qh++xB4S2ON-n&l2X z2i(Jd#?Y{QXhbDXlBg!goAS8zyqpjp)jR`9ttgzT;eQ&)H(Yw3u-|a5<#57&Rq%I> zVgOg^^#|eR+DFCuL8|r-z{|CQG+%SVs==O-+wTV3=za?a?!E_Rq&KBCc*^U3fAsHD z+DfTwb>{h_f2`+zsZvt9TWP^&q_jNt!!ch>+Pk=bw4pnq8wr2s;QmT)YG1oO9y&kQ z5vKFi>&PHC7)<(*-{aq>V~{>P`uu~^1zzK=?x*Q(JY_43`8ooqHszyx_wQ?Oz4snP zMC$RU5soD;49D?<_rIA8ike|m0K5}^97X<;DZo=PvS&9ARH{y?fh+D;ag)TFqJ1ez z6t=Qt@oPG9AtOrtQ8UW&FsV|BdL+kF84yolBcdW`98jTfP%NyXNmU<2;=wtlUVS&u zRSe~doaD9f+vFu=XQkQbQ5ASI6j!6p^>=x9@_@7jB>q(7tfRb_fs8Qz^4m3b_x%sS z97^Vz_liAS*#@yVt2jrEE)9uDM`aCWmgO_n_55nQfS;^n_9kmrNyAT@an^C*nKt60 zr(yW7u}P@F>C6#qch;+LDAc-M{|X|ha-d(o5Cs)P0Y}g*IO?{&_T-oFbI_;1jS8Mw^A=;Cs+vN3G$aBze{V{MAM4>C zdS5uK^jPne`1`fxn{{mQtvhfpiuKKdL_Xx_zFQ#mnkS3 z5S@YQn+5H3iXV~*@cJbY(2UCxE&{wL$RqffuZhRaQruWn^$oaQ0lcCXFs5p{u`Ypr zzF&g8zg_jWR1iPrR{Fo`y-v#lXVvuP=4RUquf1ip^p&pLzS~Zxrm+c-cbA-NrY#h$ zURMH$k^J7jG>x~+j#I7Q1@BXMRtu!5D~DcU-1Xb-nNKmPg0=`@P`zfR578X$jF->ayhH z-7$dg5t!>91iwAFAL0M+AL~8g@YiD%1!=HPp;TSS^ZhUQqxp+ShNYtxHB`Zid;htv z#-F{Qptpk1QCOlPt9MJu6CR6Nt`S8nC(`rW5a!`Vc&|DJi+WXpo&g(YfPY!aIYdMH z4d`cA&7I4PtxxEY-B03-I(WQ&^}Bie>nQ4*V5w*BpnKnw&pwAbhx$bxlvJ+F3aKsd zuf3a|7)kIG%bg|s3+t(P14*cM1^IQ9Owj8d_mTx#3jP;hF{w8&FDt=4mJD#c!{A>s zK%-6L5tYKflLb15&^`8hRp+7W=wyqK8d>_o)-uyby*vv04(li!MJrvMErRLN*D%8qBRYGVB$ ziUdcI92kA^_tt9A5{t|~*#=zx6_Kj{IQ&QVd)`t@o+Y6^!x}V9`@`VhQ-AS$UGYyK zi;#g7UPVU4U=m>olgv+zBe=}HXc`&ghJvNG>|sR%r&`g78AJpWAy{mQ!>_Z1$|aUq zCDQ<=@DZ2_k^zhh&A@X=fda7L)F&C@vj+7}@?<_H715PJ6i;YgU)8K#HvFpn&I53k zzpVeTRmS6T2CO{(=}*wP9iV6Jpxu1WgWOx@sL50$TBQ3Hz88ei!W?;*>e0!n54H=p z9?Qq7`Y?GME}PwB|34o4Ix2WC^VdiDyd2Q;V!e*VpGnb=5@kxj>pZn*^*vJiKG{X$ zmjE(4TL}|-9vf4{5KqxUaf?Fh-LI#WR}HswF1*ODf(v8DoVj+z%vpBHmDBC~OD=V~ zeFOzNu27fH&O2692s6-8N6kQJ%O z3Pn;JZK?_WsOIcRKYxCT)%f3mbzt?aH>zp*8+@3X0QZL-Q6BnJ*q z1V|wuk*QMnYev!^&}YmGmY7;bzkGM=ee$DLiCiefHE4C(N{i|DB7JnrEvNfc)VGtA zl)Q1*G1v#8J@=dIe^33zxzzXmC_)k!mq^h(WltqjP@5J_!4~I! zB2m4lyv~-{Yog_q&#;V&MI;KYwS>S->ENKVw*`;Jopwj=9`Z=3j2}+<=9f^|9zLOtfP4U;6D2SE{wtD z!?8~p1f~9$(Dl^O?+NLA6{ZXST0YSx+rwjit zTYAY0mJ9wHHcrK!3Vwsm*XsiI;ct$A@BVWR_4t>48X1>D!O}F6mh&iDILngS^sy6D z3(0y!h3r(qFI?Nkgh?7jC0KN3OUvw1VMS%q9{%M9I<{r}(iA4wt5y&q~6z1a8<+e0tD zVX5feD0IJUI9*5KS4Zs&;aW3rrT4Xje-+$#{CXLn_xb<*|AK%0zubR)hmzb*--G#Z z{h#N0UbSySnK!OkP@F3)N#Brw2J?-PUpbuLh4kXS_1*`zaf|pqgmrKW*4_ARo+~o% zIBM9((&K)K_v(``zdk!{}fi9alYc82l2KdnXUQ2JRAFLz(49A7T{~y6VK7jk| zL-z1fPcWZ0mHt;}7ArF5*oDL3ufS&pYCb2Ox-N-;F!&3yGWWCin^W7kJU$vI=u4d^ z0&_1ub<}0lN+P(bDd=gm4~M%AdYnT2pNF>-MIkZZU;Cw_27X+0$t6}p8?#!3^>Y>R z)T~m~JJn+9y#D@smeWiuvVp0i_RlyH0@^~+)TwBWXj*oH-Tl}Dj&kJV4TtQnZ|}A< zmTe|cT}NBsetLrF2cRB(DAWLz)TO9Kt%Ui1CD2T?KK(0;>HCUhl)Old;A~nO|Jd-C zn2kW?CwD)?;)l}j19eY}aq}#{;!0kdXiaiD+X+$0(4k2s5M?F0s#IoGZ5ekuEyk+z;eIIs7KlX$Bdd&MA8*eBw=tYOb ziQJ1o-4g-`nE}bxFLVgbR4*EZlP=C={v@GVj%DhITa?VPiDY+21{ecRWxO8=u z?3Gm2LK4n%<~_e#u22DCJuRtw$pNqWg>5b2{8;?!xn7rS&`Og#K+i>ysMYBADS`?{ zp&WmIb&vHpc#e!h?5XfWN9_fohn+fhvM;_~<%rECHC5M84g6hwgDxj)Gttm1X3xU& z;wKUTNFbjd3;d%f57tbX7@`5vbj?m`Z_mE<566VIs%F2v@Wla}@hAkbOLnlucU##F zlnAnw#{&B**eC`uNMa!5;LiH*`?@6$ddaeYf1{=<{ns`PG?p%G26_L?(airDf14}&%P%?0Qd-cdADcqtiCkzyk~KsM z6g`cgb6O)2lMDM;|5I;Z&dN_oM`EAjw5NE7)3k9D4;z8aajq$e|f0J zNATAmfN_Y`5=B>;19Hc!baSK0wjKW2-umbxM0PVYr{JXRscoR!9xQ2Fk;S*bgA_FL zfno~kN~|V{FdHR?pdQELi6>9C7hiwPTDNKCtTJ~U1bZNx%<}M;C#n17Ed)Il{Ixv= z`+`Dh0QjyVARx~*o9`E~eGL04o_&>sDiUL6oFaQzEK)a#iSaNE&agF`Y8XsGzMVZP zBI|IiEKA*4>xh6OQ97~TQL`f$^LH^`RAZfv8w(SV#Bsyp9DCi`jnwy$BbD~oOf8Y* z2NnaO1^7E_Lh5kOUi;f)k6K~#A}og^o^|*h_4^}izq;!ob&){po$7l6%SR>8z_x&P zDH4P73M3jN2Bi80f5AK43On|3GWSK|KvCNQmi(+sK=<2;f7F0x zk0sMq<;H!=G@#w~_B-#Rycvt%i96Uq!26FO8BmQE@FUk?1LH-%T=S!K?$QCqF=_#1 zm9doVaHA3VEO`-)@Tl6rLbm+vH(?*!Z(nWw$^NlDSFSBb9}w4xO; z$ZliJ`<`Px8L>HZUJW&Tl<XaGqoC%9 zbL4)j7Da4#+OMiz(f+)8{(P8scRBA}t&3aOtKpWpkID(>TF2sFGC-#6dj7TzujqpF zVPTUu1pZsKEVeIUQxc1(SaR!G@Guu7PquI^H3()~&u|&w%78=o&!P3X9{*e$k9l23j{|qj*+&oVK<_xIyM?& zN??jLfr>7*WjX;6wsP{H*YMKW*{kS~KEQ00>%P`&2K z9gxuB^#A9OeFRBW^Oh|s^;1Gx9!LOvmAOhCNHs`Bs54KU_xZp-O#vsioJ5-fml41) zB{R)VJ?Ctu)>q>gAFvNTUtwK)_p(U5g9v#LA-D_v3G53m5ciph z|K_@ObZvnD4L4jD1QbYy=H+DA2cN9~_J|E7{Mi4F*qgxD7J?`1w$vi}9I8Ip7Wb@ZB(ix)t(dTf|m6!FUSY|6%h#c{&gMwH4KM)_-lHs zzp1{$!(S%A(eP(37$%SFb|TTQ4wFpAd%pDg8!qv&h2QO`i#zjQ_~%+n7Kj*79*|}R zt*foG@(~*AiTT85_&O2E19`V9BTYnYs1z#$k$>sj+4dzQgf%2f*C1kFt3G5`FW+So zZ`_Xe3b8yvtN~Z7x9owBllXtyQieTd**&MjLJ;6z*EfWFfBZwJe+8r>W0NhT%Ot1% zQ|SE9V1joJ*v}n*D=q+YJjN}vl(Baq50+Uop686a({d&}Y9+J&Wo1{qN*DFjme!&a zvh;Myqa*Mp=^UXmN;Ab`n24N{)yCQnI^PCe@Ek<|o1BUts4nZd5UbH`IfBSQ8NtH7 zlunLWveRDp6p}Ck{#$?AXV)xV>|6~6(PHI6qwaini`0Qszc1NWk~xnelVk$WNfdNA z^^M7X`q`)3v#-A5NF+BB8QO$7SF`s3#RSxaJ$Rpu7+v8y&79}X-j0_HV1@5lF9*^o z;msqtUrO5Q2*)G>J=bHw-k_R827sx=7@+n!P3b zdz^c)z$AhB6YqY?Ek|4blCSYKu5ht`z63XGJs+csrYP?`s)5YHtDZu zfCBk4|J}Vf=9&uc;n[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�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 and `AbstractPolylineEncoder` classes and implement abstract methods that are mainly responsible for extracting data from your coordinate and polyline types and creating new instances of them. + +In some cases you may want to implement your own decoder and encoder from scratch. In that case you can use `PolylineEncoding` static class that offers static methods for encoding and decoding polyline segments. \ No newline at end of file diff --git a/api-reference/media/polyline-algorithm-50x46.png b/api-reference/media/polyline-algorithm-50x46.png new file mode 100644 index 0000000000000000000000000000000000000000..6e14d059850f8c0b0724f4b540c65d1b868946fd GIT binary patch literal 5385 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 p^UiP`9h3?RgB>gJn`?> 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

(na1a{c19R?f54CR(~Fk(-WYU~h6 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%0A2|*-U(tB55`UGl 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 mmYxuv=(P@ic` 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

Rqj>4&DcrBIB3QeTiB|TJ< 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 - - - Exe - net8.0 - enable - enable - - - - - - - - - - - diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/PolylineEncodingBenchmark.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/PolylineEncodingBenchmark.cs deleted file mode 100644 index 798fd3ae..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/PolylineEncodingBenchmark.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace DropoutCoder.PolylineAlgorithm.Benchmarks -{ - using BenchmarkDotNet.Attributes; - using BenchmarkDotNet.Engines; - using DropoutCoder.PolylineAlgorithm.Encoding; - - [MemoryDiagnoser] - [MarkdownExporter] - public class PolylineEncodingBenchmark - { - private Consumer _consumer = new Consumer(); - - [Params(10_000, 100_000, 1_000_000, Priority = 2)] - public int N; - - public IEnumerable<(double, double)> Coordinates; - - public PolylineEncoding Encoding { get; private set; } - - public string Polyline; - - [GlobalSetup] - public void Setup() - { - Encoding = new PolylineEncoding(); - Coordinates = new[] { (42.88895, -100.30630), (44.91513, 19.22495), (20.40244, 7.97495), (-15.52130, -63.74380), (-78.95116, -72.18130), (38.63072, 88.13120), (60.81071, 151.41245), (-58.20769, -173.43130), (59.40939, 83.91245), (-58.20769, 61.41245), (-20.86278, -119.99380), (34.10374, -150.93130), (-71.15367, 31.88120), (-72.04138, -153.74380), (-49.99635, -107.33755), (76.12614, 135.94370), (70.05664, 41.72495), (63.43879, -77.80630), (13.68456, -90.46255), (-75.90519, -7.49380), (74.71112, -127.02505), (-66.61109, 17.81870), (-49.08384, 37.50620) }; - Polyline = "}vwdGjafcRsvjKi}pxUhsrtCngtcAjjgzEdqvtLrscbKj}nr@wetlUc`nq]}_kfCyrfaK~wluUl`u}|@wa{lUmmuap@va{lU~oihCu||bF`|era@wsnnIjny{DxamaScqxza@dklDf{}kb@mtpeCavfzGqhx`Wyzzkm@jm`d@dba~Pppkg@h}pxU|rtnHp|flA|~xaPuykyN}fhv[h}pxUx~p}Ymx`sZih~iB{edwB"; - } - - [Benchmark] - public void Decode() => Encoding - .Decode(Polyline) - .Consume(_consumer); - - [Benchmark] - public void Encode() => Encoding - .Encode(Coordinates) - .Consume(_consumer); - } -} diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/Program.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/Program.cs deleted file mode 100644 index d6e3655e..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Benchmarks/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace DropoutCoder.PolylineAlgorithm.Benchmarks -{ - using BenchmarkDotNet.Running; - - internal class Program - { - static void Main(string[] args) - { - BenchmarkRunner - .Run(); - } - } -} diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Constants.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Constants.cs deleted file mode 100644 index 9854d042..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Constants.cs +++ /dev/null @@ -1,82 +0,0 @@ -// -// Copyright (c) Petr Šrámek. All rights reserved. -// Licensed under the MIT License. See LICENSE file in the project root for full license information. -// - -namespace DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks -{ - ///

- /// Defines global constant values - /// - internal static class Constants - { - #region Constants - - /// - /// Defines the coordinate precision - /// - public const double Precision = 1E5; - - /// - /// Defines the shift length - /// - public const int ShiftLength = 5; - - #endregion - - /// - /// Defines ASCII characters constant values - /// - internal static class ASCII - { - #region Constants - - /// - /// Defines the ASCII Question Mark - /// - public const int QuestionMark = 63; - - /// - /// Defines the ASCII Space - /// - public const int Space = 32; - - /// - /// Defines the ASCII Unit Separator - /// - public const int UnitSeparator = 31; - - #endregion - } - - /// - /// Defines coordinates constant values - /// - internal static class Coordinate - { - #region Constants - - /// - /// Defines the maximum value for latitude - /// - public const int MaxLatitude = 90; - - /// - /// Defines the maximum value for longitude - /// - public const int MaxLongitude = 180; - - /// - /// Defines the minimum value for latitude - /// - public const int MinLatitude = -MaxLatitude; - - /// - /// Defines the minimum value for longitude - /// - public const int MinLongitude = -MaxLongitude; - - #endregion - } - } -} diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DecodePerformanceBenchmark.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DecodePerformanceBenchmark.cs deleted file mode 100644 index 43289f5d..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DecodePerformanceBenchmark.cs +++ /dev/null @@ -1,200 +0,0 @@ -namespace DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks -{ - using BenchmarkDotNet.Attributes; - using BenchmarkDotNet.Engines; - using System; - - [MemoryDiagnoser] - public class DecodePerformanceBenchmark - { - private Consumer _consumer = new Consumer(); - public static IEnumerable<(int, char[])> Polylines() - { - yield return (1, "mz}lHssngJj`gqSnx~lEcovfTnms{Zdy~qQj_deI".ToCharArray()); - yield return (2, "}vwdGjafcRsvjKi}pxUhsrtCngtcAjjgzEdqvtLrscbKj}nr@wetlUc`nq]}_kfCyrfaK~wluUl`u}|@wa{lUmmuap@va{lU~oihCu||bF`|era@wsnnIjny{DxamaScqxza@dklDf{}kb@mtpeCavfzGqhx`Wyzzkm@jm`d@dba~Pppkg@h}pxU|rtnHp|flA|~xaPuykyN}fhv[h}pxUx~p}Ymx`sZih~iB{edwB".ToCharArray()); - yield return (3, "}adrJh}}cVazlw@uykyNhaqeE`vfzG_~kY}~`eTsr{~Cwn~aOty_g@thapJvvoqKxt{sStfahDmtvmIfmiqBhjq|HujpgComs{Z}dhdKcidPymnvBqmquE~qrfI`x{lPf|ftGn~}d_@q}saAurjmu@bwr_DxrfaK~{rO~bidPwfduXwlioFlpum@twvfFpmi~VzxcsOqyejYhh|i@pbnr[twvfF_ueUujvbSa_d~ZkcnjZla~f[pmquEebxo[j}nr@xnn|H{gyiKbh{yH`oenn@y{mpIrbd~EmipgH}fuov@hjqtTp|flAttvkFrym_d@|eyCwn~aOfvdNmeawM??{yxdUcidPca{}D_atqGenzcAlra{@trgWhn{aZ??tluqOgu~sH".ToCharArray()); - } - - [Benchmark(Baseline = true)] - [ArgumentsSource(nameof(Polylines))] - public void Decode_V1((int, char[]) arg) => V1.Decode(arg.Item2).Consume(_consumer); - - [Benchmark] - [ArgumentsSource(nameof(Polylines))] - public void Decode_V1_Parallel((int, char[]) arg) => Parallel.For(0, 100, (i) => V1.Decode(arg.Item2).Consume(_consumer)); - - [Benchmark] - [ArgumentsSource(nameof(Polylines))] - public void Decode_V2((int, char[]) arg) => V2.Decode(arg.Item2).Consume(_consumer); - - [Benchmark] - [ArgumentsSource(nameof(Polylines))] - public void Decode_V2_Parallel((int, char[]) arg) => Parallel.For(0, 100, (i) => V2.Decode(arg.Item2).Consume(_consumer)); - - private class V1 - { - public static IEnumerable<(double Latitude, double Longitude)> Decode(char[] polyline) - { - if (polyline is null || polyline.Length == 0) - { - throw new ArgumentException(nameof(polyline)); - } - - int index = 0; - int latitude = 0; - int longitude = 0; - - var result = new List<(double Latitude, double Longitude)>(); - - while (index < polyline.Length) - { - if (!TryCalculateNext(ref polyline, ref index, ref latitude)) - { - throw new InvalidOperationException(); - } - - if (!TryCalculateNext(ref polyline, ref index, ref longitude)) - { - throw new InvalidOperationException(); - } - - var coordinate = (GetDoubleRepresentation(latitude), GetDoubleRepresentation(longitude)); - - if (!CoordinateValidator.IsValid(coordinate)) - { - throw new InvalidOperationException(); - } - - result.Add(coordinate); - } - - return result; - } - - private static bool TryCalculateNext(ref char[] polyline, ref int index, ref int value) - { - int chunk; - int sum = 0; - int shifter = 0; - - do - { - chunk = polyline[index++] - Constants.ASCII.QuestionMark; - sum |= (chunk & Constants.ASCII.UnitSeparator) << shifter; - shifter += Constants.ShiftLength; - } while (chunk >= Constants.ASCII.Space && index < polyline.Length); - - if (index >= polyline.Length && chunk >= Constants.ASCII.Space) - return false; - - value += (sum & 1) == 1 ? ~(sum >> 1) : sum >> 1; - - return true; - } - - private static double GetDoubleRepresentation(int value) - { - return Convert.ToDouble(value) / Constants.Precision; - } - - public static class CoordinateValidator - { - public static bool IsValid((double Latitude, double Longitude) coordinate) - { - return IsValidLatitude(coordinate.Latitude) && IsValidLongitude(coordinate.Longitude); - } - - public static bool IsValidLatitude(double latitude) - { - return latitude >= Constants.Coordinate.MinLatitude && latitude <= Constants.Coordinate.MaxLatitude; - } - - public static bool IsValidLongitude(double longitude) - { - return longitude >= Constants.Coordinate.MinLongitude && longitude <= Constants.Coordinate.MaxLongitude; - } - } - } - - private class V2 - { - public static IEnumerable<(double Latitude, double Longitude)> Decode(char[] polyline) - { - if (polyline is null || polyline.Length == 0) - { - throw new ArgumentException(nameof(polyline)); - } - - int offset = 0; - int latitude = 0; - int longitude = 0; - - while (offset < polyline.Length) - { - if (!TryCalculateNext(ref polyline, ref offset, ref latitude)) - { - throw new InvalidOperationException(); - } - - if (!TryCalculateNext(ref polyline, ref offset, ref longitude)) - { - throw new InvalidOperationException(); - } - - var coordinate = (GetDoubleRepresentation(latitude), GetDoubleRepresentation(longitude)); - - if (!CoordinateValidator.IsValid(coordinate)) - { - throw new InvalidOperationException(); - } - - yield return (latitude, longitude); - } - } - - private static bool TryCalculateNext(ref char[] polyline, ref int offset, ref int value) - { - int chunk; - int sum = 0; - int shifter = 0; - - do - { - chunk = polyline[offset++] - Constants.ASCII.QuestionMark; - sum |= (chunk & Constants.ASCII.UnitSeparator) << shifter; - shifter += Constants.ShiftLength; - } while (chunk >= Constants.ASCII.Space && offset < polyline.Length); - - if (offset >= polyline.Length && chunk >= Constants.ASCII.Space) - return false; - - value += (sum & 1) == 1 ? ~(sum >> 1) : sum >> 1; - - return true; - } - - private static double GetDoubleRepresentation(int value) - { - return value / Constants.Precision; - } - - public static class CoordinateValidator - { - public static bool IsValid((double Latitude, double Longitude) coordinate) - { - return IsValidLatitude(coordinate.Latitude) && IsValidLongitude(coordinate.Longitude); - } - - public static bool IsValidLatitude(double latitude) - { - return latitude >= Constants.Coordinate.MinLatitude && latitude <= Constants.Coordinate.MaxLatitude; - } - - public static bool IsValidLongitude(double longitude) - { - return longitude >= Constants.Coordinate.MinLongitude && longitude <= Constants.Coordinate.MaxLongitude; - } - } - } - } -} diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks.csproj b/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks.csproj deleted file mode 100644 index d799ba3b..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - net8.0 - enable - enable - - - - - - - - - - - - diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/EncodePerformanceBenchmark.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/EncodePerformanceBenchmark.cs deleted file mode 100644 index d7a75e02..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/EncodePerformanceBenchmark.cs +++ /dev/null @@ -1,222 +0,0 @@ -namespace DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks -{ - using BenchmarkDotNet.Attributes; - using BenchmarkDotNet.Engines; - using Microsoft.Extensions.ObjectPool; - using System.Collections.Generic; - using System.Text; - - [MemoryDiagnoser] - public class EncodePerformanceBenchmark - { - private Consumer _consumer = new Consumer(); - - public IEnumerable<(int, IEnumerable<(double, double)>)> Coordinates() - { - yield return (1, new[] { (49.47383, 59.06250), (-58.37407, 25.31250), (52.99363, -120.93750), (-44.49024, -174.37500) }); - yield return (2, new[] { (42.88895, -100.30630), (44.91513, 19.22495), (20.40244, 7.97495), (-15.52130, -63.74380), (-78.95116, -72.18130), (38.63072, 88.13120), (60.81071, 151.41245), (-58.20769, -173.43130), (59.40939, 83.91245), (-58.20769, 61.41245), (-20.86278, -119.99380), (34.10374, -150.93130), (-71.15367, 31.88120), (-72.04138, -153.74380), (-49.99635, -107.33755), (76.12614, 135.94370), (70.05664, 41.72495), (63.43879, -77.80630), (13.68456, -90.46255), (-75.90519, -7.49380), (74.71112, -127.02505), (-66.61109, 17.81870), (-49.08384, 37.50620) }); - yield return (3, new[] { (60.81071, -121.40005), (70.05664, -38.43130), (37.52379, -84.83755), (41.85003, 26.25620), (68.04709, 110.63120), (61.48922, 50.16245), (-4.46018, -58.11880), (-32.16061, -3.27505), (-50.89185, -55.30630), (-28.52070, 90.94370), (35.26009, 93.75620), (54.83622, 128.91245), (1.16022, 37.50620), (-44.26398, -131.24380), (-33.34325, 154.22495), (-59.65879, 90.94370), (-62.38215, 0.94370), (72.32117, 40.31870), (64.66910, 2.34995), (-61.04971, -84.83755), (77.10238, -91.86880), (-72.88859, -129.83755), (-69.24987, -24.36880), (77.41254, 119.06870), (-70.69409, 83.91245), (78.85650, 75.47495), (26.83989, 140.16245), (-24.75069, -108.74380), (30.53968, -145.30630), (79.12503, 145.78745), (-34.51006, 133.13120), (-73.29753, -60.93130), (-74.08712, 23.44370), (-76.57404, 100.78745), (-76.57404, 100.78745), (39.72082, 103.59995), (70.99412, 148.59995), (82.27591, 138.75620), (78.29964, -3.27505), (78.29964, -3.27505), (-8.65039, 47.34995) }); - } - - [Benchmark(Baseline = true)] - [ArgumentsSource(nameof(Coordinates))] - public void Encode_V1((int, IEnumerable<(double, double)>) arg) => V1.Encode(arg.Item2).Consume(_consumer); - - [Benchmark] - [ArgumentsSource(nameof(Coordinates))] - public void Encode_V1_Parallel((int, IEnumerable<(double, double)>) arg) => Parallel.For(100, 200, (i) => V1.Encode(arg.Item2).Consume(_consumer)); - - - [Benchmark] - [ArgumentsSource(nameof(Coordinates))] - public void Encode_V2((int, IEnumerable<(double, double)>) arg) => V2.Encode(arg.Item2).Consume(_consumer); - - - [Benchmark] - [ArgumentsSource(nameof(Coordinates))] - public void Encode_V2_Parallel((int, IEnumerable<(double, double)>) arg) => Parallel.For(100, 200, (i) => V2.Encode(arg.Item2).Consume(_consumer)); - - private class V1 - { - public static string Encode(IEnumerable<(double Latitude, double Longitude)> coordinates) - { - if (coordinates is null || !coordinates.Any()) - { - throw new ArgumentException(nameof(coordinates)); - } - - EnsureCoordinates(coordinates); - - int lastLatitude = 0; - int lastLongitude = 0; - var sb = new StringBuilder(); - - foreach (var coordinate in coordinates) - { - int latitude = GetIntegerRepresentation(coordinate.Latitude); - int longitude = GetIntegerRepresentation(coordinate.Longitude); - - sb.Append(GetEncodedCharacters(latitude - lastLatitude).ToArray()); - sb.Append(GetEncodedCharacters(longitude - lastLongitude).ToArray()); - - lastLatitude = latitude; - lastLongitude = longitude; - } - - return sb.ToString(); - } - - private static void EnsureCoordinates(IEnumerable<(double Latitude, double Longitude)> coordinates) - { - var invalidCoordinates = coordinates - .Where(c => !CoordinateValidator.IsValid(c)); - - if (invalidCoordinates.Any()) - { - throw new AggregateException( - invalidCoordinates - .Select(c => - new ArgumentOutOfRangeException() - ) - ); - } - } - - private static IEnumerable GetEncodedCharacters(int value) - { - int shifted = value << 1; - if (value < 0) - shifted = ~shifted; - - int rem = shifted; - - while (rem >= Constants.ASCII.Space) - { - yield return (char)((Constants.ASCII.Space | rem & Constants.ASCII.UnitSeparator) + Constants.ASCII.QuestionMark); - - rem >>= Constants.ShiftLength; - } - - yield return (char)(rem + Constants.ASCII.QuestionMark); - } - - private static int GetIntegerRepresentation(double value) - { - return (int)Math.Round(value * Constants.Precision); - } - - public static class CoordinateValidator - { - public static bool IsValid((double Latitude, double Longitude) coordinate) - { - return IsValidLatitude(coordinate.Latitude) && IsValidLongitude(coordinate.Longitude); - } - - public static bool IsValidLatitude(double latitude) - { - return latitude >= Constants.Coordinate.MinLatitude && latitude <= Constants.Coordinate.MaxLatitude; - } - - public static bool IsValidLongitude(double longitude) - { - return longitude >= Constants.Coordinate.MinLongitude && longitude <= Constants.Coordinate.MaxLongitude; - } - } - } - - private class V2 - { - private static readonly ObjectPool _pool = new DefaultObjectPoolProvider().CreateStringBuilderPool(5, int.MaxValue); - - public static string Encode(IEnumerable<(double Latitude, double Longitude)> coordinates) - { - if (coordinates is null || !coordinates.Any()) - { - throw new ArgumentException(nameof(coordinates)); - } - - EnsureCoordinates(coordinates); - - int previousLatitude = 0; - int previousLongitude = 0; - - var sb = _pool.Get(); - - foreach (var coordinate in coordinates) - { - int latitude = GetIntegerRepresentation(coordinate.Latitude); - int longitude = GetIntegerRepresentation(coordinate.Longitude); - - sb.Append(GetEncodedCharacters(latitude - previousLatitude).ToArray()); - sb.Append(GetEncodedCharacters(longitude - previousLongitude).ToArray()); - - previousLatitude = latitude; - previousLongitude = longitude; - } - - var result = sb.ToString(); - - _pool.Return(sb); - - return result; - } - - private static void EnsureCoordinates(IEnumerable<(double Latitude, double Longitude)> coordinates) - { - var invalidCoordinates = coordinates - .Where(c => !CoordinateValidator.IsValid(c)); - - if (invalidCoordinates.Any()) - { - throw new AggregateException( - invalidCoordinates - .Select(c => - new ArgumentOutOfRangeException() - ) - ); - } - } - - private static IEnumerable GetEncodedCharacters(int value) - { - int shifted = value << 1; - if (value < 0) - shifted = ~shifted; - - int rem = shifted; - - while (rem >= Constants.ASCII.Space) - { - yield return (char)((Constants.ASCII.Space | rem & Constants.ASCII.UnitSeparator) + Constants.ASCII.QuestionMark); - - rem >>= Constants.ShiftLength; - } - - yield return (char)(rem + Constants.ASCII.QuestionMark); - } - - private static int GetIntegerRepresentation(double value) - { - return (int)Math.Round(value * Constants.Precision); - } - - public static class CoordinateValidator - { - public static bool IsValid((double Latitude, double Longitude) coordinate) - { - return IsValidLatitude(coordinate.Latitude) && IsValidLongitude(coordinate.Longitude); - } - - public static bool IsValidLatitude(double latitude) - { - return latitude >= Constants.Coordinate.MinLatitude && latitude <= Constants.Coordinate.MaxLatitude; - } - - public static bool IsValidLongitude(double longitude) - { - return longitude >= Constants.Coordinate.MinLongitude && longitude <= Constants.Coordinate.MaxLongitude; - } - } - } - } -} diff --git a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Program.cs b/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Program.cs deleted file mode 100644 index 1a591c1c..00000000 --- a/benchmarks/DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks/Program.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace DropoutCoder.PolylineAlgorithm.Implementation.Benchmarks -{ - using BenchmarkDotNet.Running; - - internal class Program - { - static void Main(string[] args) - { - BenchmarkRunner - .Run(); - BenchmarkRunner - .Run(); - } - } -} diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/PolylineAlgorithm.Benchmarks.csproj b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineAlgorithm.Benchmarks.csproj new file mode 100644 index 00000000..338efcf0 --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineAlgorithm.Benchmarks.csproj @@ -0,0 +1,26 @@ + + + + Exe + net8.0;net9.0 + 13.0 + enable + enable + true + en + + + + false + + + + + + + + + + + + diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/PolylineBenchmark.cs b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineBenchmark.cs new file mode 100644 index 00000000..9d09883b --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineBenchmark.cs @@ -0,0 +1,165 @@ +// +// Copyright © Pete Sramek. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace PolylineAlgorithm.Benchmarks; + +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Engines; +using PolylineAlgorithm; +using PolylineAlgorithm.Utility; + +/// +/// Benchmarks for the struct. +/// +public class PolylineBenchmark { + private static readonly Consumer consumer = new(); + + [Params(1, 100, 1_000)] + public int Count; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + /// + /// Gets the character array representing the encoded polyline. + /// + public char[] CharArrayValue { get; private set; } + + /// + /// Gets the read-only memory representing the encoded polyline. + /// + public ReadOnlyMemory MemoryValue { get; private set; } + + /// + /// Gets the read-only memory representing the encoded polyline. + /// + public Polyline PolylineValue { get; private set; } + + /// + /// Gets the string value representing the encoded polyline. + /// + public string StringValue { get; private set; } + + /// + /// Gets the read-only memory representing the encoded polyline. + /// + public Polyline PolylineNotEqualValue { get; private set; } + + public char[] CopyToDestination { get; private set; } + +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + + + /// + /// Sets up the data for the benchmarks. + /// + [GlobalSetup] + public void SetupData() { + PolylineValue = Polyline.FromString(RandomValueProvider.GetPolyline(Count)); + PolylineNotEqualValue = Polyline.FromString(RandomValueProvider.GetPolyline(Count + Random.Shared.Next(1, 101))); + StringValue = PolylineValue.ToString(); + CharArrayValue = [.. StringValue]; + MemoryValue = CharArrayValue.AsMemory(); + + CopyToDestination = new char[PolylineValue.Length]; + } + + /// + /// Benchmarks the encoding of a list of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public Polyline Polyline_FromString() { + var polyline = Polyline + .FromString(StringValue); + + return polyline; + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public Polyline Polyline_FromCharArray() { + var polyline = Polyline + .FromCharArray(CharArrayValue); + + return polyline; + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public Polyline Polyline_FromMemory() { + var polyline = Polyline + .FromMemory(MemoryValue); + + return polyline; + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public string Polyline_ToString() { + var stringValue = PolylineValue + .ToString(); + + return stringValue; + } + + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public void Polyline_CopyTo() { + PolylineValue + .CopyTo(CopyToDestination); + + CopyToDestination + .Consume(consumer); + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public bool Polyline_Equals_SameValue() { + var equals = PolylineValue + .Equals(PolylineValue); + + return equals; + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public bool Polyline_Equals_DifferentValue() { + var equals = PolylineValue + .Equals(PolylineNotEqualValue); + + return equals; + } + + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public bool Polyline_Equals_DifferentType() { + var equals = PolylineValue + .Equals(StringValue); + + return equals; + } +} \ No newline at end of file diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/PolylineDecoderBenchmark.cs b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineDecoderBenchmark.cs new file mode 100644 index 00000000..718cdd8b --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineDecoderBenchmark.cs @@ -0,0 +1,52 @@ +// +// Copyright © Pete Sramek. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace PolylineAlgorithm.Benchmarks; + +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Engines; +using PolylineAlgorithm; +using PolylineAlgorithm.Utility; + +/// +/// Benchmarks for the class. +/// +public class PolylineDecoderBenchmark { + private readonly Consumer _consumer = new(); + + [Params(1, 100, 1_000)] + public int Count; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + /// + /// Gets the string value representing the encoded polyline. + /// + public Polyline Polyline { get; private set; } + +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + + /// + /// The polyline decoder instance. + /// + public PolylineDecoder Decoder = new(); + + /// + /// Sets up the data for the benchmarks. + /// + [GlobalSetup] + public void SetupData() { + Polyline = Polyline.FromString(RandomValueProvider.GetPolyline(Count)); + } + + /// + /// Benchmarks the decoding of a polyline from a string. + /// + [Benchmark] + public void PolylineDecoder_Decode() { + Decoder + .Decode(Polyline) + .Consume(_consumer); + } +} \ No newline at end of file diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/PolylineEncoderBenchmark.cs b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineEncoderBenchmark.cs new file mode 100644 index 00000000..71743ca8 --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/PolylineEncoderBenchmark.cs @@ -0,0 +1,69 @@ +// +// Copyright © Pete Sramek. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace PolylineAlgorithm.Benchmarks; + +using BenchmarkDotNet.Attributes; +using PolylineAlgorithm; +using PolylineAlgorithm.Utility; +using System.Collections.Generic; + +/// +/// Benchmarks for the class. +/// +public class PolylineEncoderBenchmark { + [Params(1, 100, 1_000)] + public int Count; + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + /// + /// Gets the enumeration of coordinates to be encoded. + /// + public IEnumerable Enumeration { get; private set; } + + /// + /// Gets the list of coordinates to be encoded. + /// + public List List { get; private set; } +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable. + + /// + /// The polyline encoder instance. + /// + public PolylineEncoder Encoder = new(); + + /// + /// Sets up the data for the benchmarks. + /// + [GlobalSetup] + public void SetupData() { + Enumeration = RandomValueProvider.GetCoordinates(Count).Select(c => new Coordinate(c.Latitude, c.Longitude)); + List = [.. Enumeration]; + } + + /// + /// Benchmarks the encoding of a list of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public Polyline PolylineEncoder_Encode_List() { + var polyline = Encoder + .Encode(List!); + + return polyline; + } + + /// + /// Benchmarks the encoding of an enumeration of coordinates into a polyline. + /// + /// The encoded polyline. + [Benchmark] + public Polyline PolylineEncoder_Encode_Enumerator() { + var polyline = Encoder + .Encode(Enumeration!); + + return polyline; + } +} \ No newline at end of file diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/Program.cs b/benchmarks/PolylineAlgorithm.Benchmarks/Program.cs new file mode 100644 index 00000000..e1dffccb --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/Program.cs @@ -0,0 +1,23 @@ +// +// Copyright © Pete Sramek. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +namespace PolylineAlgorithm.Benchmarks; + +using BenchmarkDotNet.Running; + +/// +/// The main entry point for the benchmark application. +/// +internal class Program { + /// + /// The main method that runs the benchmarks. + /// + /// The command-line arguments. + static void Main(string[] args) { + BenchmarkSwitcher + .FromAssembly(typeof(Program).Assembly) + .Run(args); + } +} \ No newline at end of file diff --git a/benchmarks/PolylineAlgorithm.Benchmarks/Properties/GlobalSuppressions.cs b/benchmarks/PolylineAlgorithm.Benchmarks/Properties/GlobalSuppressions.cs new file mode 100644 index 00000000..39178369 --- /dev/null +++ b/benchmarks/PolylineAlgorithm.Benchmarks/Properties/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// +// Copyright © Pete Sramek. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for full license information. +// + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Benchmarks need instance methods.")] \ No newline at end of file diff --git a/code-coverage-settings.xml b/code-coverage-settings.xml new file mode 100644 index 00000000..c22f21e5 --- /dev/null +++ b/code-coverage-settings.xml @@ -0,0 +1,26 @@ + + + + + + + src/** + + + + + + + + ^System\.Diagnostics\.DebuggerHiddenAttribute$ + ^System\.Diagnostics\.DebuggerNonUserCodeAttribute$ + ^System\.CodeDom\.Compiler\.GeneratedCodeAttribute$ + ^System\.Diagnostics\.CodeAnalysis\.ExcludeFromCodeCoverageAttribute$ + + + + True + True + + + \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 4378419e..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -############### -# folder # -############### -/**/DROP/ -/**/TEMP/ -/**/packages/ -/**/bin/ -/**/obj/ -_site diff --git a/docs/api/.gitignore b/docs/api/.gitignore deleted file mode 100644 index da7c71b8..00000000 --- a/docs/api/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -############### -# temp file # -############### -*.yml diff --git a/docs/api/.manifest b/docs/api/.manifest deleted file mode 100644 index 794f97a0..00000000 --- a/docs/api/.manifest +++ /dev/null @@ -1,23 +0,0 @@ -{ - "DropoutCoder.PolylineAlgorithm": "DropoutCoder.PolylineAlgorithm.yml", - "DropoutCoder.PolylineAlgorithm.Encoding": "DropoutCoder.PolylineAlgorithm.Encoding.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding`1": "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding`1.Decode(System.String)": "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding`1.Encode(System.Collections.Generic.IEnumerable{`0})": "DropoutCoder.PolylineAlgorithm.Encoding.IPolylineEncoding-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding.CreateResult(System.Double,System.Double)": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding.GetCoordinate(System.ValueTuple{System.Double,System.Double})": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncoding.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase`1": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase`1.CreateResult(System.Double,System.Double)": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase`1.Decode(System.String)": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase`1.Encode(System.Collections.Generic.IEnumerable{`0})": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml", - "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase`1.GetCoordinate(`0)": "DropoutCoder.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml", - "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm": "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm.yml", - "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm.Decode(System.Char[])": "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm.yml", - "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm.Encode(System.Collections.Generic.IEnumerable{System.ValueTuple{System.Double,System.Double}})": "DropoutCoder.PolylineAlgorithm.PolylineAlgorithm.yml", - "DropoutCoder.PolylineAlgorithm.Validation": "DropoutCoder.PolylineAlgorithm.Validation.yml", - "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator": "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.yml", - "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.IsValid(System.ValueTuple{System.Double,System.Double})": "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.yml", - "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.IsValidLatitude(System.Double)": "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.yml", - "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.IsValidLongitude(System.Double)": "DropoutCoder.PolylineAlgorithm.Validation.CoordinateValidator.yml" -} \ No newline at end of file diff --git a/docs/api/index.md b/docs/api/index.md deleted file mode 100644 index 306e118e..00000000 --- a/docs/api/index.md +++ /dev/null @@ -1,4 +0,0 @@ -# This is the API docs homepage. -Refer to [Markdown](http://daringfireball.net/projects/markdown/) for how to write markdown files. -## Quick Start Notes: -1. Add images to the *images* folder if the file is referencing an image. diff --git a/docs/docfx.json b/docs/docfx.json deleted file mode 100644 index 86263ff4..00000000 --- a/docs/docfx.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "metadata": [ - { - "src": [ - { - "files": [ - "**.csproj" - ], - "src": "../src/" - } - ], - "dest": "api", - "disableGitFeatures": false - } - ], - "build": { - "content": [ - { - "files": [ - "**.yml", - "index.md" - ], - "src": "api", - "dest": "." - } - ], - "resource": [ - { - "files": [ - "images/**" - ] - } - ], - "overwrite": [ - { - "files": [ - "apidoc/**.md" - ], - "exclude": [ - "obj/**", - "_site/**" - ] - } - ], - "dest": "_site", - "globalMetadataFiles": [], - "fileMetadataFiles": [], - "template": [ - "default", - "modern" - ], - "postProcessors": [], - "noLangKeyword": false, - "keepFileLink": false, - "cleanupCacheHistory": false, - "disableGitFeatures": false - } -} \ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 71570f61efd250abdc3bffd77a96c6986109bb85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99678 zcmeI552RLEyTH%r9^IsSz9dP~B2FNJhFz(jB9(JCY?>z%IduD|@Hi@$ff{`+6Ly8hGLyZ^ZUAMXDz_x|>`#`W~BuD_4(>iXb= ze_a3dKf1d9Z9!MpmtQun|Mi`&f8W*B^;a(K@?ChR_rJ8EpX}csfBf-ICxBfWVJEDH z9q={mgU?`eGaISX0}tR5JO%r+?P0hLi(q0|Ka`&V+nT!i$3y*W zN_nvVbX>;$dGG>G!|b>$Y~50^ooIi?G< z^*iOdtLu+H`h)AtyYK;ob>_?7wTv6lU#E;$vZFKhi^29IQ)66%(WE0{eYhUgD4R$+ z874q?T&KTz`a1-_g6ry2aPRs7p1^ak?Dq!0kv@VWFsr|^LwovK0Lo(x>be51yXKYq z5L|;Vg6r^0uEg}m2ErPZ-=b> z-9>#;cLwMSeWLseu&bzkv-`AN2U+=>%i2+Y88`-yVQnM7ysS-88Ev&8E5CG1sqbEY zqtR|7=`*+sql)Ad-KWhbkd?otsD8Lln>~$oo{Kzl*vGO^UNxo7@ z^jIUmzpC6&k9K{Pzqldu9;s`I_W#qlHOMJSY13EvA2wt@AU)8?pDB`4biW_+gWh-O zyKl85q@gqw-m`Kx=*`cN8R{yzfiuucka0^PcM>Fbe}eP^KV^I zeecs|8n{0x-}&!a_?D&cf8Z`pxdq&U3~M$jbNLdRPL^vo-K7xc6Dtv0n#sq3N@Ao*uNbU)L`C z%gPV;vZ;H{CCGgS%#%}ek3Ni>1MmfG1LMG0+zLBj4;b6W;2YQi@56|qKGXg5Y>;9g zKL(gLgZk%t3SXiA7rc2-F`bLdU-DnR|I)amaY-?dVj#spih;q10k&z+=0{*3?1IhU zGs;?+1fRk>@Sf*)>m7#Ua1u^{&oG-{4vcK49mrF+=a7A-`Hg!Y<=oHKi?40tJJB`p zr}vbtvLYB-)A=Kn1(iSdXD>(UT1^+$s1sr`xj$JdR#ejd=z|LJcGJZtoyjUTVa*3rLV!}dmh>VE~6L6~Fz^nH-J z{m1p`SN+4gz^wj`*O<6|l{{_cL(tb4ngg#ud%T`drJpKw=&Kd_JCDPhQfKXX0_L^r zqbj;psY73_(7&60gHP4j_z82^>+Mx^t5S!)TBZMe`c_w21J|SL!tYI0(K)U|pRLmW zUZn3j^4Fs4L$MD1$+uAdhmpRk$lr*r_w+~SxNVE{A4R_}BYl^XkNr{jnNX}-m3)iz zch7Y#4)MQ$yz8ddu0M;a=vJi;eYGO~jhCRid;4N=FY(?ZsJ*8Y*H)2D7ZeS3aZjxzJ~pIo(1+J6io&h76gtOn=oPcY!mlJxl= zsCSF>nc%*45^B$*igGv7x4P%)@4dpa7G<7uX2D^I$6bFeg-zgD zx+U+2=-21dTTrI|W6E7m)WhfTb+8!@!BzMbLVHtvumVOyt!K9?<82-Kb$|RAZbB?O z8~<@xv%Il(23n$XY#TDRg7RXWyml=0yLL#nPF&x-#>%V|{}ISXJttb`>n zA7;b*&;!P_`8i;jb*yXrYysnX4OrHadD$x4Q@`mmhZF-T22u>97-)42us8DOzlloe zV2p#`)A|6ugz!DBF8+;c_OI1(kor$+O^SgO11Sbl45S!HF_2;)#XyRI6a#Nd4Dh@( z7UqJV$4rHZ;62~t7k(d$GCxC@0Jia+vhSGfXI=x}FWYDB?CF^wDS6L7jb{ zk;eh&Xb?u5bTCsjnpeUhxL#S0wIimdv(9c1R`-E%dCJ1YU z<6L{5)wMaUkGxY5bTZAe|7Y&^>$^X+cfMbRSk^(VXMt-%xbHsGw(|k9jKd(i$o})x z>G%3XA6qlB?s7d2;&FM*^|aVWt;{3qI5e~WC+hUuC-m_iIL~8w?{j@5y60Tj)JmJ< zzL9k_l3nEgfwF%LvL0mQc@Ef^x#ybP@9~c9EXpINo%VMl&$$%)e=pZ7AgqCwJ%zSB zHzB8O_UnTjdB?c72;zC+ShVGAoTE?P`adA?->`olGGqUr<=W?gm(hLgUsV*d19=}g z?e_of$WF(>x$YY1`;&NFJ|9Rsi~2%lyY2rfW9JpF-526Bfa6g6ciW0=EW3}KcH8gy zCie41uJioAzD)0dDjNj*J@du(d;ZRw|0@T|#eQ?@mG7zxkgVWuASs zeJAv5epT^xwhl6^wu}3|Px;cucugeVr}d=2W29U#_U=NgU&t5PAIj^d&hL}Z*3UKa z#t9u}!*x)nB0C1ke%F;tV7#||Z7Z-}zq|Knzw=WaU&3>6jdMLRu04|&9}nO$SZ+P* zhyBX=U|(Y1K7EIE1-^#4FeK~_V}U*sVKKZ1Q(!FoX)OzNv#Ir9G)#sWFb7=Y?Qb4< zug{;6X62>p^u5Xy11Sbl45S!HF_2;)#XyRI6ay&+%3^@$kMuW;N5J2S_)`1diGC-7 z|Mz+JuPlaASz2RK45S!HF_2;)#XyRI6ay&+QVgURNHLINAjLq6ffNHN22u>97)UXY zVj#spih&dZDF#vuq!>sskYXUkK#GAB11Sbl45S!HF_2;)#XyRI6ay&+QVgURNHLIN zAjLq6ffNHN22u>97)UYj_QnAJo~#=_ge|ZhR>3mx_fQsqzy0EGtV{=gXJrD6fl*NV zH(_Yg1Ct>9?#e>)%JTPYl)V-{gAL&Cs%^^P@7Y+s8kWK=7!Q?x`z6KdpJSDA(~k$h z-~I77fu6uaxC^)823&)m;Ub&^e-rE!`~crK_?FZd@ppI*HSUG7lU$3}wmlD*!M>Go z50t6w=kOBLt#!hN)G? zVmQ`eY`S3%>;Ttg*V=e2tLBH2|AWrPfqO+*4{HDJ>2Qe&#%Kh%7R-iya2q@mgt2Uv z4n_aRI{%6-o>^u<+7tM#*P_^Fd_3PT0MBgBpLiUL@TNt{&VtVm!~Qp58H34i4w{W;UH?0`*EIU?Asq$X zQ0YBRqpoditBy-y51fZr&`e*;T~l_zo8N;cKNb$c9WWM#_4@?ucRcpOZ%{U-b^U*t z{{FNF_hvUKP7oo~}@Qixv;f*fjU0*JMWv)%Lpi*4+$A+QU7P}o+*TQCF z`G`96U?SXtvRE;e4z<$Wh8`P8uQky{Jza}dK^z0~xxNkRdIOfgu-p%@+p+i+%6wYK z|Mu1L|0g0cMuNIKmtRAX{=ZXZoO}px<~e!Sf6ob)-+|5W=Dg6#_#H}pW3%g@XSJg7 z^L`!wyFV{!hmFYb46FV}pzK`WJilb!pci@1q36LeZFHU33B&3=6827kD=<+0cTUX+ z_cyr?lHPWKICr zfwH|o|9%I(|Bo9|+js_a4+!=@CcguQMGRo)7;xNz{ds9s|2vL1VNm`bLdbP5I0s=( z&$Hz@<=de5JV?3%o=TboHebj8$LVWOpQDgJ89eW2=X7kB^Lrr} zFTNAH1#!7~&y)LM(AKkd!~^zy4rOCi$N%5a*PC~)?a)6f1Nq&s9-cwgr{UVOpuTne z_Y8a#ycfzt`ha_@vobpA8v8zjvh}i#{}0mFp!#3mpu-Hf0A+FgGv&_xkx&*dKT z)%$GS>UFDG|L8Fa&OopuFTFwebm)fNP~?Bdzq_cc?(|rZ`W^c+&R?L+IPsa`Vo5#Q9D^ZozOC!$qWaj=$^Q3je*ns!Z-1e@ z_qze4KSCTE+5Bb7rxlIm+jt*)I@$m3>z+wpLe`hz`aWd~^d0G8C|fHYQ$GJ~^mCEU z*weB8Z}`;n?Q;nJ&ZeGkmP0pu0cFp^uPOI=sbfAH#+FX^|1xYWJKy^3^BMTQU?Y@0 z3%NGzgh7ADT{NHT-p7_s_y1ySya(BNAFiG6+h8<&3T3gP{|`dPya&LRPWS(OY`h7< z-`VsfWxJsVT-)8_vvtDt@01;dLHUkT-ML+*KDKna|L0-j4bXSNk8$ez!M&jWKY@o3 zm&bYg_#UQI8QZs^4z>&j|NHK)$p1bY?g#zqnlvJeE#eBqt7Dv1!7&}{7cGq!5CN#+8dY0dDs6Vke>hkd5ngt|J~Ee zeENd&?NIgo&wlE5%=baDrPJ5{mDuxK>B9FP4N=iU3(!bos#dmfC-DiKcwz&!&^X%WSxs&}r z5r18SvN?TApMq<}6^LUan?Fi<`u-)UPFaz#D*5~2c zbK%CJzMj|B51Tr9{u_@kOMI$t55idR4B-AA{GCl*N7DDdi^pdu&i`ZhtZePq$De}F z3G1Qg?CzivKsDOWC^|s`}H z*TJ)b`tBh!!+3RCifz6he_CL>R4C*{Veh(Z0^@;V%<}Xq{ z6UKwxKHNcc}M-{BG#D_k3BudySnV!8sf3 z&r9q0{}_F>ZU0A>zMlt|Ay4=Cp0RNWW`pe(!yO29JOgZpj`?m^p3mcZ+6ta=!x-eH zb^LE%Z5co0bi)$Rr|}%lv%!1%cP%*g$HF(@bAV-!LEpD6c4I#bRvvq2!aXP&Gw)aR zf0$n_{r_sAkA9y7o56FMa?A9$>{r+Uy?Z+88VGG~koWA+@n^j_&al^U{1`m9myKUl z|J%ne(30;))30mx7+3};Ak5t|-7Rx%a9x_H{iKt@HN$h>8CU=v^Lq}lkIVAd>>B7< z$nhx~!#e(dPG1B1u9W_aQ*~Vkhv5NKne*CYy^AmxjGyt~c}JVRfR6chJY~MlmSMMJ z;h5ZnGT&QP$N$FC_wWh0xAcH#Ons=#USfU1y+&$1>+5gZF9!GJtKd3S)$i(U-3!ng zkEEmEb2tI>Vc5<2Fz(nM=0VwezYrI7{2$u54!FjC2issBEQNXSKIq%&FbigbYq0D3 z2KWk&z|Zgm>i9g!cfZ&7b0V9KsTI(>4}|-}EyaH4nEueOVZ6%HzW6`x?-g=9YuyLW z2e;uC+-#&?d;cLAH?JXXUpH?|9|U7;*v|26Tr(E>eLCz0eNuH?`|JOza{61(Ie!P% zLGn9iU1NZ;(C_16Eu4iaYkusDq3(b82lt6XFdsVl^P23uF1uzdroeW%2(H1gU#sSa zvj3g)o)bJ<4C?=PsLT(8QO0KLb&w9G@#avs?wA57K;Z?C(Xf!59VqJAR(29Y6Q}7vMSj z8Mr67cZz=Y9PYW?ah7Y~JevdK;3S-H;Pc%TxDL1BE_j9y{n@uNl%-5jzIv#SK8^97 zb35p0+k5aMY=sYDDh#Xlv_<}HcHeP=wQvZw!>6zUmcTri36o&JKj)^;Zs>t2Fb5Wb zb5{9lU<>SnJ&n|7l5OxAtORwO4(Tk{WS%#RgH-;H=b$tWX&h1vq!>sskYXUkK#GAB z11Sbl45S!HF_2;)#XyRI6ay&+QVgURNHLINAjLq6ffNHN22u>97)UXYVj#spih&dZ zDF#vuq!>sskYXUkK#GAB11Sbl45S!HF_2;)#XyRIfsO(G?MwPgBalWQjX)ZKGy-V^ IhS>=GA3>?ZjsO4v diff --git a/docs/fonts/glyphicons-halflings-regular.eot b/docs/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 zcma%hV{j!vx9y2-`@~L8?1^pLwlPU2wr$&<*tR|KBoo`2;LUg6eW-eW-tKDb)vH%` z^`A!Vd<6hNSRMcX|Cb;E|1qflDggj6Kmr)xA10^t-vIc3*Z+F{r%|K(GyE^?|I{=9 zNq`(c8=wS`0!RZy0g3{M(8^tv41d}oRU?8#IBFtJy*9zAN5dcxqGlMZGL>GG%R#)4J zDJ2;)4*E1pyHia%>lMv3X7Q`UoFyoB@|xvh^)kOE3)IL&0(G&i;g08s>c%~pHkN&6 z($7!kyv|A2DsV2mq-5Ku)D#$Kn$CzqD-wm5Q*OtEOEZe^&T$xIb0NUL}$)W)Ck`6oter6KcQG9Zcy>lXip)%e&!lQgtQ*N`#abOlytt!&i3fo)cKV zP0BWmLxS1gQv(r_r|?9>rR0ZeEJPx;Vi|h1!Eo*dohr&^lJgqJZns>&vexP@fs zkPv93Nyw$-kM5Mw^{@wPU47Y1dSkiHyl3dtHLwV&6Tm1iv{ve;sYA}Z&kmH802s9Z zyJEn+cfl7yFu#1^#DbtP7k&aR06|n{LnYFYEphKd@dJEq@)s#S)UA&8VJY@S2+{~> z(4?M();zvayyd^j`@4>xCqH|Au>Sfzb$mEOcD7e4z8pPVRTiMUWiw;|gXHw7LS#U< zsT(}Z5SJ)CRMXloh$qPnK77w_)ctHmgh}QAe<2S{DU^`!uwptCoq!Owz$u6bF)vnb zL`bM$%>baN7l#)vtS3y6h*2?xCk z>w+s)@`O4(4_I{L-!+b%)NZcQ&ND=2lyP+xI#9OzsiY8$c)ys-MI?TG6 zEP6f=vuLo!G>J7F4v|s#lJ+7A`^nEQScH3e?B_jC&{sj>m zYD?!1z4nDG_Afi$!J(<{>z{~Q)$SaXWjj~%ZvF152Hd^VoG14rFykR=_TO)mCn&K$ z-TfZ!vMBvnToyBoKRkD{3=&=qD|L!vb#jf1f}2338z)e)g>7#NPe!FoaY*jY{f)Bf>ohk-K z4{>fVS}ZCicCqgLuYR_fYx2;*-4k>kffuywghn?15s1dIOOYfl+XLf5w?wtU2Og*f z%X5x`H55F6g1>m~%F`655-W1wFJtY>>qNSdVT`M`1Mlh!5Q6#3j={n5#za;!X&^OJ zgq;d4UJV-F>gg?c3Y?d=kvn3eV)Jb^ zO5vg0G0yN0%}xy#(6oTDSVw8l=_*2k;zTP?+N=*18H5wp`s90K-C67q{W3d8vQGmr zhpW^>1HEQV2TG#8_P_0q91h8QgHT~8=-Ij5snJ3cj?Jn5_66uV=*pq(j}yHnf$Ft;5VVC?bz%9X31asJeQF2jEa47H#j` zk&uxf3t?g!tltVP|B#G_UfDD}`<#B#iY^i>oDd-LGF}A@Fno~dR72c&hs6bR z2F}9(i8+PR%R|~FV$;Ke^Q_E_Bc;$)xN4Ti>Lgg4vaip!%M z06oxAF_*)LH57w|gCW3SwoEHwjO{}}U=pKhjKSZ{u!K?1zm1q? zXyA6y@)}_sONiJopF}_}(~}d4FDyp|(@w}Vb;Fl5bZL%{1`}gdw#i{KMjp2@Fb9pg ziO|u7qP{$kxH$qh8%L+)AvwZNgUT6^zsZq-MRyZid{D?t`f|KzSAD~C?WT3d0rO`0 z=qQ6{)&UXXuHY{9g|P7l_nd-%eh}4%VVaK#Nik*tOu9lBM$<%FS@`NwGEbP0&;Xbo zObCq=y%a`jSJmx_uTLa{@2@}^&F4c%z6oe-TN&idjv+8E|$FHOvBqg5hT zMB=7SHq`_-E?5g=()*!V>rIa&LcX(RU}aLm*38U_V$C_g4)7GrW5$GnvTwJZdBmy6 z*X)wi3=R8L=esOhY0a&eH`^fSpUHV8h$J1|o^3fKO|9QzaiKu>yZ9wmRkW?HTkc<*v7i*ylJ#u#j zD1-n&{B`04oG>0Jn{5PKP*4Qsz{~`VVA3578gA+JUkiPc$Iq!^K|}*p_z3(-c&5z@ zKxmdNpp2&wg&%xL3xZNzG-5Xt7jnI@{?c z25=M>-VF|;an2Os$Nn%HgQz7m(ujC}Ii0Oesa(y#8>D+P*_m^X##E|h$M6tJr%#=P zWP*)Px>7z`E~U^2LNCNiy%Z7!!6RI%6fF@#ZY3z`CK91}^J$F!EB0YF1je9hJKU7!S5MnXV{+#K;y zF~s*H%p@vj&-ru7#(F2L+_;IH46X(z{~HTfcThqD%b{>~u@lSc<+f5#xgt9L7$gSK ziDJ6D*R%4&YeUB@yu@4+&70MBNTnjRyqMRd+@&lU#rV%0t3OmouhC`mkN}pL>tXin zY*p)mt=}$EGT2E<4Q>E2`6)gZ`QJhGDNpI}bZL9}m+R>q?l`OzFjW?)Y)P`fUH(_4 zCb?sm1=DD0+Q5v}BW#0n5;Nm(@RTEa3(Y17H2H67La+>ptQHJ@WMy2xRQT$|7l`8c zYHCxYw2o-rI?(fR2-%}pbs$I%w_&LPYE{4bo}vRoAW>3!SY_zH3`ofx3F1PsQ?&iq z*BRG>?<6%z=x#`NhlEq{K~&rU7Kc7Y-90aRnoj~rVoKae)L$3^z*Utppk?I`)CX&& zZ^@Go9fm&fN`b`XY zt0xE5aw4t@qTg_k=!-5LXU+_~DlW?53!afv6W(k@FPPX-`nA!FBMp7b!ODbL1zh58 z*69I}P_-?qSLKj}JW7gP!la}K@M}L>v?rDD!DY-tu+onu9kLoJz20M4urX_xf2dfZ zORd9Zp&28_ff=wdMpXi%IiTTNegC}~RLkdYjA39kWqlA?jO~o1`*B&85Hd%VPkYZT z48MPe62;TOq#c%H(`wX5(Bu>nlh4Fbd*Npasdhh?oRy8a;NB2(eb}6DgwXtx=n}fE zx67rYw=(s0r?EsPjaya}^Qc-_UT5|*@|$Q}*|>V3O~USkIe6a0_>vd~6kHuP8=m}_ zo2IGKbv;yA+TBtlCpnw)8hDn&eq?26gN$Bh;SdxaS04Fsaih_Cfb98s39xbv)=mS0 z6M<@pM2#pe32w*lYSWG>DYqB95XhgAA)*9dOxHr{t)er0Xugoy)!Vz#2C3FaUMzYl zCxy{igFB901*R2*F4>grPF}+G`;Yh zGi@nRjWyG3mR(BVOeBPOF=_&}2IWT%)pqdNAcL{eP`L*^FDv#Rzql5U&Suq_X%JfR_lC!S|y|xd5mQ0{0!G#9hV46S~A` z0B!{yI-4FZEtol5)mNWXcX(`x&Pc*&gh4k{w%0S#EI>rqqlH2xv7mR=9XNCI$V#NG z4wb-@u{PfQP;tTbzK>(DF(~bKp3;L1-A*HS!VB)Ae>Acnvde15Anb`h;I&0)aZBS6 z55ZS7mL5Wp!LCt45^{2_70YiI_Py=X{I3>$Px5Ez0ahLQ+ z9EWUWSyzA|+g-Axp*Lx-M{!ReQO07EG7r4^)K(xbj@%ZU=0tBC5shl)1a!ifM5OkF z0w2xQ-<+r-h1fi7B6waX15|*GGqfva)S)dVcgea`lQ~SQ$KXPR+(3Tn2I2R<0 z9tK`L*pa^+*n%>tZPiqt{_`%v?Bb7CR-!GhMON_Fbs0$#|H}G?rW|{q5fQhvw!FxI zs-5ZK>hAbnCS#ZQVi5K0X3PjL1JRdQO+&)*!oRCqB{wen60P6!7bGiWn@vD|+E@Xq zb!!_WiU^I|@1M}Hz6fN-m04x=>Exm{b@>UCW|c8vC`aNbtA@KCHujh^2RWZC}iYhL^<*Z93chIBJYU&w>$CGZDRcHuIgF&oyesDZ#&mA;?wxx4Cm#c0V$xYG?9OL(Smh}#fFuX(K;otJmvRP{h ze^f-qv;)HKC7geB92_@3a9@MGijS(hNNVd%-rZ;%@F_f7?Fjinbe1( zn#jQ*jKZTqE+AUTEd3y6t>*=;AO##cmdwU4gc2&rT8l`rtKW2JF<`_M#p>cj+)yCG zgKF)y8jrfxTjGO&ccm8RU>qn|HxQ7Z#sUo$q)P5H%8iBF$({0Ya51-rA@!It#NHN8MxqK zrYyl_&=}WVfQ?+ykV4*@F6)=u_~3BebR2G2>>mKaEBPmSW3(qYGGXj??m3L zHec{@jWCsSD8`xUy0pqT?Sw0oD?AUK*WxZn#D>-$`eI+IT)6ki>ic}W)t$V32^ITD zR497@LO}S|re%A+#vdv-?fXsQGVnP?QB_d0cGE+U84Q=aM=XrOwGFN3`Lpl@P0fL$ zKN1PqOwojH*($uaQFh8_)H#>Acl&UBSZ>!2W1Dinei`R4dJGX$;~60X=|SG6#jci} z&t4*dVDR*;+6Y(G{KGj1B2!qjvDYOyPC}%hnPbJ@g(4yBJrViG1#$$X75y+Ul1{%x zBAuD}Q@w?MFNqF-m39FGpq7RGI?%Bvyyig&oGv)lR>d<`Bqh=p>urib5DE;u$c|$J zwim~nPb19t?LJZsm{<(Iyyt@~H!a4yywmHKW&=1r5+oj*Fx6c89heW@(2R`i!Uiy* zp)=`Vr8sR!)KChE-6SEIyi(dvG3<1KoVt>kGV=zZiG7LGonH1+~yOK-`g0)r#+O|Q>)a`I2FVW%wr3lhO(P{ksNQuR!G_d zeTx(M!%brW_vS9?IF>bzZ2A3mWX-MEaOk^V|4d38{1D|KOlZSjBKrj7Fgf^>JyL0k zLoI$adZJ0T+8i_Idsuj}C;6jgx9LY#Ukh;!8eJ^B1N}q=Gn4onF*a2vY7~`x$r@rJ z`*hi&Z2lazgu{&nz>gjd>#eq*IFlXed(%$s5!HRXKNm zDZld+DwDI`O6hyn2uJ)F^{^;ESf9sjJ)wMSKD~R=DqPBHyP!?cGAvL<1|7K-(=?VO zGcKcF1spUa+ki<`6K#@QxOTsd847N8WSWztG~?~ z!gUJn>z0O=_)VCE|56hkT~n5xXTp}Ucx$Ii%bQ{5;-a4~I2e|{l9ur#*ghd*hSqO= z)GD@ev^w&5%k}YYB~!A%3*XbPPU-N6&3Lp1LxyP@|C<{qcn&?l54+zyMk&I3YDT|E z{lXH-e?C{huu<@~li+73lMOk&k)3s7Asn$t6!PtXJV!RkA`qdo4|OC_a?vR!kE_}k zK5R9KB%V@R7gt@9=TGL{=#r2gl!@3G;k-6sXp&E4u20DgvbY$iE**Xqj3TyxK>3AU z!b9}NXuINqt>Htt6fXIy5mj7oZ{A&$XJ&thR5ySE{mkxq_YooME#VCHm2+3D!f`{) zvR^WSjy_h4v^|!RJV-RaIT2Ctv=)UMMn@fAgjQV$2G+4?&dGA8vK35c-8r)z9Qqa=%k(FU)?iec14<^olkOU3p zF-6`zHiDKPafKK^USUU+D01>C&Wh{{q?>5m zGQp|z*+#>IIo=|ae8CtrN@@t~uLFOeT{}vX(IY*;>wAU=u1Qo4c+a&R);$^VCr>;! zv4L{`lHgc9$BeM)pQ#XA_(Q#=_iSZL4>L~8Hx}NmOC$&*Q*bq|9Aq}rWgFnMDl~d*;7c44GipcpH9PWaBy-G$*MI^F0 z?Tdxir1D<2ui+Q#^c4?uKvq=p>)lq56=Eb|N^qz~w7rsZu)@E4$;~snz+wIxi+980O6M#RmtgLYh@|2}9BiHSpTs zacjGKvwkUwR3lwTSsCHlwb&*(onU;)$yvdhikonn|B44JMgs*&Lo!jn`6AE>XvBiO z*LKNX3FVz9yLcsnmL!cRVO_qv=yIM#X|u&}#f%_?Tj0>8)8P_0r0!AjWNw;S44tst zv+NXY1{zRLf9OYMr6H-z?4CF$Y%MdbpFIN@a-LEnmkcOF>h16cH_;A|e)pJTuCJ4O zY7!4FxT4>4aFT8a92}84>q0&?46h>&0Vv0p>u~k&qd5$C1A6Q$I4V(5X~6{15;PD@ ze6!s9xh#^QI`J+%8*=^(-!P!@9%~buBmN2VSAp@TOo6}C?az+ALP8~&a0FWZk*F5N z^8P8IREnN`N0i@>O0?{i-FoFShYbUB`D7O4HB`Im2{yzXmyrg$k>cY6A@>bf7i3n0 z5y&cf2#`zctT>dz+hNF&+d3g;2)U!#vsb-%LC+pqKRTiiSn#FH#e!bVwR1nAf*TG^ z!RKcCy$P>?Sfq6n<%M{T0I8?p@HlgwC!HoWO>~mT+X<{Ylm+$Vtj9};H3$EB}P2wR$3y!TO#$iY8eO-!}+F&jMu4%E6S>m zB(N4w9O@2=<`WNJay5PwP8javDp~o~xkSbd4t4t8)9jqu@bHmJHq=MV~Pt|(TghCA}fhMS?s-{klV>~=VrT$nsp7mf{?cze~KKOD4 z_1Y!F)*7^W+BBTt1R2h4f1X4Oy2%?=IMhZU8c{qk3xI1=!na*Sg<=A$?K=Y=GUR9@ zQ(ylIm4Lgm>pt#%p`zHxok%vx_=8Fap1|?OM02|N%X-g5_#S~sT@A!x&8k#wVI2lo z1Uyj{tDQRpb*>c}mjU^gYA9{7mNhFAlM=wZkXcA#MHXWMEs^3>p9X)Oa?dx7b%N*y zLz@K^%1JaArjgri;8ptNHwz1<0y8tcURSbHsm=26^@CYJ3hwMaEvC7 z3Wi-@AaXIQ)%F6#i@%M>?Mw7$6(kW@?et@wbk-APcvMCC{>iew#vkZej8%9h0JSc? zCb~K|!9cBU+))^q*co(E^9jRl7gR4Jihyqa(Z(P&ID#TPyysVNL7(^;?Gan!OU>au zN}miBc&XX-M$mSv%3xs)bh>Jq9#aD_l|zO?I+p4_5qI0Ms*OZyyxA`sXcyiy>-{YN zA70%HmibZYcHW&YOHk6S&PQ+$rJ3(utuUra3V0~@=_~QZy&nc~)AS>v&<6$gErZC3 zcbC=eVkV4Vu0#}E*r=&{X)Kgq|8MGCh(wsH4geLj@#8EGYa})K2;n z{1~=ghoz=9TSCxgzr5x3@sQZZ0FZ+t{?klSI_IZa16pSx6*;=O%n!uXVZ@1IL;JEV zfOS&yyfE9dtS*^jmgt6>jQDOIJM5Gx#Y2eAcC3l^lmoJ{o0T>IHpECTbfYgPI4#LZq0PKqnPCD}_ zyKxz;(`fE0z~nA1s?d{X2!#ZP8wUHzFSOoTWQrk%;wCnBV_3D%3@EC|u$Ao)tO|AO z$4&aa!wbf}rbNcP{6=ajgg(`p5kTeu$ji20`zw)X1SH*x zN?T36{d9TY*S896Ijc^!35LLUByY4QO=ARCQ#MMCjudFc7s!z%P$6DESz%zZ#>H|i zw3Mc@v4~{Eke;FWs`5i@ifeYPh-Sb#vCa#qJPL|&quSKF%sp8*n#t?vIE7kFWjNFh zJC@u^bRQ^?ra|%39Ux^Dn4I}QICyDKF0mpe+Bk}!lFlqS^WpYm&xwIYxUoS-rJ)N9 z1Tz*6Rl9;x`4lwS1cgW^H_M*)Dt*DX*W?ArBf?-t|1~ge&S}xM0K;U9Ibf{okZHf~ z#4v4qc6s6Zgm8iKch5VMbQc~_V-ZviirnKCi*ouN^c_2lo&-M;YSA>W>>^5tlXObg zacX$k0=9Tf$Eg+#9k6yV(R5-&F{=DHP8!yvSQ`Y~XRnUx@{O$-bGCksk~3&qH^dqX zkf+ZZ?Nv5u>LBM@2?k%k&_aUb5Xjqf#!&7%zN#VZwmv65ezo^Y4S#(ed0yUn4tFOB zh1f1SJ6_s?a{)u6VdwUC!Hv=8`%T9(^c`2hc9nt$(q{Dm2X)dK49ba+KEheQ;7^0) ziFKw$%EHy_B1)M>=yK^=Z$U-LT36yX>EKT zvD8IAom2&2?bTmX@_PBR4W|p?6?LQ+&UMzXxqHC5VHzf@Eb1u)kwyfy+NOM8Wa2y@ zNNDL0PE$F;yFyf^jy&RGwDXQwYw6yz>OMWvJt98X@;yr!*RQDBE- zE*l*u=($Zi1}0-Y4lGaK?J$yQjgb+*ljUvNQ!;QYAoCq@>70=sJ{o{^21^?zT@r~hhf&O;Qiq+ ziGQQLG*D@5;LZ%09mwMiE4Q{IPUx-emo*;a6#DrmWr(zY27d@ezre)Z1BGZdo&pXn z+);gOFelKDmnjq#8dL7CTiVH)dHOqWi~uE|NM^QI3EqxE6+_n>IW67~UB#J==QOGF zp_S)c8TJ}uiaEiaER}MyB(grNn=2m&0yztA=!%3xUREyuG_jmadN*D&1nxvjZ6^+2 zORi7iX1iPi$tKasppaR9$a3IUmrrX)m*)fg1>H+$KpqeB*G>AQV((-G{}h=qItj|d zz~{5@{?&Dab6;0c7!!%Se>w($RmlG7Jlv_zV3Ru8b2rugY0MVPOOYGlokI7%nhIy& z-B&wE=lh2dtD!F?noD{z^O1~Tq4MhxvchzuT_oF3-t4YyA*MJ*n&+1X3~6quEN z@m~aEp=b2~mP+}TUP^FmkRS_PDMA{B zaSy(P=$T~R!yc^Ye0*pl5xcpm_JWI;@-di+nruhqZ4gy7cq-)I&s&Bt3BkgT(Zdjf zTvvv0)8xzntEtp4iXm}~cT+pi5k{w{(Z@l2XU9lHr4Vy~3ycA_T?V(QS{qwt?v|}k z_ST!s;C4!jyV5)^6xC#v!o*uS%a-jQ6< z)>o?z7=+zNNtIz1*F_HJ(w@=`E+T|9TqhC(g7kKDc8z~?RbKQ)LRMn7A1p*PcX2YR zUAr{);~c7I#3Ssv<0i-Woj0&Z4a!u|@Xt2J1>N-|ED<3$o2V?OwL4oQ%$@!zLamVz zB)K&Ik^~GOmDAa143{I4?XUk1<3-k{<%?&OID&>Ud%z*Rkt*)mko0RwC2=qFf-^OV z=d@47?tY=A;=2VAh0mF(3x;!#X!%{|vn;U2XW{(nu5b&8kOr)Kop3-5_xnK5oO_3y z!EaIb{r%D{7zwtGgFVri4_!yUIGwR(xEV3YWSI_+E}Gdl>TINWsIrfj+7DE?xp+5^ zlr3pM-Cbse*WGKOd3+*Qen^*uHk)+EpH-{u@i%y}Z!YSid<}~kA*IRSk|nf+I1N=2 zIKi+&ej%Al-M5`cP^XU>9A(m7G>58>o|}j0ZWbMg&x`*$B9j#Rnyo0#=BMLdo%=ks zLa3(2EinQLXQ(3zDe7Bce%Oszu%?8PO648TNst4SMFvj=+{b%)ELyB!0`B?9R6aO{i-63|s@|raSQGL~s)9R#J#duFaTSZ2M{X z1?YuM*a!!|jP^QJ(hAisJuPOM`8Y-Hzl~%d@latwj}t&0{DNNC+zJARnuQfiN`HQ# z?boY_2?*q;Qk)LUB)s8(Lz5elaW56p&fDH*AWAq7Zrbeq1!?FBGYHCnFgRu5y1jwD zc|yBz+UW|X`zDsc{W~8m$sh@VVnZD$lLnKlq@Hg^;ky!}ZuPdKNi2BI70;hrpvaA4+Q_+K)I@|)q1N-H zrycZU`*YUW``Qi^`bDX-j7j^&bO+-Xg$cz2#i##($uyW{Nl&{DK{=lLWV3|=<&si||2)l=8^8_z+Vho-#5LB0EqQ3v5U#*DF7 zxT)1j^`m+lW}p$>WSIG1eZ>L|YR-@Feu!YNWiw*IZYh03mq+2QVtQ}1ezRJM?0PA< z;mK(J5@N8>u@<6Y$QAHWNE};rR|)U_&bv8dsnsza7{=zD1VBcxrALqnOf-qW(zzTn zTAp|pEo#FsQ$~*$j|~Q;$Zy&Liu9OM;VF@#_&*nL!N2hH!Q6l*OeTxq!l>dEc{;Hw zCQni{iN%jHU*C;?M-VUaXxf0FEJ_G=C8)C-wD!DvhY+qQ#FT3}Th8;GgV&AV94F`D ztT6=w_Xm8)*)dBnDkZd~UWL|W=Glu!$hc|1w7_7l!3MAt95oIp4Xp{M%clu&TXehO z+L-1#{mjkpTF@?|w1P98OCky~S%@OR&o75P&ZHvC}Y=(2_{ib(-Al_7aZ^U?s34#H}= zGfFi5%KnFVCKtdO^>Htpb07#BeCXMDO8U}crpe1Gm`>Q=6qB4i=nLoLZ%p$TY=OcP z)r}Et-Ed??u~f09d3Nx3bS@ja!fV(Dfa5lXxRs#;8?Y8G+Qvz+iv7fiRkL3liip}) z&G0u8RdEC9c$$rdU53=MH`p!Jn|DHjhOxHK$tW_pw9wCTf0Eo<){HoN=zG!!Gq4z4 z7PwGh)VNPXW-cE#MtofE`-$9~nmmj}m zlzZscQ2+Jq%gaB9rMgVJkbhup0Ggpb)&L01T=%>n7-?v@I8!Q(p&+!fd+Y^Pu9l+u zek(_$^HYFVRRIFt@0Fp52g5Q#I`tC3li`;UtDLP*rA{-#Yoa5qp{cD)QYhldihWe+ zG~zuaqLY~$-1sjh2lkbXCX;lq+p~!2Z=76cvuQe*Fl>IFwpUBP+d^&E4BGc{m#l%Kuo6#{XGoRyFc%Hqhf|%nYd<;yiC>tyEyk z4I+a`(%%Ie=-*n z-{mg=j&t12)LH3R?@-B1tEb7FLMePI1HK0`Ae@#)KcS%!Qt9p4_fmBl5zhO10n401 zBSfnfJ;?_r{%R)hh}BBNSl=$BiAKbuWrNGQUZ)+0=Mt&5!X*D@yGCSaMNY&@`;^a4 z;v=%D_!K!WXV1!3%4P-M*s%V2b#2jF2bk!)#2GLVuGKd#vNpRMyg`kstw0GQ8@^k^ zuqK5uR<>FeRZ#3{%!|4X!hh7hgirQ@Mwg%%ez8pF!N$xhMNQN((yS(F2-OfduxxKE zxY#7O(VGfNuLv-ImAw5+h@gwn%!ER;*Q+001;W7W^waWT%@(T+5k!c3A-j)a8y11t zx4~rSN0s$M8HEOzkcWW4YbKK9GQez2XJ|Nq?TFy;jmGbg;`m&%U4hIiarKmdTHt#l zL=H;ZHE?fYxKQQXKnC+K!TAU}r086{4m}r()-QaFmU(qWhJlc$eas&y?=H9EYQy8N$8^bni9TpDp zkA^WRs?KgYgjxX4T6?`SMs$`s3vlut(YU~f2F+id(Rf_)$BIMibk9lACI~LA+i7xn z%-+=DHV*0TCTJp~-|$VZ@g2vmd*|2QXV;HeTzt530KyK>v&253N1l}bP_J#UjLy4) zBJili9#-ey8Kj(dxmW^ctorxd;te|xo)%46l%5qE-YhAjP`Cc03vT)vV&GAV%#Cgb zX~2}uWNvh`2<*AuxuJpq>SyNtZwzuU)r@@dqC@v=Ocd(HnnzytN+M&|Qi#f4Q8D=h ziE<3ziFW%+!yy(q{il8H44g^5{_+pH60Mx5Z*FgC_3hKxmeJ+wVuX?T#ZfOOD3E4C zRJsj#wA@3uvwZwHKKGN{{Ag+8^cs?S4N@6(Wkd$CkoCst(Z&hp+l=ffZ?2m%%ffI3 zdV7coR`R+*dPbNx=*ivWeNJK=Iy_vKd`-_Hng{l?hmp=|T3U&epbmgXXWs9ySE|=G zeQ|^ioL}tveN{s72_&h+F+W;G}?;?_s@h5>DX(rp#eaZ!E=NivgLI zWykLKev+}sHH41NCRm7W>K+_qdoJ8x9o5Cf!)|qLtF7Izxk*p|fX8UqEY)_sI_45O zL2u>x=r5xLE%s|d%MO>zU%KV6QKFiEeo12g#bhei4!Hm+`~Fo~4h|BJ)%ENxy9)Up zOxupSf1QZWun=)gF{L0YWJ<(r0?$bPFANrmphJ>kG`&7E+RgrWQi}ZS#-CQJ*i#8j zM_A0?w@4Mq@xvk^>QSvEU|VYQoVI=TaOrsLTa`RZfe8{9F~mM{L+C`9YP9?OknLw| zmkvz>cS6`pF0FYeLdY%>u&XpPj5$*iYkj=m7wMzHqzZ5SG~$i_^f@QEPEC+<2nf-{ zE7W+n%)q$!5@2pBuXMxhUSi*%F>e_g!$T-_`ovjBh(3jK9Q^~OR{)}!0}vdTE^M+m z9QWsA?xG>EW;U~5gEuKR)Ubfi&YWnXV;3H6Zt^NE725*`;lpSK4HS1sN?{~9a4JkD z%}23oAovytUKfRN87XTH2c=kq1)O5(fH_M3M-o{{@&~KD`~TRot-gqg7Q2U2o-iiF}K>m?CokhmODaLB z1p6(6JYGntNOg(s!(>ZU&lzDf+Ur)^Lirm%*}Z>T)9)fAZ9>k(kvnM;ab$ptA=hoh zVgsVaveXbMpm{|4*d<0>?l_JUFOO8A3xNLQOh%nVXjYI6X8h?a@6kDe5-m&;M0xqx z+1U$s>(P9P)f0!{z%M@E7|9nn#IWgEx6A6JNJ(7dk`%6$3@!C!l;JK-p2?gg+W|d- ziEzgk$w7k48NMqg$CM*4O~Abj3+_yUKTyK1p6GDsGEs;}=E_q>^LI-~pym$qhXPJf z2`!PJDp4l(TTm#|n@bN!j;-FFOM__eLl!6{*}z=)UAcGYloj?bv!-XY1TA6Xz;82J zLRaF{8ayzGa|}c--}|^xh)xgX>6R(sZD|Z|qX50gu=d`gEwHqC@WYU7{%<5VOnf9+ zB@FX?|UL%`8EIAe!*UdYl|6wRz6Y>(#8x92$#y}wMeE|ZM2X*c}dKJ^4NIf;Fm zNwzq%QcO?$NR-7`su!*$dlIKo2y(N;qgH@1|8QNo$0wbyyJ2^}$iZ>M{BhBjTdMjK z>gPEzgX4;g3$rU?jvDeOq`X=>)zdt|jk1Lv3u~bjHI=EGLfIR&+K3ldcc4D&Um&04 z3^F*}WaxR(ZyaB>DlmF_UP@+Q*h$&nsOB#gwLt{1#F4i-{A5J@`>B9@{^i?g_Ce&O z<<}_We-RUFU&&MHa1#t56u_oM(Ljn7djja!T|gcxSoR=)@?owC*NkDarpBj=W4}=i1@)@L|C) zQKA+o<(pMVp*Su(`zBC0l1yTa$MRfQ#uby|$mlOMs=G`4J|?apMzKei%jZql#gP@IkOaOjB7MJM=@1j(&!jNnyVkn5;4lvro1!vq ztXiV8HYj5%)r1PPpIOj)f!>pc^3#LvfZ(hz}C@-3R(Cx7R427*Fwd!XO z4~j&IkPHcBm0h_|iG;ZNrYdJ4HI!$rSyo&sibmwIgm1|J#g6%>=ML1r!kcEhm(XY& zD@mIJt;!O%WP7CE&wwE3?1-dt;RTHdm~LvP7K`ccWXkZ0kfFa2S;wGtx_a}S2lslw z$<4^Jg-n#Ypc(3t2N67Juasu=h)j&UNTPNDil4MQMTlnI81kY46uMH5B^U{~nmc6+ z9>(lGhhvRK9ITfpAD!XQ&BPphL3p8B4PVBN0NF6U49;ZA0Tr75AgGw7(S=Yio+xg_ zepZ*?V#KD;sHH+15ix&yCs0eSB-Z%D%uujlXvT#V$Rz@$+w!u#3GIo*AwMI#Bm^oO zLr1e}k5W~G0xaO!C%Mb{sarxWZ4%Dn9vG`KHmPC9GWZwOOm11XJp#o0-P-${3m4g( z6~)X9FXw%Xm~&99tj>a-ri})ZcnsfJtc10F@t9xF5vq6E)X!iUXHq-ohlO`gQdS&k zZl})3k||u)!_=nNlvMbz%AuIr89l#I$;rG}qvDGiK?xTd5HzMQkw*p$YvFLGyQM!J zNC^gD!kP{A84nGosi~@MLKqWQNacfs7O$dkZtm4-BZ~iA8xWZPkTK!HpA5zr!9Z&+icfAJ1)NWkTd!-9`NWU>9uXXUr;`Js#NbKFgrNhTcY4GNv*71}}T zFJh?>=EcbUd2<|fiL+H=wMw8hbX6?+_cl4XnCB#ddwdG>bki* zt*&6Dy&EIPluL@A3_;R%)shA-tDQA1!Tw4ffBRyy;2n)vm_JV06(4Or&QAOKNZB5f(MVC}&_!B>098R{Simr!UG}?CW1Ah+X+0#~0`X)od zLYablwmFxN21L))!_zc`IfzWi`5>MxPe(DmjjO1}HHt7TJtAW+VXHt!aKZk>y6PoMsbDXRJnov;D~Ur~2R_7(Xr)aa%wJwZhS3gr7IGgt%@;`jpL@gyc6bGCVx!9CE7NgIbUNZ!Ur1RHror0~ zr(j$^yM4j`#c2KxSP61;(Tk^pe7b~}LWj~SZC=MEpdKf;B@on9=?_n|R|0q;Y*1_@ z>nGq>)&q!;u-8H)WCwtL&7F4vbnnfSAlK1mwnRq2&gZrEr!b1MA z(3%vAbh3aU-IX`d7b@q`-WiT6eitu}ZH9x#d&qx}?CtDuAXak%5<-P!{a`V=$|XmJ zUn@4lX6#ulB@a=&-9HG)a>KkH=jE7>&S&N~0X0zD=Q=t|7w;kuh#cU=NN7gBGbQTT z;?bdSt8V&IIi}sDTzA0dkU}Z-Qvg;RDe8v>468p3*&hbGT1I3hi9hh~Z(!H}{+>eUyF)H&gdrX=k$aB%J6I;6+^^kn1mL+E+?A!A}@xV(Qa@M%HD5C@+-4Mb4lI=Xp=@9+^x+jhtOc zYgF2aVa(uSR*n(O)e6tf3JEg2xs#dJfhEmi1iOmDYWk|wXNHU?g23^IGKB&yHnsm7 zm_+;p?YpA#N*7vXCkeN2LTNG`{QDa#U3fcFz7SB)83=<8rF)|udrEbrZL$o6W?oDR zQx!178Ih9B#D9Ko$H(jD{4MME&<|6%MPu|TfOc#E0B}!j^MMpV69D#h2`vsEQ{(?c zJ3Lh!3&=yS5fWL~;1wCZ?)%nmK`Eqgcu)O6rD^3%ijcxL50^z?OI(LaVDvfL0#zjZ z2?cPvC$QCzpxpt5jMFp05OxhK0F!Q`rPhDi5)y=-0C} zIM~ku&S@pl1&0=jl+rlS<4`riV~LC-#pqNde@44MB(j%)On$0Ko(@q?4`1?4149Z_ zZi!5aU@2vM$dHR6WSZpj+VboK+>u-CbNi7*lw4K^ZxxM#24_Yc`jvb9NPVi75L+MlM^U~`;a7`4H0L|TYK>%hfEfXLsu1JGM zbh|8{wuc7ucV+`Ys1kqxsj`dajwyM;^X^`)#<+a~$WFy8b2t_RS{8yNYKKlnv+>vB zX(QTf$kqrJ;%I@EwEs{cIcH@Z3|#^S@M+5jsP<^`@8^I4_8MlBb`~cE^n+{{;qW2q z=p1=&+fUo%T{GhVX@;56kH8K_%?X=;$OTYqW1L*)hzelm^$*?_K;9JyIWhsn4SK(| zSmXLTUE8VQX{se#8#Rj*lz`xHtT<61V~fb;WZUpu(M)f#;I+2_zR+)y5Jv?l`CxAinx|EY!`IJ*x9_gf_k&Gx2alL!hK zUWj1T_pk|?iv}4EP#PZvYD_-LpzU!NfcLL%fK&r$W8O1KH9c2&GV~N#T$kaXGvAOl)|T zuF9%6(i=Y3q?X%VK-D2YIYFPH3f|g$TrXW->&^Ab`WT z7>Oo!u1u40?jAJ8Hy`bv}qbgs8)cF0&qeVjD?e+3Ggn1Im>K77ZSpbU*08 zfZkIFcv?y)!*B{|>nx@cE{KoutP+seQU?bCGE`tS0GKUO3PN~t=2u7q_6$l;uw^4c zVu^f{uaqsZ{*a-N?2B8ngrLS8E&s6}Xtv9rR9C^b`@q8*iH)pFzf1|kCfiLw6u{Z%aC z!X^5CzF6qofFJgklJV3oc|Qc2XdFl+y5M9*P8}A>Kh{ zWRgRwMSZ(?Jw;m%0etU5BsWT-Dj-5F;Q$OQJrQd+lv`i6>MhVo^p*^w6{~=fhe|bN z*37oV0kji)4an^%3ABbg5RC;CS50@PV5_hKfXjYx+(DqQdKC^JIEMo6X66$qDdLRc z!YJPSKnbY`#Ht6`g@xGzJmKzzn|abYbP+_Q(v?~~ z96%cd{E0BCsH^0HaWt{y(Cuto4VE7jhB1Z??#UaU(*R&Eo+J`UN+8mcb51F|I|n*J zJCZ3R*OdyeS9hWkc_mA7-br>3Tw=CX2bl(=TpVt#WP8Bg^vE_9bP&6ccAf3lFMgr` z{3=h@?Ftb$RTe&@IQtiJfV;O&4fzh)e1>7seG; z=%mA4@c7{aXeJnhEg2J@Bm;=)j=O=cl#^NNkQ<{r;Bm|8Hg}bJ-S^g4`|itx)~!LN zXtL}?f1Hs6UQ+f0-X6&TBCW=A4>bU0{rv8C4T!(wD-h>VCK4YJk`6C9$by!fxOYw- zV#n+0{E(0ttq_#16B} ze8$E#X9o{B!0vbq#WUwmv5Xz6{(!^~+}sBW{xctdNHL4^vDk!0E}(g|W_q;jR|ZK< z8w>H-8G{%R#%f!E7cO_^B?yFRKLOH)RT9GJsb+kAKq~}WIF)NRLwKZ^Q;>!2MNa|} z-mh?=B;*&D{Nd-mQRcfVnHkChI=DRHU4ga%xJ%+QkBd|-d9uRI76@BT(bjsjwS+r) zvx=lGNLv1?SzZ;P)Gnn>04fO7Culg*?LmbEF0fATG8S@)oJ>NT3pYAXa*vX!eUTDF ziBrp(QyDqr0ZMTr?4uG_Nqs6f%S0g?h`1vO5fo=5S&u#wI2d4+3hWiolEU!=3_oFo zfie?+4W#`;1dd#X@g9Yj<53S<6OB!TM8w8})7k-$&q5(smc%;r z(BlXkTp`C47+%4JA{2X}MIaPbVF!35P#p;u7+fR*46{T+LR8+j25oduCfDzDv6R-hU{TVVo9fz?^N3ShMt!t0NsH)pB zRK8-S{Dn*y3b|k^*?_B70<2gHt==l7c&cT>r`C#{S}J2;s#d{M)ncW(#Y$C*lByLQ z&?+{dR7*gpdT~(1;M(FfF==3z`^eW)=5a9RqvF-)2?S-(G zhS;p(u~_qBum*q}On@$#08}ynd0+spzyVco0%G6;<-i5&016cV5UKzhQ~)fX03|>L z8ej+HzzgVr6_5ZUpa4HW0Ca!=r1%*}Oo;2no&Zz8DfR)L!@r<5 z2viSZpmvo5XqXyAz{Ms7`7kX>fnr1gi4X~7KpznRT0{Xc5Cfz@43PjBMBoH@z_{~( z(Wd}IPJ9hH+%)Fc)0!hrV+(A;76rhtI|YHbEDeERV~Ya>SQg^IvlazFkSK(KG9&{q zkPIR~EeQaaBmwA<20}mBO?)N$(z1@p)5?%}rM| zGF()~Z&Kx@OIDRI$d0T8;JX@vj3^2%pd_+@l9~a4lntZ;AvUIjqIZbuNTR6@hNJoV zk4F;ut)LN4ARuyn2M6F~eg-e#UH%2P;8uPGFW^vq1vj8mdIayFOZo(tphk8C7hpT~ z1Fv8?b_LNR3QD9J+!v=p%}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/glyphicons-halflings-regular.ttf b/docs/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 G`u_lkUM?>H diff --git a/docs/fonts/glyphicons-halflings-regular.woff2 b/docs/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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 diff --git a/docs/logo.svg b/docs/logo.svg deleted file mode 100644 index ccb2d7bc..00000000 --- a/docs/logo.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - -Created by Docfx - - - - - - - diff --git a/docs/manifest.json b/docs/manifest.json deleted file mode 100644 index 202b1ff4..00000000 --- a/docs/manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"homepages":[],"source_base_path":"C:/Projects/GitHub/Cloudikka/polyline-algorithm-csharp/src/Cloudikka.PolylineAlgorithm","xrefmap":"xrefmap.yml","files":[{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.PolylineAlgorithm.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.PolylineAlgorithm.html","hash":"DuxXQJFG0JnJK4XZfGoqSw=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Validation.CoordinateValidator.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Validation.CoordinateValidator.html","hash":"bHKr12B+LaPPoDIiM/GdEw=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Validation.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Validation.html","hash":"JRNjS8Iv+pO6MsunBCDXvA=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.html","hash":"m5VwU6ucCYySNK9o1V+ObQ=="}},"is_incremental":false},{"type":"Toc","source_relative_path":"../../docs/source/api/toc.yml","output":{".html":{"relative_path":"api/toc.html","hash":"MJBrHUiuNZAV/fYefVG24A=="}},"is_incremental":false},{"type":"Toc","source_relative_path":"../../docs/source/toc.yml","output":{".html":{"relative_path":"toc.html","hash":"ErjYhgldNN21zQh8L4Olrg=="}},"is_incremental":false},{"type":"Toc","source_relative_path":"../../docs/source/articles/toc.yml","output":{".html":{"relative_path":"articles/toc.html","hash":"dsfYf/xjrWq6mnqKHgnW9g=="}},"is_incremental":false},{"type":"Conceptual","source_relative_path":"../../docs/source/api/index.md","output":{".html":{"relative_path":"api/index.html","hash":"dPgHIsVe2ZXJr7/R6lmg7Q=="}},"is_incremental":false},{"type":"Conceptual","source_relative_path":"../../docs/source/index.md","output":{".html":{"relative_path":"index.html","hash":"OqddFoprNY6Yz18TAcxrrA=="}},"is_incremental":false},{"type":"Conceptual","source_relative_path":"../../docs/source/articles/intro.md","output":{".html":{"relative_path":"articles/intro.html","hash":"bhq6zzP77tZUevOHXJu4fw=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Encoding.IPolylineEncoding-1.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Encoding.IPolylineEncoding-1.html","hash":"TcaAT5pBvPQKZDEXksnw6w=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Encoding.PolylineEncoding.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Encoding.PolylineEncoding.html","hash":"AkMKRIs+xaAFilAKiDfIRA=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Encoding.PolylineEncodingBase-1.html","hash":"xGg93o6lzLNcZTa046c4cQ=="}},"is_incremental":false},{"type":"ManagedReference","source_relative_path":"../../docs/source/api/Cloudikka.PolylineAlgorithm.Encoding.yml","output":{".html":{"relative_path":"api/Cloudikka.PolylineAlgorithm.Encoding.html","hash":"q9cIXLi1Eu31lwAwDxYBmA=="}},"is_incremental":false}]} \ No newline at end of file diff --git a/docs/search-stopwords.json b/docs/search-stopwords.json deleted file mode 100644 index 0bdcc2c0..00000000 --- a/docs/search-stopwords.json +++ /dev/null @@ -1,121 +0,0 @@ -[ - "a", - "able", - "about", - "across", - "after", - "all", - "almost", - "also", - "am", - "among", - "an", - "and", - "any", - "are", - "as", - "at", - "be", - "because", - "been", - "but", - "by", - "can", - "cannot", - "could", - "dear", - "did", - "do", - "does", - "either", - "else", - "ever", - "every", - "for", - "from", - "get", - "got", - "had", - "has", - "have", - "he", - "her", - "hers", - "him", - "his", - "how", - "however", - "i", - "if", - "in", - "into", - "is", - "it", - "its", - "just", - "least", - "let", - "like", - "likely", - "may", - "me", - "might", - "most", - "must", - "my", - "neither", - "no", - "nor", - "not", - "of", - "off", - "often", - "on", - "only", - "or", - "other", - "our", - "own", - "rather", - "said", - "say", - "says", - "she", - "should", - "since", - "so", - "some", - "than", - "that", - "the", - "their", - "them", - "then", - "there", - "these", - "they", - "this", - "tis", - "to", - "too", - "twas", - "us", - "wants", - "was", - "we", - "were", - "what", - "when", - "where", - "which", - "while", - "who", - "whom", - "why", - "will", - "with", - "would", - "yet", - "you", - "your" -] diff --git a/docs/styles/docfx.css b/docs/styles/docfx.css deleted file mode 100644 index 83800086..00000000 --- a/docs/styles/docfx.css +++ /dev/null @@ -1,882 +0,0 @@ -/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ -html, -body { - font-family: 'Segoe UI', Tahoma, Helvetica, sans-serif; - height: 100%; -} -button, -a { - color: #337ab7; - cursor: pointer; -} -button:hover, -button:focus, -a:hover, -a:focus { - color: #23527c; - text-decoration: none; -} -a.disable, -a.disable:hover { - text-decoration: none; - cursor: default; - color: #000000; -} - -/* workaround for leave space for fixed navbar with # anchor url*/ - -h1:before, -h2:before, -h3:before, -h4:before { - content: ''; - display: block; - position: relative; - width: 0; - height: 100px; - margin-top: -100px; -} - -h1, h2, h3, h4, h5, h6, span.xref { - word-wrap: break-word; - word-break: break-all; -} - -h1 mark, -h2 mark, -h3 mark, -h4 mark, -h5 mark, -h6 mark { - padding: 0; -} - -.inheritance .level0:before, -.inheritance .level1:before, -.inheritance .level2:before, -.inheritance .level3:before, -.inheritance .level4:before, -.inheritance .level5:before { - content: '↳'; - margin-right: 5px; -} - -.inheritance .level0 { - margin-left: 0em; -} - -.inheritance .level1 { - margin-left: 1em; -} - -.inheritance .level2 { - margin-left: 2em; -} - -.inheritance .level3 { - margin-left: 3em; -} - -.inheritance .level4 { - margin-left: 4em; -} - -.inheritance .level5 { - margin-left: 5em; -} - -span.parametername, -span.paramref, -span.typeparamref { - font-style: italic; -} -span.languagekeyword{ - font-weight: bold; -} - -svg:hover path { - fill: #ffffff; -} - -.hljs { - display: inline; - background-color: inherit; - padding: 0; -} -/* additional spacing fixes */ -.btn + .btn { - margin-left: 10px; -} -.btn.pull-right { - margin-left: 10px; - margin-top: 5px; -} -.table { - margin-bottom: 10px; -} -table p { - margin-bottom: 0; -} -table a { - display: inline-block; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 15px; - margin-bottom: 10px; - font-weight: 400; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 5px; -} -.navbar { - margin-bottom: 0; -} -#wrapper { - min-height: 100%; - position: relative; -} -/* blends header footer and content together with gradient effect */ -.grad-top { - /* For Safari 5.1 to 6.0 */ - /* For Opera 11.1 to 12.0 */ - /* For Firefox 3.6 to 15 */ - background: linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0)); - /* Standard syntax */ - height: 5px; -} -.grad-bottom { - /* For Safari 5.1 to 6.0 */ - /* For Opera 11.1 to 12.0 */ - /* For Firefox 3.6 to 15 */ - background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); - /* Standard syntax */ - height: 5px; -} -.divider { - margin: 0 5px; - color: #cccccc; -} -hr { - border-color: #cccccc; -} -header { - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 1000; -} -header .navbar { - border-width: 0 0 1px; - border-radius: 0; -} -.navbar-brand { - font-size: inherit; - padding: 0; -} -.navbar-collapse { - margin: 0 -15px; -} -.subnav { - min-height: 40px; -} - -.inheritance h5, .inheritedMembers h5{ - padding-bottom: 5px; - border-bottom: 1px solid #ccc; -} - -article h1, article h2, article h3, article h4{ - margin-top: 25px; -} - -article h4{ - border-bottom: 1px solid #ccc; -} - -article span.small.pull-right{ - margin-top: 20px; -} - -article section { - margin-left: 1em; -} - -/*.expand-all { - padding: 10px 0; -}*/ -.breadcrumb { - margin: 0; - padding: 10px 0; - background-color: inherit; - white-space: nowrap; -} -.breadcrumb > li + li:before { - content: "\00a0/"; -} -#autocollapse.collapsed .navbar-header { - float: none; -} -#autocollapse.collapsed .navbar-toggle { - display: block; -} -#autocollapse.collapsed .navbar-collapse { - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -} -#autocollapse.collapsed .navbar-collapse.collapse { - display: none !important; -} -#autocollapse.collapsed .navbar-nav { - float: none !important; - margin: 7.5px -15px; -} -#autocollapse.collapsed .navbar-nav > li { - float: none; -} -#autocollapse.collapsed .navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; -} -#autocollapse.collapsed .collapse.in, -#autocollapse.collapsed .collapsing { - display: block !important; -} -#autocollapse.collapsed .collapse.in .navbar-right, -#autocollapse.collapsed .collapsing .navbar-right { - float: none !important; -} -#autocollapse .form-group { - width: 100%; -} -#autocollapse .form-control { - width: 100%; -} -#autocollapse .navbar-header { - margin-left: 0; - margin-right: 0; -} -#autocollapse .navbar-brand { - margin-left: 0; -} -.collapse.in, -.collapsing { - text-align: center; -} -.collapsing .navbar-form { - margin: 0 auto; - max-width: 400px; - padding: 10px 15px; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -} -.collapsed .collapse.in .navbar-form { - margin: 0 auto; - max-width: 400px; - padding: 10px 15px; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -} -.navbar .navbar-nav { - display: inline-block; -} -.docs-search { - background: white; - vertical-align: middle; -} -.docs-search > .search-query { - font-size: 14px; - border: 0; - width: 120%; - color: #555; -} -.docs-search > .search-query:focus { - outline: 0; -} -.search-results-frame { - clear: both; - display: table; - width: 100%; -} -.search-results.ng-hide { - display: none; -} -.search-results-container { - padding-bottom: 1em; - border-top: 1px solid #111; - background: rgba(25, 25, 25, 0.5); -} -.search-results-container .search-results-group { - padding-top: 50px !important; - padding: 10px; -} -.search-results-group-heading { - font-family: "Open Sans"; - padding-left: 10px; - color: white; -} -.search-close { - position: absolute; - left: 50%; - margin-left: -100px; - color: white; - text-align: center; - padding: 5px; - background: #333; - border-top-right-radius: 5px; - border-top-left-radius: 5px; - width: 200px; - box-shadow: 0 0 10px #111; -} -#search { - display: none; -} - -/* Search results display*/ -#search-results { - max-width: 960px !important; - margin-top: 120px; - margin-bottom: 115px; - margin-left: auto; - margin-right: auto; - line-height: 1.8; - display: none; -} - -#search-results>.search-list { - text-align: center; - font-size: 2.5rem; - margin-bottom: 50px; -} - -#search-results p { - text-align: center; -} - -#search-results .sr-items { - font-size: 24px; -} - -.sr-item { - margin-bottom: 25px; -} - -.sr-item>.item-href { - font-size: 14px; - color: #093; -} - -.sr-item>.item-brief { - font-size: 13px; -} - -.pagination>li>a { - color: #47A7A0 -} - -.pagination>.active>a { - background-color: #47A7A0; - border-color: #47A7A0; -} - -.fixed_header { - position: fixed; - width: 100%; - padding-bottom: 10px; - padding-top: 10px; - margin: 0px; - top: 0; - z-index: 9999; - left: 0; -} - -.fixed_header+.toc{ - margin-top: 50px; - margin-left: 0; -} - -.sidenav, .fixed_header, .toc { - background-color: #f1f1f1; -} - -.sidetoc { - position: fixed; - width: 260px; - top: 150px; - bottom: 0; - overflow-x: hidden; - overflow-y: auto; - background-color: #f1f1f1; - border-left: 1px solid #e7e7e7; - border-right: 1px solid #e7e7e7; - z-index: 1; -} - -body .toc{ - background-color: #f1f1f1; - overflow-x: hidden; -} - -.sidetoggle.ng-hide { - display: block !important; -} -.sidetoc-expand > .caret { - margin-left: 0px; - margin-top: -2px; -} -.sidetoc-expand > .caret-side { - border-left: 4px solid; - border-top: 4px solid transparent; - border-bottom: 4px solid transparent; - margin-left: 4px; - margin-top: -4px; -} -.sidetoc-heading { - font-weight: 500; -} - -.toc { - margin: 0px 0 0 10px; - padding: 0 10px; -} -.expand-stub { - position: absolute; - left: -10px; -} -.toc .nav > li > a.sidetoc-expand { - position: absolute; - top: 0; - left: 0; -} -.toc .nav > li > a { - color: #666666; - display: inline; - padding: 0; -} -.toc .nav > li > .expand-stub + a { - margin-left: 5px; - display: block; -} -.toc .nav > li > a:hover, -.toc .nav > li > a:focus { - color: #000000; - background: none; - text-decoration: inherit; -} -.toc .nav > li.active > a { - color: #337ab7; -} -.toc .nav > li.active > a:hover, -.toc .nav > li.active > a:focus { - color: #23527c; -} - -.toc .nav > li> .expand-stub { - cursor: pointer; -} - -.toc .nav > li.active > .expand-stub::before, -.toc .nav > li.in > .expand-stub::before, -.toc .nav > li.in.active > .expand-stub::before, -.toc .nav > li.filtered > .expand-stub::before { - content: "-"; -} - -.toc .nav > li > .expand-stub::before, -.toc .nav > li.active > .expand-stub::before { - content: "+"; -} - -.toc .nav > li.filtered > ul, -.toc .nav > li.in > ul { - display: block; -} - -.toc .nav > li > ul { - display: none; -} - -.toc .level1 > li { - font-weight: bold; - margin-top: 10px; - position: relative; -} -.toc .level2 { - font-weight: normal; - margin-top: 5px; - margin-left: 15px; - font-size: 14px; -} -.toc .level3 { - font-size: 12px; -} -.toc-toggle { - display: none; - margin: 0 15px 0px 15px; -} -.sidefilter { - position: fixed; - top: 90px; - width: 260px; - background-color: #f1f1f1; - padding: 15px; - border-left: 1px solid #e7e7e7; - border-right: 1px solid #e7e7e7; - z-index: 1; -} -.toc-filter { - border-radius: 5px; - background: #fff; - color: #666666; - padding: 5px; - position: relative; - margin: 0 5px 0 5px; -} -.toc-filter > input { - border: 0; - color: #666666; - padding-left: 20px; - width: 100%; -} -.toc-filter > input:focus { - outline: 0; -} -.toc-filter > .filter-icon { - position: absolute; - top: 10px; - left: 5px; -} -.article { - margin-top: 120px; - margin-bottom: 115px; -} - -#_content>a{ - margin-top: 105px; -} - -.article.grid-right { - margin-left: 280px; -} - -.inheritance hr { - margin-top: 5px; - margin-bottom: 5px; -} -.article img { - max-width: 100%; -} -.sideaffix { - margin-top: 50px; - font-size: 12px; - max-height: 100%; - overflow: hidden; - top: 100px; - bottom: 10px; - position: fixed; -} -.affix { - position: relative; - height: 100%; -} -.sideaffix > div.contribution { - margin-bottom: 20px; -} -.sideaffix > div.contribution > ul > li > a.contribution-link { - padding: 6px 10px; - font-weight: bold; - font-size: 14px; -} -.sideaffix > div.contribution > ul > li > a.contribution-link:hover { - background-color: #ffffff; -} -.sideaffix ul.nav > li > a:focus { - background: none; -} -.affix h5 { - font-weight: bold; - text-transform: uppercase; - padding-left: 10px; - font-size: 12px; -} -.affix > ul.level1 { - overflow: hidden; - padding-bottom: 10px; - height: calc(100% - 100px); - margin-right: -20px; -} -.affix ul > li > a:before { - color: #cccccc; - position: absolute; -} -.affix ul > li > a:hover { - background: none; - color: #666666; -} -.affix ul > li.active > a, -.affix ul > li.active > a:before { - color: #337ab7; -} -.affix ul > li > a { - padding: 5px 12px; - color: #666666; -} -.affix > ul > li.active:last-child { - margin-bottom: 50px; -} -.affix > ul > li > a:before { - content: "|"; - font-size: 16px; - top: 1px; - left: 0; -} -.affix > ul > li.active > a, -.affix > ul > li.active > a:before { - color: #337ab7; - font-weight: bold; -} -.affix ul ul > li > a { - padding: 2px 15px; -} -.affix ul ul > li > a:before { - content: ">"; - font-size: 14px; - top: -1px; - left: 5px; -} -.affix ul > li > a:before, -.affix ul ul { - display: none; -} -.affix ul > li.active > ul, -.affix ul > li.active > a:before, -.affix ul > li > a:hover:before { - display: block; - white-space: nowrap; -} -.codewrapper { - position: relative; -} -.trydiv { - height: 0px; -} -.tryspan { - position: absolute; - top: 0px; - right: 0px; - border-style: solid; - border-radius: 0px 4px; - box-sizing: border-box; - border-width: 1px; - border-color: #cccccc; - text-align: center; - padding: 2px 8px; - background-color: white; - font-size: 12px; - cursor: pointer; - z-index: 100; - display: none; - color: #767676; -} -.tryspan:hover { - background-color: #3b8bd0; - color: white; - border-color: #3b8bd0; -} -.codewrapper:hover .tryspan { - display: block; -} -.sample-response .response-content{ - max-height: 200px; -} -footer { - position: absolute; - left: 0; - right: 0; - bottom: 0; - z-index: 1000; -} -.footer { - border-top: 1px solid #e7e7e7; - background-color: #f8f8f8; - padding: 15px 0; -} -@media (min-width: 768px) { - #sidetoggle.collapse { - display: block; - } - .topnav .navbar-nav { - float: none; - white-space: nowrap; - } - .topnav .navbar-nav > li { - float: none; - display: inline-block; - } -} -@media only screen and (max-width: 768px) { - #mobile-indicator { - display: block; - } - /* TOC display for responsive */ - .article { - margin-top: 30px !important; - } - header { - position: static; - } - .topnav { - text-align: center; - } - .sidenav { - padding: 15px 0; - margin-left: -15px; - margin-right: -15px; - } - .sidefilter { - position: static; - width: auto; - float: none; - border: none; - } - .sidetoc { - position: static; - width: auto; - float: none; - padding-bottom: 0px; - border: none; - } - .toc .level2 > li { - display: inline-block; - } - .toc .level2 > li:after { - margin-left: -3px; - margin-right: 5px; - content: ", "; - color: #666666; - } - .article.grid-right { - margin-left: 0; - } - .grad-top, - .grad-bottom { - display: none; - } - .toc-toggle { - display: block; - } - .sidetoggle.ng-hide { - display: none !important; - } - /*.expand-all { - display: none; - }*/ - .sideaffix { - display: none; - } - .mobile-hide { - display: none; - } - .breadcrumb { - white-space: inherit; - } - - /* workaround for #hashtag url is no longer needed*/ - h1:before, - h2:before, - h3:before, - h4:before { - content: ''; - display: none; - } -} - -/* For toc iframe */ -@media (max-width: 260px) { - .toc .level2 > li { - display: block; - } - - .toc .level2 > li:after { - display: none; - } -} - -/* For code snippet line highlight */ -pre > code .line-highlight { - background-color: #ffffcc; -} - -/* Alerts */ -.alert h5 { - text-transform: uppercase; - font-weight: bold; - margin-top: 0; -} - -.alert h5:before { - position:relative; - top:1px; - display:inline-block; - font-family:'Glyphicons Halflings'; - line-height:1; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale; - margin-right: 5px; - font-weight: normal; -} - -.alert-info h5:before { - content:"\e086" -} - -.alert-warning h5:before { - content:"\e127" -} - -.alert-danger h5:before { - content:"\e107" -} - -/* For Embedded Video */ -div.embeddedvideo { - padding-top: 56.25%; - position: relative; - width: 100%; -} - -div.embeddedvideo iframe { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; -} - -/* For printer */ -@media print{ - .article.grid-right { - margin-top: 0px; - margin-left: 0px; - } - .sideaffix { - display: none; - } - .mobile-hide { - display: none; - } - .footer { - display: none; - } -} \ No newline at end of file diff --git a/docs/styles/docfx.js b/docs/styles/docfx.js deleted file mode 100644 index 0f84531f..00000000 --- a/docs/styles/docfx.js +++ /dev/null @@ -1,700 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. -$(function () { - var active = 'active'; - var expanded = 'in'; - var collapsed = 'collapsed'; - var filtered = 'filtered'; - var show = 'show'; - var hide = 'hide'; - - // Styling for tables in conceptual documents using Bootstrap. - // See http://getbootstrap.com/css/#tables - (function () { - $('table').addClass('table table-bordered table-striped table-condensed'); - })(); - - // Styling for alerts. - (function () { - $('.NOTE, .TIP').addClass('alert alert-info'); - $('.WARNING').addClass('alert alert-warning'); - $('.IMPORTANT, .CAUTION').addClass('alert alert-danger'); - })(); - - // Enable highlight.js - (function () { - $('pre code').each(function(i, block) { - hljs.highlightBlock(block); - }); - })(); - - // Line highlight for code snippet - (function () { - $('pre code[highlight-lines]').each(function (i, block) { - if (block.innerHTML === "") return; - var lines = block.innerHTML.split('\n'); - - queryString = block.getAttribute('highlight-lines'); - if (!queryString) return; - - var ranges = queryString.split(','); - for (var j = 0, range; range = ranges[j++];) { - var found = range.match(/^(\d+)\-(\d+)?$/); - if (found) { - // consider region as `{startlinenumber}-{endlinenumber}`, in which {endlinenumber} is optional - var start = +found[1]; - var end = +found[2]; - if (isNaN(end) || end > lines.length) { - end = lines.length; - } - } else { - // consider region as a sigine line number - if (isNaN(range)) continue; - var start = +range; - var end = start; - } - if (start <= 0 || end <= 0 || start > end || start > lines.length) { - // skip current region if invalid - continue; - } - lines[start - 1] = '' + lines[start - 1]; - lines[end - 1] = lines[end - 1] + ''; - } - - block.innerHTML = lines.join('\n'); - }); - })(); - - //Adjust the position of search box in navbar - (function () { - autoCollapse(); - $(window).on('resize', autoCollapse); - $(document).on('click', '.navbar-collapse.in', function (e) { - if ($(e.target).is('a')) { - $(this).collapse('hide'); - } - }); - - function autoCollapse() { - var navbar = $('#autocollapse'); - if (navbar.height() === null) { - setTimeout(autoCollapse, 300); - } - navbar.removeClass(collapsed); - if (navbar.height() > 60) { - navbar.addClass(collapsed); - } - } - })(); - - // Support full-text-search - (function () { - var query; - var relHref = $("meta[property='docfx\\:rel']").attr("content") || ""; - var search = searchFactory(); - search(); - highlightKeywords(); - addSearchEvent(); - - // Search factory - function searchFactory() { - var worker = new Worker(relHref + 'styles/search-worker.js'); - if (!worker) return localSearch; - return window.Worker ? webWorkerSearch : localSearch; - - function localSearch() { - console.log("using local search"); - var lunrIndex = lunr(function () { - this.ref('href'); - this.field('title', { boost: 50 }); - this.field('keywords', { boost: 20 }); - }); - lunr.tokenizer.seperator = /[\s\-\.]+/; - var searchData = {}; - var searchDataRequest = new XMLHttpRequest(); - - var indexPath = relHref + "index.json"; - if (indexPath) { - searchDataRequest.open('GET', indexPath); - searchDataRequest.onload = function () { - searchData = JSON.parse(this.responseText); - for (var prop in searchData) { - lunrIndex.add(searchData[prop]); - } - } - searchDataRequest.send(); - } - - $("body").bind("queryReady", function () { - var hits = lunrIndex.search(query); - var results = []; - hits.forEach(function (hit) { - var item = searchData[hit.ref]; - results.push({ 'href': item.href, 'title': item.title, 'keywords': item.keywords }); - }); - handleSearchResults(results); - }); - } - - function webWorkerSearch() { - console.log("using Web Worker"); - var indexReady = $.Deferred(); - - worker.onmessage = function (oEvent) { - switch (oEvent.data.e) { - case 'index-ready': - indexReady.resolve(); - break; - case 'query-ready': - var hits = oEvent.data.d; - handleSearchResults(hits); - break; - } - } - - indexReady.promise().done(function () { - $("body").bind("queryReady", function () { - worker.postMessage({ q: query }); - }); - }); - } - }; - - // Highlight the searching keywords - function highlightKeywords() { - var q = url('?q'); - if (q !== null) { - var keywords = q.split("%20"); - keywords.forEach(function (keyword) { - if (keyword !== "") { - $('.data-searchable *').mark(keyword); - $('article *').mark(keyword); - } - }); - } - } - - function addSearchEvent() { - $('body').bind("searchEvent", function () { - $('#search-query').keypress(function (e) { - return e.which !== 13; - }); - - $('#search-query').keyup(function () { - query = $(this).val(); - if (query.length < 3) { - flipContents("show"); - } else { - flipContents("hide"); - $("body").trigger("queryReady"); - $('#search-results>.search-list').text('Search Results for "' + query + '"'); - } - }).off("keydown"); - }); - } - - function flipContents(action) { - if (action === "show") { - $('.hide-when-search').show(); - $('#search-results').hide(); - } else { - $('.hide-when-search').hide(); - $('#search-results').show(); - } - } - - function relativeUrlToAbsoluteUrl(currentUrl, relativeUrl) { - var currentItems = currentUrl.split(/\/+/); - var relativeItems = relativeUrl.split(/\/+/); - var depth = currentItems.length - 1; - var items = []; - for (var i = 0; i < relativeItems.length; i++) { - if (relativeItems[i] === '..') { - depth--; - } else if (relativeItems[i] !== '.') { - items.push(relativeItems[i]); - } - } - return currentItems.slice(0, depth).concat(items).join('/'); - } - - function extractContentBrief(content) { - var briefOffset = 512; - var words = query.split(/\s+/g); - var queryIndex = content.indexOf(words[0]); - var briefContent; - if (queryIndex > briefOffset) { - return "..." + content.slice(queryIndex - briefOffset, queryIndex + briefOffset) + "..."; - } else if (queryIndex <= briefOffset) { - return content.slice(0, queryIndex + briefOffset) + "..."; - } - } - - function handleSearchResults(hits) { - var numPerPage = 10; - $('#pagination').empty(); - $('#pagination').removeData("twbs-pagination"); - if (hits.length === 0) { - $('#search-results>.sr-items').html('

No results found

'); - } else { - $('#pagination').twbsPagination({ - totalPages: Math.ceil(hits.length / numPerPage), - visiblePages: 5, - onPageClick: function (event, page) { - var start = (page - 1) * numPerPage; - var curHits = hits.slice(start, start + numPerPage); - $('#search-results>.sr-items').empty().append( - curHits.map(function (hit) { - var currentUrl = window.location.href; - var itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href); - var itemHref = relHref + hit.href + "?q=" + query; - var itemTitle = hit.title; - var itemBrief = extractContentBrief(hit.keywords); - - var itemNode = $('
').attr('class', 'sr-item'); - var itemTitleNode = $('
').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").text(itemTitle)); - var itemHrefNode = $('
').attr('class', 'item-href').text(itemRawHref); - var itemBriefNode = $('
').attr('class', 'item-brief').text(itemBrief); - itemNode.append(itemTitleNode).append(itemHrefNode).append(itemBriefNode); - return itemNode; - }) - ); - query.split(/\s+/).forEach(function (word) { - if (word !== '') { - $('#search-results>.sr-items *').mark(word); - } - }); - } - }); - } - } - })(); - - // Update href in navbar - (function () { - var toc = $('#sidetoc'); - var breadcrumb = new Breadcrumb(); - loadNavbar(); - loadToc(); - function loadNavbar() { - var navbarPath = $("meta[property='docfx\\:navrel']").attr("content"); - var tocPath = $("meta[property='docfx\\:tocrel']").attr("content"); - if (tocPath) tocPath = tocPath.replace(/\\/g, '/'); - if (navbarPath) navbarPath = navbarPath.replace(/\\/g, '/'); - $.get(navbarPath, function (data) { - $(data).find("#toc>ul").appendTo("#navbar"); - if ($('#search-results').length !== 0) { - $('#search').show(); - $('body').trigger("searchEvent"); - } - var index = navbarPath.lastIndexOf('/'); - var navrel = ''; - if (index > -1) { - navrel = navbarPath.substr(0, index + 1); - } - $('#navbar>ul').addClass('navbar-nav'); - var currentAbsPath = getAbsolutePath(window.location.pathname); - // set active item - $('#navbar').find('a[href]').each(function (i, e) { - var href = $(e).attr("href"); - if (isRelativePath(href)) { - href = navrel + href; - $(e).attr("href", href); - - // TODO: currently only support one level navbar - var isActive = false; - var originalHref = e.name; - if (originalHref) { - originalHref = navrel + originalHref; - if (getDirectory(getAbsolutePath(originalHref)) === getDirectory(getAbsolutePath(tocPath))) { - isActive = true; - } - } else { - if (getAbsolutePath(href) === currentAbsPath) { - isActive = true; - } - } - if (isActive) { - $(e).parent().addClass(active); - if (!breadcrumb.isNavPartLoaded) { - breadcrumb.insert({ - href: e.href, - name: e.innerHTML - }, 0); - breadcrumb.isNavPartLoaded = true; - } - } else { - $(e).parent().removeClass(active) - } - } - }); - }); - } - - function loadToc() { - var tocPath = $("meta[property='docfx\\:tocrel']").attr("content"); - if (tocPath) tocPath = tocPath.replace(/\\/g, '/'); - $('#sidetoc').load(tocPath + " #sidetoggle > div", function () { - registerTocEvents(); - - var index = tocPath.lastIndexOf('/'); - var tocrel = ''; - if (index > -1) { - tocrel = tocPath.substr(0, index + 1); - } - var currentHref = getAbsolutePath(window.location.pathname); - $('#sidetoc').find('a[href]').each(function (i, e) { - var href = $(e).attr("href"); - if (isRelativePath(href)) { - href = tocrel + href; - $(e).attr("href", href); - } - - if (getAbsolutePath(e.href) === currentHref) { - $(e).parent().addClass(active); - var parent = $(e).parent().parents('li').children('a'); - if (!breadcrumb.isTocPartLoaded) { - for (var i = parent.length - 1; i >= 0; i--) { - breadcrumb.push({ - href: parent[i].href, - name: parent[i].innerHTML - }); - } - breadcrumb.push({ - href: e.href, - name: e.innerHTML - }); - breadcrumb.isTocPartLoaded = true; - } - if (parent.length > 0) { - parent.addClass(active); - } - // for active li, expand it - $(e).parents('ul.nav>li').addClass(expanded); - - // Scroll to active item - var top = 0; - $(e).parents('li').each(function (i, e) { - top += $(e).position().top; - }); - // 50 is the size of the filter box - $('.sidetoc').scrollTop(top - 50); - if ($('footer').is(':visible')) { - $(".sidetoc").css("bottom", "70px"); - } - } else { - $(e).parent().removeClass(active); - $(e).parents('li').children('a').removeClass(active); - } - }); - }); - } - - function registerTocEvents() { - $('.toc .nav > li > .expand-stub').click(function (e) { - $(e.target).parent().toggleClass(expanded); - }); - $('.toc .nav > li > .expand-stub + a:not([href])').click(function (e) { - $(e.target).parent().toggleClass(expanded); - }); - $('#toc_filter_input').on('input', function (e) { - var val = this.value; - if (val === '') { - // Clear 'filtered' class - $('#toc li').removeClass(filtered).removeClass(hide); - return; - } - - // Get leaf nodes - $('#toc li>a').filter(function (i, e) { - return $(e).siblings().length === 0 - }).each(function (i, anchor) { - var text = $(anchor).text(); - var parent = $(anchor).parent(); - var parentNodes = parent.parents('ul>li'); - for (var i = 0; i < parentNodes.length; i++) { - var parentText = $(parentNodes[i]).children('a').text(); - if (parentText) text = parentText + '.' + text; - }; - if (filterNavItem(text, val)) { - parent.addClass(show); - parent.removeClass(hide); - } else { - parent.addClass(hide); - parent.removeClass(show); - } - }); - $('#toc li>a').filter(function (i, e) { - return $(e).siblings().length > 0 - }).each(function (i, anchor) { - var parent = $(anchor).parent(); - if (parent.find('li.show').length > 0) { - parent.addClass(show); - parent.addClass(filtered); - parent.removeClass(hide); - } else { - parent.addClass(hide); - parent.removeClass(show); - parent.removeClass(filtered); - } - }) - - function filterNavItem(name, text) { - if (!text) return true; - if (name.toLowerCase().indexOf(text.toLowerCase()) > -1) return true; - return false; - } - }); - } - - function Breadcrumb() { - var breadcrumb = []; - var isNavPartLoaded = false; - var isTocPartLoaded = false; - this.push = pushBreadcrumb; - this.insert = insertBreadcrumb; - - function pushBreadcrumb(obj) { - breadcrumb.push(obj); - setupBreadCrumb(breadcrumb); - } - - function insertBreadcrumb(obj, index) { - breadcrumb.splice(index, 0, obj); - setupBreadCrumb(breadcrumb); - } - - function setupBreadCrumb() { - var html = formList(breadcrumb, 'breadcrumb'); - $('#breadcrumb').html(html); - } - } - - function getAbsolutePath(href) { - // Use anchor to normalize href - var anchor = $('')[0]; - // Ignore protocal, remove search and query - return anchor.host + anchor.pathname; - } - - function isRelativePath(href) { - return !isAbsolutePath(href); - } - - function isAbsolutePath(href) { - return (/^(?:[a-z]+:)?\/\//i).test(href); - } - - function getDirectory(href) { - if (!href) return ''; - var index = href.lastIndexOf('/'); - if (index == -1) return ''; - if (index > -1) { - return href.substr(0, index); - } - } - })(); - - //Setup Affix - (function () { - var hierarchy = getHierarchy(); - if (hierarchy.length > 0) { - var html = '
In This Article
' - html += formList(hierarchy, ['nav', 'bs-docs-sidenav']); - $("#affix").append(html); - if ($('footer').is(':visible')) { - $(".sideaffix").css("bottom", "70px"); - } - $('#affix').on('activate.bs.scrollspy', function (e) { - if (e.target) { - if ($(e.target).find('li.active').length > 0) { - return; - } - var top = $(e.target).position().top; - $(e.target).parents('li').each(function (i, e) { - top += $(e).position().top; - }); - var container = $('#affix > ul'); - var height = container.height(); - container.scrollTop(container.scrollTop() + top - height/2); - } - }) - } - - function getHierarchy() { - // supported headers are h1, h2, h3, and h4 - // The topest header is ignored - var selector = ".article article"; - var affixSelector = "#affix"; - var headers = ['h4', 'h3', 'h2', 'h1']; - var hierarchy = []; - var toppestIndex = -1; - var startIndex = -1; - // 1. get header hierarchy - for (var i = headers.length - 1; i >= 0; i--) { - var header = $(selector + " " + headers[i]); - var length = header.length; - - // If contains no header in current selector, find the next one - if (length === 0) continue; - - // If the toppest header contains only one item, e.g. title, ignore - if (length === 1 && hierarchy.length === 0 && toppestIndex < 0) { - toppestIndex = i; - continue; - } - - // Get second level children - var nextLevelSelector = i > 0 ? headers[i - 1] : null; - var prevSelector; - for (var j = length - 1; j >= 0; j--) { - var e = header[j]; - var id = e.id; - if (!id) continue; // For affix, id is a must-have - var item = { - name: htmlEncode($(e).text()), - href: "#" + id, - items: [] - }; - if (nextLevelSelector) { - var selector = '#' + id + "~" + nextLevelSelector; - var currentSelector = selector; - if (prevSelector) currentSelector += ":not(" + prevSelector + ")"; - $(header[j]).siblings(currentSelector).each(function (index, e) { - if (e.id) { - item.items.push({ - name: htmlEncode($(e).text()), // innerText decodes text while innerHTML not - href: "#" + e.id - - }) - } - }) - prevSelector = selector; - } - hierarchy.push(item); - } - break; - }; - hierarchy.reverse(); - return hierarchy; - } - - function htmlEncode(str) { - return String(str) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); - } - - function htmlDecode(value) { - return String(value) - .replace(/"/g, '"') - .replace(/'/g, "'") - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/&/g, '&'); - } - })(); - - function formList(item, classes) { - var level = 1; - var model = { - items: item - }; - var cls = [].concat(classes).join(" "); - return getList(model, cls); - - function getList(model, cls) { - if (!model || !model.items) return null; - var l = model.items.length; - if (l === 0) return null; - var html = '
    '; - level++; - for (var i = 0; i < l; i++) { - var item = model.items[i]; - var href = item.href; - var name = item.name; - if (!name) continue; - html += href ? '
  • ' + name + '' : '
  • ' + name; - html += getList(item, cls) || ''; - html += '
  • '; - } - html += '
'; - return html; - } - } - - // Show footer - (function () { - initFooter(); - $(window).on("scroll", showFooter); - - function initFooter() { - if (needFooter()) { - shiftUpBottomCss(); - $("footer").show(); - } else { - resetBottomCss(); - $("footer").hide(); - } - } - - function showFooter() { - if (needFooter()) { - shiftUpBottomCss(); - $("footer").fadeIn(); - } else { - resetBottomCss(); - $("footer").fadeOut(); - } - } - - function needFooter() { - var scrollHeight = $(document).height(); - var scrollPosition = $(window).height() + $(window).scrollTop(); - return (scrollHeight - scrollPosition) < 1; - } - - function resetBottomCss() { - $(".sidetoc").css("bottom", "0"); - $(".sideaffix").css("bottom", "10px"); - } - - function shiftUpBottomCss() { - $(".sidetoc").css("bottom", "70px"); - $(".sideaffix").css("bottom", "70px"); - } - })(); - - // For LOGO SVG - // Replace SVG with inline SVG - // http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg-image-using-css-jquery-svg-image-replacement - jQuery('img.svg').each(function () { - var $img = jQuery(this); - var imgID = $img.attr('id'); - var imgClass = $img.attr('class'); - var imgURL = $img.attr('src'); - - jQuery.get(imgURL, function (data) { - // Get the SVG tag, ignore the rest - var $svg = jQuery(data).find('svg'); - - // Add replaced image's ID to the new SVG - if (typeof imgID !== 'undefined') { - $svg = $svg.attr('id', imgID); - } - // Add replaced image's classes to the new SVG - if (typeof imgClass !== 'undefined') { - $svg = $svg.attr('class', imgClass + ' replaced-svg'); - } - - // Remove any invalid XML tags as per http://validator.w3.org - $svg = $svg.removeAttr('xmlns:a'); - - // Replace image with new SVG - $img.replaceWith($svg); - - }, 'xml'); - }); -}) diff --git a/docs/styles/docfx.vendor.css b/docs/styles/docfx.vendor.css deleted file mode 100644 index b8c40352..00000000 --- a/docs/styles/docfx.vendor.css +++ /dev/null @@ -1,1466 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -.label,sub,sup{vertical-align:baseline} -hr,img{border:0} -body,figure{margin:0} -.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left} -.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px} -html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%} -article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block} -audio,canvas,progress,video{display:inline-block;vertical-align:baseline} -audio:not([controls]){display:none;height:0} -[hidden],template{display:none} -a{background-color:transparent} -a:active,a:hover{outline:0} -b,optgroup,strong{font-weight:700} -dfn{font-style:italic} -h1{margin:.67em 0} -mark{color:#000;background:#ff0} -sub,sup{position:relative;font-size:75%;line-height:0} -sup{top:-.5em} -sub{bottom:-.25em} -img{vertical-align:middle} -svg:not(:root){overflow:hidden} -hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} -pre,textarea{overflow:auto} -code,kbd,pre,samp{font-size:1em} -button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit} -.glyphicon,address{font-style:normal} -button{overflow:visible} -button,select{text-transform:none} -button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer} -button[disabled],html input[disabled]{cursor:default} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0} -input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0} -input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto} -input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none} -table{border-spacing:0;border-collapse:collapse} -td,th{padding:0} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print{blockquote,img,pre,tr{page-break-inside:avoid} -*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important} -a,a:visited{text-decoration:underline} -a[href]:after{content:" (" attr(href) ")"} -abbr[title]:after{content:" (" attr(title) ")"} -a[href^="javascript:"]:after,a[href^="#"]:after{content:""} -blockquote,pre{border:1px solid #999} -thead{display:table-header-group} -img{max-width:100%!important} -h2,h3,p{orphans:3;widows:3} -h2,h3{page-break-after:avoid} -.navbar{display:none} -.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important} -.label{border:1px solid #000} -.table{border-collapse:collapse!important} -.table td,.table th{background-color:#fff!important} -.table-bordered td,.table-bordered th{border:1px solid #ddd!important} -} -.dropdown-menu,.modal-content{-webkit-background-clip:padding-box} -.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none} -.img-thumbnail,body{background-color:#fff} -@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')} -.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} -.glyphicon-asterisk:before{content:"\002a"} -.glyphicon-plus:before{content:"\002b"} -.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"} -.glyphicon-minus:before{content:"\2212"} -.glyphicon-cloud:before{content:"\2601"} -.glyphicon-envelope:before{content:"\2709"} -.glyphicon-pencil:before{content:"\270f"} -.glyphicon-glass:before{content:"\e001"} -.glyphicon-music:before{content:"\e002"} -.glyphicon-search:before{content:"\e003"} -.glyphicon-heart:before{content:"\e005"} -.glyphicon-star:before{content:"\e006"} -.glyphicon-star-empty:before{content:"\e007"} -.glyphicon-user:before{content:"\e008"} -.glyphicon-film:before{content:"\e009"} -.glyphicon-th-large:before{content:"\e010"} -.glyphicon-th:before{content:"\e011"} -.glyphicon-th-list:before{content:"\e012"} -.glyphicon-ok:before{content:"\e013"} -.glyphicon-remove:before{content:"\e014"} -.glyphicon-zoom-in:before{content:"\e015"} -.glyphicon-zoom-out:before{content:"\e016"} -.glyphicon-off:before{content:"\e017"} -.glyphicon-signal:before{content:"\e018"} -.glyphicon-cog:before{content:"\e019"} -.glyphicon-trash:before{content:"\e020"} -.glyphicon-home:before{content:"\e021"} -.glyphicon-file:before{content:"\e022"} -.glyphicon-time:before{content:"\e023"} -.glyphicon-road:before{content:"\e024"} -.glyphicon-download-alt:before{content:"\e025"} -.glyphicon-download:before{content:"\e026"} -.glyphicon-upload:before{content:"\e027"} -.glyphicon-inbox:before{content:"\e028"} -.glyphicon-play-circle:before{content:"\e029"} -.glyphicon-repeat:before{content:"\e030"} -.glyphicon-refresh:before{content:"\e031"} -.glyphicon-list-alt:before{content:"\e032"} -.glyphicon-lock:before{content:"\e033"} -.glyphicon-flag:before{content:"\e034"} -.glyphicon-headphones:before{content:"\e035"} -.glyphicon-volume-off:before{content:"\e036"} -.glyphicon-volume-down:before{content:"\e037"} -.glyphicon-volume-up:before{content:"\e038"} -.glyphicon-qrcode:before{content:"\e039"} -.glyphicon-barcode:before{content:"\e040"} -.glyphicon-tag:before{content:"\e041"} -.glyphicon-tags:before{content:"\e042"} -.glyphicon-book:before{content:"\e043"} -.glyphicon-bookmark:before{content:"\e044"} -.glyphicon-print:before{content:"\e045"} -.glyphicon-camera:before{content:"\e046"} -.glyphicon-font:before{content:"\e047"} -.glyphicon-bold:before{content:"\e048"} -.glyphicon-italic:before{content:"\e049"} -.glyphicon-text-height:before{content:"\e050"} -.glyphicon-text-width:before{content:"\e051"} -.glyphicon-align-left:before{content:"\e052"} -.glyphicon-align-center:before{content:"\e053"} -.glyphicon-align-right:before{content:"\e054"} -.glyphicon-align-justify:before{content:"\e055"} -.glyphicon-list:before{content:"\e056"} -.glyphicon-indent-left:before{content:"\e057"} -.glyphicon-indent-right:before{content:"\e058"} -.glyphicon-facetime-video:before{content:"\e059"} -.glyphicon-picture:before{content:"\e060"} -.glyphicon-map-marker:before{content:"\e062"} -.glyphicon-adjust:before{content:"\e063"} -.glyphicon-tint:before{content:"\e064"} -.glyphicon-edit:before{content:"\e065"} -.glyphicon-share:before{content:"\e066"} -.glyphicon-check:before{content:"\e067"} -.glyphicon-move:before{content:"\e068"} -.glyphicon-step-backward:before{content:"\e069"} -.glyphicon-fast-backward:before{content:"\e070"} -.glyphicon-backward:before{content:"\e071"} -.glyphicon-play:before{content:"\e072"} -.glyphicon-pause:before{content:"\e073"} -.glyphicon-stop:before{content:"\e074"} -.glyphicon-forward:before{content:"\e075"} -.glyphicon-fast-forward:before{content:"\e076"} -.glyphicon-step-forward:before{content:"\e077"} -.glyphicon-eject:before{content:"\e078"} -.glyphicon-chevron-left:before{content:"\e079"} -.glyphicon-chevron-right:before{content:"\e080"} -.glyphicon-plus-sign:before{content:"\e081"} -.glyphicon-minus-sign:before{content:"\e082"} -.glyphicon-remove-sign:before{content:"\e083"} -.glyphicon-ok-sign:before{content:"\e084"} -.glyphicon-question-sign:before{content:"\e085"} -.glyphicon-info-sign:before{content:"\e086"} -.glyphicon-screenshot:before{content:"\e087"} -.glyphicon-remove-circle:before{content:"\e088"} -.glyphicon-ok-circle:before{content:"\e089"} -.glyphicon-ban-circle:before{content:"\e090"} -.glyphicon-arrow-left:before{content:"\e091"} -.glyphicon-arrow-right:before{content:"\e092"} -.glyphicon-arrow-up:before{content:"\e093"} -.glyphicon-arrow-down:before{content:"\e094"} -.glyphicon-share-alt:before{content:"\e095"} -.glyphicon-resize-full:before{content:"\e096"} -.glyphicon-resize-small:before{content:"\e097"} -.glyphicon-exclamation-sign:before{content:"\e101"} -.glyphicon-gift:before{content:"\e102"} -.glyphicon-leaf:before{content:"\e103"} -.glyphicon-fire:before{content:"\e104"} -.glyphicon-eye-open:before{content:"\e105"} -.glyphicon-eye-close:before{content:"\e106"} -.glyphicon-warning-sign:before{content:"\e107"} -.glyphicon-plane:before{content:"\e108"} -.glyphicon-calendar:before{content:"\e109"} -.glyphicon-random:before{content:"\e110"} -.glyphicon-comment:before{content:"\e111"} -.glyphicon-magnet:before{content:"\e112"} -.glyphicon-chevron-up:before{content:"\e113"} -.glyphicon-chevron-down:before{content:"\e114"} -.glyphicon-retweet:before{content:"\e115"} -.glyphicon-shopping-cart:before{content:"\e116"} -.glyphicon-folder-close:before{content:"\e117"} -.glyphicon-folder-open:before{content:"\e118"} -.glyphicon-resize-vertical:before{content:"\e119"} -.glyphicon-resize-horizontal:before{content:"\e120"} -.glyphicon-hdd:before{content:"\e121"} -.glyphicon-bullhorn:before{content:"\e122"} -.glyphicon-bell:before{content:"\e123"} -.glyphicon-certificate:before{content:"\e124"} -.glyphicon-thumbs-up:before{content:"\e125"} -.glyphicon-thumbs-down:before{content:"\e126"} -.glyphicon-hand-right:before{content:"\e127"} -.glyphicon-hand-left:before{content:"\e128"} -.glyphicon-hand-up:before{content:"\e129"} -.glyphicon-hand-down:before{content:"\e130"} -.glyphicon-circle-arrow-right:before{content:"\e131"} -.glyphicon-circle-arrow-left:before{content:"\e132"} -.glyphicon-circle-arrow-up:before{content:"\e133"} -.glyphicon-circle-arrow-down:before{content:"\e134"} -.glyphicon-globe:before{content:"\e135"} -.glyphicon-wrench:before{content:"\e136"} -.glyphicon-tasks:before{content:"\e137"} -.glyphicon-filter:before{content:"\e138"} -.glyphicon-briefcase:before{content:"\e139"} -.glyphicon-fullscreen:before{content:"\e140"} -.glyphicon-dashboard:before{content:"\e141"} -.glyphicon-paperclip:before{content:"\e142"} -.glyphicon-heart-empty:before{content:"\e143"} -.glyphicon-link:before{content:"\e144"} -.glyphicon-phone:before{content:"\e145"} -.glyphicon-pushpin:before{content:"\e146"} -.glyphicon-usd:before{content:"\e148"} -.glyphicon-gbp:before{content:"\e149"} -.glyphicon-sort:before{content:"\e150"} -.glyphicon-sort-by-alphabet:before{content:"\e151"} -.glyphicon-sort-by-alphabet-alt:before{content:"\e152"} -.glyphicon-sort-by-order:before{content:"\e153"} -.glyphicon-sort-by-order-alt:before{content:"\e154"} -.glyphicon-sort-by-attributes:before{content:"\e155"} -.glyphicon-sort-by-attributes-alt:before{content:"\e156"} -.glyphicon-unchecked:before{content:"\e157"} -.glyphicon-expand:before{content:"\e158"} -.glyphicon-collapse-down:before{content:"\e159"} -.glyphicon-collapse-up:before{content:"\e160"} -.glyphicon-log-in:before{content:"\e161"} -.glyphicon-flash:before{content:"\e162"} -.glyphicon-log-out:before{content:"\e163"} -.glyphicon-new-window:before{content:"\e164"} -.glyphicon-record:before{content:"\e165"} -.glyphicon-save:before{content:"\e166"} -.glyphicon-open:before{content:"\e167"} -.glyphicon-saved:before{content:"\e168"} -.glyphicon-import:before{content:"\e169"} -.glyphicon-export:before{content:"\e170"} -.glyphicon-send:before{content:"\e171"} -.glyphicon-floppy-disk:before{content:"\e172"} -.glyphicon-floppy-saved:before{content:"\e173"} -.glyphicon-floppy-remove:before{content:"\e174"} -.glyphicon-floppy-save:before{content:"\e175"} -.glyphicon-floppy-open:before{content:"\e176"} -.glyphicon-credit-card:before{content:"\e177"} -.glyphicon-transfer:before{content:"\e178"} -.glyphicon-cutlery:before{content:"\e179"} -.glyphicon-header:before{content:"\e180"} -.glyphicon-compressed:before{content:"\e181"} -.glyphicon-earphone:before{content:"\e182"} -.glyphicon-phone-alt:before{content:"\e183"} -.glyphicon-tower:before{content:"\e184"} -.glyphicon-stats:before{content:"\e185"} -.glyphicon-sd-video:before{content:"\e186"} -.glyphicon-hd-video:before{content:"\e187"} -.glyphicon-subtitles:before{content:"\e188"} -.glyphicon-sound-stereo:before{content:"\e189"} -.glyphicon-sound-dolby:before{content:"\e190"} -.glyphicon-sound-5-1:before{content:"\e191"} -.glyphicon-sound-6-1:before{content:"\e192"} -.glyphicon-sound-7-1:before{content:"\e193"} -.glyphicon-copyright-mark:before{content:"\e194"} -.glyphicon-registration-mark:before{content:"\e195"} -.glyphicon-cloud-download:before{content:"\e197"} -.glyphicon-cloud-upload:before{content:"\e198"} -.glyphicon-tree-conifer:before{content:"\e199"} -.glyphicon-tree-deciduous:before{content:"\e200"} -.glyphicon-cd:before{content:"\e201"} -.glyphicon-save-file:before{content:"\e202"} -.glyphicon-open-file:before{content:"\e203"} -.glyphicon-level-up:before{content:"\e204"} -.glyphicon-copy:before{content:"\e205"} -.glyphicon-paste:before{content:"\e206"} -.glyphicon-alert:before{content:"\e209"} -.glyphicon-equalizer:before{content:"\e210"} -.glyphicon-king:before{content:"\e211"} -.glyphicon-queen:before{content:"\e212"} -.glyphicon-pawn:before{content:"\e213"} -.glyphicon-bishop:before{content:"\e214"} -.glyphicon-knight:before{content:"\e215"} -.glyphicon-baby-formula:before{content:"\e216"} -.glyphicon-tent:before{content:"\26fa"} -.glyphicon-blackboard:before{content:"\e218"} -.glyphicon-bed:before{content:"\e219"} -.glyphicon-apple:before{content:"\f8ff"} -.glyphicon-erase:before{content:"\e221"} -.glyphicon-hourglass:before{content:"\231b"} -.glyphicon-lamp:before{content:"\e223"} -.glyphicon-duplicate:before{content:"\e224"} -.glyphicon-piggy-bank:before{content:"\e225"} -.glyphicon-scissors:before{content:"\e226"} -.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"} -.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"} -.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"} -.glyphicon-scale:before{content:"\e230"} -.glyphicon-ice-lolly:before{content:"\e231"} -.glyphicon-ice-lolly-tasted:before{content:"\e232"} -.glyphicon-education:before{content:"\e233"} -.glyphicon-option-horizontal:before{content:"\e234"} -.glyphicon-option-vertical:before{content:"\e235"} -.glyphicon-menu-hamburger:before{content:"\e236"} -.glyphicon-modal-window:before{content:"\e237"} -.glyphicon-oil:before{content:"\e238"} -.glyphicon-grain:before{content:"\e239"} -.glyphicon-sunglasses:before{content:"\e240"} -.glyphicon-text-size:before{content:"\e241"} -.glyphicon-text-color:before{content:"\e242"} -.glyphicon-text-background:before{content:"\e243"} -.glyphicon-object-align-top:before{content:"\e244"} -.glyphicon-object-align-bottom:before{content:"\e245"} -.glyphicon-object-align-horizontal:before{content:"\e246"} -.glyphicon-object-align-left:before{content:"\e247"} -.glyphicon-object-align-vertical:before{content:"\e248"} -.glyphicon-object-align-right:before{content:"\e249"} -.glyphicon-triangle-right:before{content:"\e250"} -.glyphicon-triangle-left:before{content:"\e251"} -.glyphicon-triangle-bottom:before{content:"\e252"} -.glyphicon-triangle-top:before{content:"\e253"} -.glyphicon-console:before{content:"\e254"} -.glyphicon-superscript:before{content:"\e255"} -.glyphicon-subscript:before{content:"\e256"} -.glyphicon-menu-left:before{content:"\e257"} -.glyphicon-menu-right:before{content:"\e258"} -.glyphicon-menu-down:before{content:"\e259"} -.glyphicon-menu-up:before{content:"\e260"} -*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} -html{font-size:10px;-webkit-tap-highlight-color:transparent} -body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333} -button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} -a{color:#337ab7;text-decoration:none} -a:focus,a:hover{color:#23527c;text-decoration:underline} -a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} -.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto} -.img-rounded{border-radius:6px} -.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out} -.img-circle{border-radius:50%} -hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee} -.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} -.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} -[role=button]{cursor:pointer} -.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit} -.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777} -.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px} -.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%} -.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px} -.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%} -.h1,h1{font-size:36px} -.h2,h2{font-size:30px} -.h3,h3{font-size:24px} -.h4,h4{font-size:18px} -.h5,h5{font-size:14px} -.h6,h6{font-size:12px} -p{margin:0 0 10px} -.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4} -dt,kbd kbd,label{font-weight:700} -address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143} -@media (min-width:768px){.lead{font-size:21px} -} -.small,small{font-size:85%} -.mark,mark{padding:.2em;background-color:#fcf8e3} -.list-inline,.list-unstyled{padding-left:0;list-style:none} -.text-left{text-align:left} -.text-right{text-align:right} -.text-center{text-align:center} -.text-justify{text-align:justify} -.text-nowrap{white-space:nowrap} -.text-lowercase{text-transform:lowercase} -.text-uppercase{text-transform:uppercase} -.text-capitalize{text-transform:capitalize} -.text-muted{color:#777} -.text-primary{color:#337ab7} -a.text-primary:focus,a.text-primary:hover{color:#286090} -.text-success{color:#3c763d} -a.text-success:focus,a.text-success:hover{color:#2b542c} -.text-info{color:#31708f} -a.text-info:focus,a.text-info:hover{color:#245269} -.text-warning{color:#8a6d3b} -a.text-warning:focus,a.text-warning:hover{color:#66512c} -.text-danger{color:#a94442} -a.text-danger:focus,a.text-danger:hover{color:#843534} -.bg-primary{color:#fff;background-color:#337ab7} -a.bg-primary:focus,a.bg-primary:hover{background-color:#286090} -.bg-success{background-color:#dff0d8} -a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3} -.bg-info{background-color:#d9edf7} -a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee} -.bg-warning{background-color:#fcf8e3} -a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5} -.bg-danger{background-color:#f2dede} -a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9} -pre code,table{background-color:transparent} -.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee} -dl,ol,ul{margin-top:0} -blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0} -address,dl{margin-bottom:20px} -ol,ul{margin-bottom:10px} -.list-inline{margin-left:-5px} -.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px} -dd{margin-left:0} -@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap} -.dl-horizontal dd{margin-left:180px} -.container{width:750px} -} -abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777} -.initialism{font-size:90%;text-transform:uppercase} -blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee} -blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777} -legend,pre{display:block;color:#333} -blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'} -.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0} -code,kbd{padding:2px 4px;font-size:90%} -caption,th{text-align:left} -.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''} -.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'} -code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} -code{color:#c7254e;background-color:#f9f2f4;border-radius:4px} -kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} -kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none} -pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px} -.container,.container-fluid{margin-right:auto;margin-left:auto} -pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0} -.container,.container-fluid{padding-right:15px;padding-left:15px} -.pre-scrollable{overflow-y:scroll} -@media (min-width:992px){.container{width:970px} -} -@media (min-width:1200px){.container{width:1170px} -} -.row{margin-right:-15px;margin-left:-15px} -.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px} -.col-xs-12{width:100%} -.col-xs-11{width:91.66666667%} -.col-xs-10{width:83.33333333%} -.col-xs-9{width:75%} -.col-xs-8{width:66.66666667%} -.col-xs-7{width:58.33333333%} -.col-xs-6{width:50%} -.col-xs-5{width:41.66666667%} -.col-xs-4{width:33.33333333%} -.col-xs-3{width:25%} -.col-xs-2{width:16.66666667%} -.col-xs-1{width:8.33333333%} -.col-xs-pull-12{right:100%} -.col-xs-pull-11{right:91.66666667%} -.col-xs-pull-10{right:83.33333333%} -.col-xs-pull-9{right:75%} -.col-xs-pull-8{right:66.66666667%} -.col-xs-pull-7{right:58.33333333%} -.col-xs-pull-6{right:50%} -.col-xs-pull-5{right:41.66666667%} -.col-xs-pull-4{right:33.33333333%} -.col-xs-pull-3{right:25%} -.col-xs-pull-2{right:16.66666667%} -.col-xs-pull-1{right:8.33333333%} -.col-xs-pull-0{right:auto} -.col-xs-push-12{left:100%} -.col-xs-push-11{left:91.66666667%} -.col-xs-push-10{left:83.33333333%} -.col-xs-push-9{left:75%} -.col-xs-push-8{left:66.66666667%} -.col-xs-push-7{left:58.33333333%} -.col-xs-push-6{left:50%} -.col-xs-push-5{left:41.66666667%} -.col-xs-push-4{left:33.33333333%} -.col-xs-push-3{left:25%} -.col-xs-push-2{left:16.66666667%} -.col-xs-push-1{left:8.33333333%} -.col-xs-push-0{left:auto} -.col-xs-offset-12{margin-left:100%} -.col-xs-offset-11{margin-left:91.66666667%} -.col-xs-offset-10{margin-left:83.33333333%} -.col-xs-offset-9{margin-left:75%} -.col-xs-offset-8{margin-left:66.66666667%} -.col-xs-offset-7{margin-left:58.33333333%} -.col-xs-offset-6{margin-left:50%} -.col-xs-offset-5{margin-left:41.66666667%} -.col-xs-offset-4{margin-left:33.33333333%} -.col-xs-offset-3{margin-left:25%} -.col-xs-offset-2{margin-left:16.66666667%} -.col-xs-offset-1{margin-left:8.33333333%} -.col-xs-offset-0{margin-left:0} -@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left} -.col-sm-12{width:100%} -.col-sm-11{width:91.66666667%} -.col-sm-10{width:83.33333333%} -.col-sm-9{width:75%} -.col-sm-8{width:66.66666667%} -.col-sm-7{width:58.33333333%} -.col-sm-6{width:50%} -.col-sm-5{width:41.66666667%} -.col-sm-4{width:33.33333333%} -.col-sm-3{width:25%} -.col-sm-2{width:16.66666667%} -.col-sm-1{width:8.33333333%} -.col-sm-pull-12{right:100%} -.col-sm-pull-11{right:91.66666667%} -.col-sm-pull-10{right:83.33333333%} -.col-sm-pull-9{right:75%} -.col-sm-pull-8{right:66.66666667%} -.col-sm-pull-7{right:58.33333333%} -.col-sm-pull-6{right:50%} -.col-sm-pull-5{right:41.66666667%} -.col-sm-pull-4{right:33.33333333%} -.col-sm-pull-3{right:25%} -.col-sm-pull-2{right:16.66666667%} -.col-sm-pull-1{right:8.33333333%} -.col-sm-pull-0{right:auto} -.col-sm-push-12{left:100%} -.col-sm-push-11{left:91.66666667%} -.col-sm-push-10{left:83.33333333%} -.col-sm-push-9{left:75%} -.col-sm-push-8{left:66.66666667%} -.col-sm-push-7{left:58.33333333%} -.col-sm-push-6{left:50%} -.col-sm-push-5{left:41.66666667%} -.col-sm-push-4{left:33.33333333%} -.col-sm-push-3{left:25%} -.col-sm-push-2{left:16.66666667%} -.col-sm-push-1{left:8.33333333%} -.col-sm-push-0{left:auto} -.col-sm-offset-12{margin-left:100%} -.col-sm-offset-11{margin-left:91.66666667%} -.col-sm-offset-10{margin-left:83.33333333%} -.col-sm-offset-9{margin-left:75%} -.col-sm-offset-8{margin-left:66.66666667%} -.col-sm-offset-7{margin-left:58.33333333%} -.col-sm-offset-6{margin-left:50%} -.col-sm-offset-5{margin-left:41.66666667%} -.col-sm-offset-4{margin-left:33.33333333%} -.col-sm-offset-3{margin-left:25%} -.col-sm-offset-2{margin-left:16.66666667%} -.col-sm-offset-1{margin-left:8.33333333%} -.col-sm-offset-0{margin-left:0} -} -@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left} -.col-md-12{width:100%} -.col-md-11{width:91.66666667%} -.col-md-10{width:83.33333333%} -.col-md-9{width:75%} -.col-md-8{width:66.66666667%} -.col-md-7{width:58.33333333%} -.col-md-6{width:50%} -.col-md-5{width:41.66666667%} -.col-md-4{width:33.33333333%} -.col-md-3{width:25%} -.col-md-2{width:16.66666667%} -.col-md-1{width:8.33333333%} -.col-md-pull-12{right:100%} -.col-md-pull-11{right:91.66666667%} -.col-md-pull-10{right:83.33333333%} -.col-md-pull-9{right:75%} -.col-md-pull-8{right:66.66666667%} -.col-md-pull-7{right:58.33333333%} -.col-md-pull-6{right:50%} -.col-md-pull-5{right:41.66666667%} -.col-md-pull-4{right:33.33333333%} -.col-md-pull-3{right:25%} -.col-md-pull-2{right:16.66666667%} -.col-md-pull-1{right:8.33333333%} -.col-md-pull-0{right:auto} -.col-md-push-12{left:100%} -.col-md-push-11{left:91.66666667%} -.col-md-push-10{left:83.33333333%} -.col-md-push-9{left:75%} -.col-md-push-8{left:66.66666667%} -.col-md-push-7{left:58.33333333%} -.col-md-push-6{left:50%} -.col-md-push-5{left:41.66666667%} -.col-md-push-4{left:33.33333333%} -.col-md-push-3{left:25%} -.col-md-push-2{left:16.66666667%} -.col-md-push-1{left:8.33333333%} -.col-md-push-0{left:auto} -.col-md-offset-12{margin-left:100%} -.col-md-offset-11{margin-left:91.66666667%} -.col-md-offset-10{margin-left:83.33333333%} -.col-md-offset-9{margin-left:75%} -.col-md-offset-8{margin-left:66.66666667%} -.col-md-offset-7{margin-left:58.33333333%} -.col-md-offset-6{margin-left:50%} -.col-md-offset-5{margin-left:41.66666667%} -.col-md-offset-4{margin-left:33.33333333%} -.col-md-offset-3{margin-left:25%} -.col-md-offset-2{margin-left:16.66666667%} -.col-md-offset-1{margin-left:8.33333333%} -.col-md-offset-0{margin-left:0} -} -@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left} -.col-lg-12{width:100%} -.col-lg-11{width:91.66666667%} -.col-lg-10{width:83.33333333%} -.col-lg-9{width:75%} -.col-lg-8{width:66.66666667%} -.col-lg-7{width:58.33333333%} -.col-lg-6{width:50%} -.col-lg-5{width:41.66666667%} -.col-lg-4{width:33.33333333%} -.col-lg-3{width:25%} -.col-lg-2{width:16.66666667%} -.col-lg-1{width:8.33333333%} -.col-lg-pull-12{right:100%} -.col-lg-pull-11{right:91.66666667%} -.col-lg-pull-10{right:83.33333333%} -.col-lg-pull-9{right:75%} -.col-lg-pull-8{right:66.66666667%} -.col-lg-pull-7{right:58.33333333%} -.col-lg-pull-6{right:50%} -.col-lg-pull-5{right:41.66666667%} -.col-lg-pull-4{right:33.33333333%} -.col-lg-pull-3{right:25%} -.col-lg-pull-2{right:16.66666667%} -.col-lg-pull-1{right:8.33333333%} -.col-lg-pull-0{right:auto} -.col-lg-push-12{left:100%} -.col-lg-push-11{left:91.66666667%} -.col-lg-push-10{left:83.33333333%} -.col-lg-push-9{left:75%} -.col-lg-push-8{left:66.66666667%} -.col-lg-push-7{left:58.33333333%} -.col-lg-push-6{left:50%} -.col-lg-push-5{left:41.66666667%} -.col-lg-push-4{left:33.33333333%} -.col-lg-push-3{left:25%} -.col-lg-push-2{left:16.66666667%} -.col-lg-push-1{left:8.33333333%} -.col-lg-push-0{left:auto} -.col-lg-offset-12{margin-left:100%} -.col-lg-offset-11{margin-left:91.66666667%} -.col-lg-offset-10{margin-left:83.33333333%} -.col-lg-offset-9{margin-left:75%} -.col-lg-offset-8{margin-left:66.66666667%} -.col-lg-offset-7{margin-left:58.33333333%} -.col-lg-offset-6{margin-left:50%} -.col-lg-offset-5{margin-left:41.66666667%} -.col-lg-offset-4{margin-left:33.33333333%} -.col-lg-offset-3{margin-left:25%} -.col-lg-offset-2{margin-left:16.66666667%} -.col-lg-offset-1{margin-left:8.33333333%} -.col-lg-offset-0{margin-left:0} -} -caption{padding-top:8px;padding-bottom:8px;color:#777} -.table{width:100%;max-width:100%;margin-bottom:20px} -.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd} -.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd} -.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0} -.table>tbody+tbody{border-top:2px solid #ddd} -.table .table{background-color:#fff} -.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px} -.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd} -.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px} -.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9} -.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5} -table col[class*=col-]{position:static;display:table-column;float:none} -table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} -.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8} -.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8} -.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6} -.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7} -.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3} -.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3} -.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc} -.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede} -.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc} -.table-responsive{min-height:.01%;overflow-x:auto} -@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd} -.table-responsive>.table{margin-bottom:0} -.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap} -.table-responsive>.table-bordered{border:0} -.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} -.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} -.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0} -} -fieldset,legend{padding:0;border:0} -fieldset{min-width:0;margin:0} -legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5} -label{display:inline-block;max-width:100%;margin-bottom:5px} -input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none} -input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal} -.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block} -input[type=file]{display:block} -input[type=range]{display:block;width:100%} -select[multiple],select[size]{height:auto} -input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} -output{padding-top:7px} -.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s} -.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)} -.form-control::-moz-placeholder{color:#999;opacity:1} -.form-control:-ms-input-placeholder{color:#999} -.form-control::-webkit-input-placeholder{color:#999} -.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d} -.form-control::-ms-expand{background-color:transparent;border:0} -.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1} -.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed} -textarea.form-control{height:auto} -@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px} -.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px} -.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px} -} -.form-group{margin-bottom:15px} -.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px} -.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer} -.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px} -.checkbox+.checkbox,.radio+.radio{margin-top:-5px} -.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer} -.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px} -.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed} -.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0} -.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0} -.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px} -.input-sm{height:30px;line-height:1.5} -select.input-sm{height:30px;line-height:30px} -select[multiple].input-sm,textarea.input-sm{height:auto} -.form-group-sm .form-control{height:30px;line-height:1.5} -.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px} -.form-group-sm select.form-control{height:30px;line-height:30px} -.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto} -.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5} -.input-lg{height:46px;line-height:1.3333333} -select.input-lg{height:46px;line-height:46px} -select[multiple].input-lg,textarea.input-lg{height:auto} -.form-group-lg .form-control{height:46px;line-height:1.3333333} -.form-group-lg select.form-control{height:46px;line-height:46px} -.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto} -.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333} -.has-feedback{position:relative} -.has-feedback .form-control{padding-right:42.5px} -.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none} -.collapsing,.dropdown,.dropup{position:relative} -.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px} -.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px} -.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} -.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168} -.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d} -.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b} -.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} -.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b} -.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b} -.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442} -.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} -.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483} -.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442} -.has-feedback label~.form-control-feedback{top:25px} -.has-feedback label.sr-only~.form-control-feedback{top:0} -.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373} -@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block} -.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle} -.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle} -.form-inline .input-group{display:inline-table;vertical-align:middle} -.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto} -.form-inline .input-group>.form-control{width:100%} -.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} -.form-inline .checkbox label,.form-inline .radio label{padding-left:0} -.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0} -.form-inline .has-feedback .form-control-feedback{top:0} -.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right} -} -.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} -.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} -.form-horizontal .form-group{margin-right:-15px;margin-left:-15px} -.form-horizontal .has-feedback .form-control-feedback{right:15px} -@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px} -.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px} -} -.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px} -.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} -.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none} -.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} -.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65} -a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none} -.btn-default{color:#333;background-color:#fff;border-color:#ccc} -.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c} -.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad} -.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c} -.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc} -.btn-default .badge{color:#fff;background-color:#333} -.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4} -.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40} -.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74} -.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40} -.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4} -.btn-primary .badge{color:#337ab7;background-color:#fff} -.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c} -.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625} -.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439} -.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625} -.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none} -.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c} -.btn-success .badge{color:#5cb85c;background-color:#fff} -.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da} -.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85} -.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc} -.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85} -.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da} -.btn-info .badge{color:#5bc0de;background-color:#fff} -.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236} -.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d} -.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512} -.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d} -.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236} -.btn-warning .badge{color:#f0ad4e;background-color:#fff} -.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a} -.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19} -.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925} -.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19} -.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a} -.btn-danger .badge{color:#d9534f;background-color:#fff} -.btn-link{font-weight:400;color:#337ab7;border-radius:0} -.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none} -.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent} -.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent} -.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none} -.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} -.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} -.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px} -.btn-block{display:block;width:100%} -.btn-block+.btn-block{margin-top:5px} -input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%} -.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear} -.fade.in{opacity:1} -.collapse{display:none} -.collapse.in{display:block} -tr.collapse.in{display:table-row} -tbody.collapse.in{display:table-row-group} -.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility} -.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent} -.dropdown-toggle:focus{outline:0} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} -.dropdown-menu-right,.dropdown-menu.pull-right{right:0;left:auto} -.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap} -.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} -.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0} -.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} -.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} -.dropdown-menu>li>a{clear:both;font-weight:400;color:#333} -.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5} -.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0} -.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777} -.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} -.open>.dropdown-menu{display:block} -.open>a{outline:0} -.dropdown-menu-left{right:auto;left:0} -.dropdown-header{font-size:12px;color:#777} -.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990} -.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} -.pull-right>.dropdown-menu{right:0;left:auto} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9} -.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px} -@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto} -.navbar-right .dropdown-menu-left{right:auto;left:0} -} -.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle} -.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left} -.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2} -.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px} -.btn-toolbar{margin-left:-5px} -.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px} -.btn .caret,.btn-group>.btn:first-child{margin-left:0} -.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0} -.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px} -.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px} -.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} -.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} -.btn-lg .caret{border-width:5px 5px 0} -.dropup .btn-lg .caret{border-width:0 5px 5px} -.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} -.btn-group-vertical>.btn-group>.btn{float:none} -.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} -.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0} -.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px} -.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} -.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0} -.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0} -.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate} -.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%} -.btn-group-justified>.btn-group .btn{width:100%} -.btn-group-justified>.btn-group .dropdown-menu{left:auto} -[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none} -.input-group{position:relative;display:table;border-collapse:separate} -.input-group[class*=col-]{float:none;padding-right:0;padding-left:0} -.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0} -.input-group .form-control:focus{z-index:3} -.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} -select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px} -select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto} -.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} -select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px} -select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto} -.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell} -.nav>li,.nav>li>a{display:block;position:relative} -.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0} -.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} -.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px} -.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px} -.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px} -.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0} -.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} -.input-group-addon:first-child{border-right:0} -.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0} -.input-group-addon:last-child{border-left:0} -.input-group-btn{position:relative;font-size:0;white-space:nowrap} -.input-group-btn>.btn{position:relative} -.input-group-btn>.btn+.btn{margin-left:-1px} -.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2} -.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} -.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px} -.nav{padding-left:0;margin-bottom:0;list-style:none} -.nav>li>a{padding:10px 15px} -.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee} -.nav>li.disabled>a{color:#777} -.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent} -.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7} -.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} -.nav>li>a>img{max-width:none} -.nav-tabs{border-bottom:1px solid #ddd} -.nav-tabs>li{float:left;margin-bottom:-1px} -.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0} -.nav-tabs>li>a:hover{border-color:#eee #eee #ddd} -.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent} -.nav-tabs.nav-justified{width:100%;border-bottom:0} -.nav-tabs.nav-justified>li{float:none} -.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px} -.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} -@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%} -.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} -.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} -} -.nav-pills>li{float:left} -.nav-justified>li,.nav-stacked>li{float:none} -.nav-pills>li>a{border-radius:4px} -.nav-pills>li+li{margin-left:2px} -.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7} -.nav-stacked>li+li{margin-top:2px;margin-left:0} -.nav-justified{width:100%} -.nav-justified>li>a{margin-bottom:5px;text-align:center} -.nav-tabs-justified{border-bottom:0} -.nav-tabs-justified>li>a{margin-right:0;border-radius:4px} -.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd} -@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%} -.nav-justified>li>a{margin-bottom:0} -.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} -.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff} -} -.tab-content>.tab-pane{display:none} -.tab-content>.active{display:block} -.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} -.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent} -.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)} -.navbar-collapse.in{overflow-y:auto} -@media (min-width:768px){.navbar{border-radius:4px} -.navbar-header{float:left} -.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none} -.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important} -.navbar-collapse.in{overflow-y:visible} -.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0} -} -.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} -@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} -} -.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px} -.navbar-static-top{z-index:1000;border-width:0 0 1px} -.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030} -.navbar-fixed-top{top:0;border-width:0 0 1px} -.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0} -.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px} -.navbar-brand:focus,.navbar-brand:hover{text-decoration:none} -.navbar-brand>img{display:block} -@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0} -.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0} -.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px} -} -.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px} -.navbar-toggle:focus{outline:0} -.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} -.navbar-toggle .icon-bar+.icon-bar{margin-top:4px} -.navbar-nav{margin:7.5px -15px} -.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px} -@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none} -.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px} -.navbar-nav .open .dropdown-menu>li>a{line-height:20px} -.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none} -} -.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -@media (min-width:768px){.navbar-toggle{display:none} -.navbar-nav{float:left;margin:0} -.navbar-nav>li{float:left} -.navbar-nav>li>a{padding-top:15px;padding-bottom:15px} -} -.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} -@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block} -.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle} -.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle} -.navbar-form .input-group{display:inline-table;vertical-align:middle} -.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto} -.navbar-form .input-group>.form-control{width:100%} -.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} -.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0} -.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0} -.navbar-form .has-feedback .form-control-feedback{top:0} -.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none} -} -.breadcrumb>li,.pagination{display:inline-block} -.btn .badge,.btn .label{top:-1px;position:relative} -@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px} -.navbar-form .form-group:last-child{margin-bottom:0} -} -.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0} -.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0} -.navbar-btn{margin-top:8px;margin-bottom:8px} -.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px} -.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px} -.navbar-text{margin-top:15px;margin-bottom:15px} -@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px} -.navbar-left{float:left!important} -.navbar-right{float:right!important;margin-right:-15px} -.navbar-right~.navbar-right{margin-right:0} -} -.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7} -.navbar-default .navbar-brand{color:#777} -.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent} -.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777} -.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent} -.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7} -.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent} -.navbar-default .navbar-toggle{border-color:#ddd} -.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd} -.navbar-default .navbar-toggle .icon-bar{background-color:#888} -.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7} -.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7} -@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777} -.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent} -.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7} -.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent} -} -.navbar-default .navbar-link{color:#777} -.navbar-default .navbar-link:hover{color:#333} -.navbar-default .btn-link{color:#777} -.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333} -.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc} -.navbar-inverse{background-color:#222;border-color:#080808} -.navbar-inverse .navbar-brand{color:#9d9d9d} -.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent} -.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d} -.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent} -.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808} -.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent} -.navbar-inverse .navbar-toggle{border-color:#333} -.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333} -.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} -.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} -.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808} -@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808} -.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808} -.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d} -.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent} -.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808} -.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent} -} -.navbar-inverse .navbar-link{color:#9d9d9d} -.navbar-inverse .navbar-link:hover{color:#fff} -.navbar-inverse .btn-link{color:#9d9d9d} -.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff} -.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444} -.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px} -.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"} -.breadcrumb>.active{color:#777} -.pagination{padding-left:0;margin:20px 0;border-radius:4px} -.pager li,.pagination>li{display:inline} -.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd} -.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px} -.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px} -.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd} -.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7} -.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd} -.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333} -.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px} -.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px} -.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5} -.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center} -.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px} -.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px} -.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none} -.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px} -.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee} -.pager .next>a,.pager .next>span{float:right} -.pager .previous>a,.pager .previous>span{float:left} -.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff} -a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none} -.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em} -.label:empty{display:none} -.label-default{background-color:#777} -.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e} -.label-primary{background-color:#337ab7} -.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090} -.label-success{background-color:#5cb85c} -.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44} -.label-info{background-color:#5bc0de} -.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5} -.label-warning{background-color:#f0ad4e} -.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f} -.label-danger{background-color:#d9534f} -.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c} -.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px} -.badge:empty{display:none} -.media-object,.thumbnail{display:block} -.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px} -.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff} -.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit} -.list-group-item>.badge{float:right} -.list-group-item>.badge+.badge{margin-right:5px} -.nav-pills>li>a>.badge{margin-left:3px} -.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee} -.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200} -.alert,.thumbnail{margin-bottom:20px} -.alert .alert-link,.close{font-weight:700} -.jumbotron>hr{border-top-color:#d5d5d5} -.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px} -.jumbotron .container{max-width:100%} -@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px} -.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px} -.jumbotron .h1,.jumbotron h1{font-size:63px} -} -.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out} -.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto} -a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7} -.thumbnail .caption{padding:9px;color:#333} -.alert{padding:15px;border:1px solid transparent;border-radius:4px} -.alert h4{margin-top:0;color:inherit} -.alert>p,.alert>ul{margin-bottom:0} -.alert>p+p{margin-top:5px} -.alert-dismissable,.alert-dismissible{padding-right:35px} -.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit} -.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0} -.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} -.alert-success hr{border-top-color:#c9e2b3} -.alert-success .alert-link{color:#2b542c} -.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} -.alert-info hr{border-top-color:#a6e1ec} -.alert-info .alert-link{color:#245269} -.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} -.alert-warning hr{border-top-color:#f7e1b5} -.alert-warning .alert-link{color:#66512c} -.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1} -.alert-danger hr{border-top-color:#e4b9c0} -.alert-danger .alert-link{color:#843534} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} -to{background-position:0 0} -} -@-o-keyframes progress-bar-stripes{from{background-position:40px 0} -to{background-position:0 0} -} -@keyframes progress-bar-stripes{from{background-position:40px 0} -to{background-position:0 0} -} -.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} -.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease} -.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px} -.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} -.progress-bar-success{background-color:#5cb85c} -.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.progress-bar-info{background-color:#5bc0de} -.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.progress-bar-warning{background-color:#f0ad4e} -.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.progress-bar-danger{background-color:#d9534f} -.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.media{margin-top:15px} -.media:first-child{margin-top:0} -.media,.media-body{overflow:hidden;zoom:1} -.media-body{width:10000px} -.media-object.img-thumbnail{max-width:none} -.media-right,.media>.pull-right{padding-left:10px} -.media-left,.media>.pull-left{padding-right:10px} -.media-body,.media-left,.media-right{display:table-cell;vertical-align:top} -.media-middle{vertical-align:middle} -.media-bottom{vertical-align:bottom} -.media-heading{margin-top:0;margin-bottom:5px} -.media-list{padding-left:0;list-style:none} -.list-group{padding-left:0;margin-bottom:20px} -.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd} -.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px} -.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px} -a.list-group-item,button.list-group-item{color:#555} -a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333} -a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5} -button.list-group-item{width:100%;text-align:left} -.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee} -.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit} -.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777} -.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7} -.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit} -.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef} -.list-group-item-success{color:#3c763d;background-color:#dff0d8} -a.list-group-item-success,button.list-group-item-success{color:#3c763d} -a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit} -a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6} -a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d} -.list-group-item-info{color:#31708f;background-color:#d9edf7} -a.list-group-item-info,button.list-group-item-info{color:#31708f} -a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit} -a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3} -a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f} -.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3} -a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b} -a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit} -a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc} -a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b} -.list-group-item-danger{color:#a94442;background-color:#f2dede} -a.list-group-item-danger,button.list-group-item-danger{color:#a94442} -a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit} -a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc} -a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442} -.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit} -.list-group-item-heading{margin-top:0;margin-bottom:5px} -.list-group-item-text{margin-bottom:0;line-height:1.3} -.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)} -.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} -.panel-body{padding:15px} -.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px} -.panel-title{margin-top:0;font-size:16px} -.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} -.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0} -.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} -.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px} -.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px} -.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0} -.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0} -.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px} -.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px} -.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px} -.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px} -.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px} -.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px} -.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px} -.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd} -.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0} -.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0} -.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} -.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} -.panel>.table-responsive{margin-bottom:0;border:0} -.panel-group{margin-bottom:20px} -.panel-group .panel{margin-bottom:0;border-radius:4px} -.panel-group .panel+.panel{margin-top:5px} -.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd} -.panel-group .panel-footer{border-top:0} -.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd} -.panel-default{border-color:#ddd} -.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd} -.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd} -.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333} -.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd} -.panel-primary{border-color:#337ab7} -.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7} -.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7} -.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff} -.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7} -.panel-success{border-color:#d6e9c6} -.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} -.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6} -.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d} -.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6} -.panel-info{border-color:#bce8f1} -.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} -.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1} -.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f} -.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1} -.panel-warning{border-color:#faebcc} -.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} -.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc} -.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b} -.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc} -.panel-danger{border-color:#ebccd1} -.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1} -.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1} -.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442} -.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1} -.embed-responsive{position:relative;display:block;height:0;padding:0} -.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0} -.embed-responsive-16by9{padding-bottom:56.25%} -.embed-responsive-4by3{padding-bottom:75%} -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)} -.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)} -.well-lg{padding:24px;border-radius:6px} -.well-sm{padding:9px;border-radius:3px} -.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2} -.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;line-break:auto;text-decoration:none} -.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5} -button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0} -.modal{position:fixed;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0} -.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)} -.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)} -.modal-open .modal{overflow-x:hidden;overflow-y:auto} -.modal-dialog{position:relative;width:auto;margin:10px} -.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)} -.modal-backdrop{position:fixed;z-index:1040;background-color:#000} -.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0} -.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5} -.modal-header{padding:15px;border-bottom:1px solid #e5e5e5} -.modal-header .close{margin-top:-2px} -.modal-title{margin:0;line-height:1.42857143} -.modal-body{position:relative;padding:15px} -.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5} -.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px} -.modal-footer .btn-group .btn+.btn{margin-left:-1px} -.modal-footer .btn-block+.btn-block{margin-left:0} -.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll} -@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto} -.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)} -.modal-sm{width:300px} -} -@media (min-width:992px){.modal-lg{width:900px} -} -.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;text-align:left;text-align:start;filter:alpha(opacity=0);opacity:0} -.tooltip.in{filter:alpha(opacity=90);opacity:.9} -.tooltip.top{padding:5px 0;margin-top:-3px} -.tooltip.right{padding:0 5px;margin-left:3px} -.tooltip.bottom{padding:5px 0;margin-top:3px} -.tooltip.left{padding:0 5px;margin-left:-3px} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} -.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000} -.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px} -.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px} -.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px} -.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000} -.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000} -.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0} -.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px} -.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px} -.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px} -.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;text-align:left;text-align:start;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} -.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)} -.popover.top{margin-top:-10px} -.popover.right{margin-left:10px} -.popover.bottom{margin-top:10px} -.popover.left{margin-left:-10px} -.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} -.popover-content{padding:9px 14px} -.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} -.carousel,.carousel-inner{position:relative} -.popover>.arrow{border-width:11px} -.popover>.arrow:after{content:"";border-width:10px} -.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0} -.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0} -.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "} -.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0} -.popover.right>.arrow:after{left:1px;border-right-color:#fff;border-left-width:0} -.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)} -.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff} -.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)} -.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff} -.carousel-inner{width:100%;overflow:hidden} -.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} -.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1} -@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px} -.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} -.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)} -.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)} -} -.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block} -.carousel-inner>.active{left:0} -.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%} -.carousel-inner>.next{left:100%} -.carousel-inner>.prev{left:-100%} -.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0} -.carousel-inner>.active.left{left:-100%} -.carousel-inner>.active.right{left:100%} -.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5} -.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x} -.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x} -.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9} -.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px} -.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px} -.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px} -.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1} -.carousel-control .icon-prev:before{content:'\2039'} -.carousel-control .icon-next:before{content:'\203a'} -.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none} -.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px} -.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff} -.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px} -.carousel-caption .btn,.text-hide{text-shadow:none} -@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px} -.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px} -.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px} -.carousel-caption{right:20%;left:20%;padding-bottom:30px} -.carousel-indicators{bottom:20px} -} -.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "} -.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both} -.center-block{display:block;margin-right:auto;margin-left:auto} -.pull-right{float:right!important} -.pull-left{float:left!important} -.hide{display:none!important} -.show{display:block!important} -.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important} -.invisible{visibility:hidden} -.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0} -.affix{position:fixed} -@-ms-viewport{width:device-width} -@media (max-width:767px){.visible-xs{display:block!important} -table.visible-xs{display:table!important} -tr.visible-xs{display:table-row!important} -td.visible-xs,th.visible-xs{display:table-cell!important} -.visible-xs-block{display:block!important} -.visible-xs-inline{display:inline!important} -.visible-xs-inline-block{display:inline-block!important} -} -@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important} -table.visible-sm{display:table!important} -tr.visible-sm{display:table-row!important} -td.visible-sm,th.visible-sm{display:table-cell!important} -.visible-sm-block{display:block!important} -.visible-sm-inline{display:inline!important} -.visible-sm-inline-block{display:inline-block!important} -} -@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important} -table.visible-md{display:table!important} -tr.visible-md{display:table-row!important} -td.visible-md,th.visible-md{display:table-cell!important} -.visible-md-block{display:block!important} -.visible-md-inline{display:inline!important} -.visible-md-inline-block{display:inline-block!important} -} -@media (min-width:1200px){.visible-lg{display:block!important} -table.visible-lg{display:table!important} -tr.visible-lg{display:table-row!important} -td.visible-lg,th.visible-lg{display:table-cell!important} -.visible-lg-block{display:block!important} -.visible-lg-inline{display:inline!important} -.visible-lg-inline-block{display:inline-block!important} -.hidden-lg{display:none!important} -} -@media (max-width:767px){.hidden-xs{display:none!important} -} -@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important} -} -@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important} -} -.visible-print{display:none!important} -@media print{.visible-print{display:block!important} -table.visible-print{display:table!important} -tr.visible-print{display:table-row!important} -td.visible-print,th.visible-print{display:table-cell!important} -} -.visible-print-block{display:none!important} -@media print{.visible-print-block{display:block!important} -} -.visible-print-inline{display:none!important} -@media print{.visible-print-inline{display:inline!important} -} -.visible-print-inline-block{display:none!important} -@media print{.visible-print-inline-block{display:inline-block!important} -.hidden-print{display:none!important} -} -.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto;-webkit-text-size-adjust:none} -.bash .hljs-shebang,.hljs-comment,.java .hljs-javadoc,.javascript .hljs-javadoc,.rust .hljs-preprocessor{color:#969896} -.apache .hljs-sqbracket,.c .hljs-preprocessor,.coffeescript .hljs-regexp,.coffeescript .hljs-subst,.cpp .hljs-preprocessor,.hljs-string,.javascript .hljs-regexp,.json .hljs-attribute,.less .hljs-built_in,.makefile .hljs-variable,.markdown .hljs-blockquote,.markdown .hljs-emphasis,.markdown .hljs-link_label,.markdown .hljs-strong,.markdown .hljs-value,.nginx .hljs-number,.nginx .hljs-regexp,.objectivec .hljs-preprocessor .hljs-title,.perl .hljs-regexp,.php .hljs-regexp,.scss .hljs-built_in,.xml .hljs-value{color:#df5000} -.css .hljs-at_rule,.css .hljs-important,.go .hljs-typename,.haskell .hljs-type,.hljs-keyword,.http .hljs-request,.ini .hljs-setting,.java .hljs-javadoctag,.javascript .hljs-javadoctag,.javascript .hljs-tag,.less .hljs-at_rule,.less .hljs-tag,.nginx .hljs-title,.objectivec .hljs-preprocessor,.php .hljs-phpdoc,.scss .hljs-at_rule,.scss .hljs-important,.scss .hljs-tag,.sql .hljs-built_in,.stylus .hljs-at_rule,.swift .hljs-preprocessor{color:#a71d5d} -.apache .hljs-cbracket,.apache .hljs-common,.apache .hljs-keyword,.bash .hljs-built_in,.bash .hljs-literal,.c .hljs-built_in,.c .hljs-number,.coffeescript .hljs-built_in,.coffeescript .hljs-literal,.coffeescript .hljs-number,.cpp .hljs-built_in,.cpp .hljs-number,.cs .hljs-built_in,.cs .hljs-number,.css .hljs-attribute,.css .hljs-function,.css .hljs-hexcolor,.css .hljs-number,.go .hljs-built_in,.go .hljs-constant,.haskell .hljs-number,.http .hljs-attribute,.http .hljs-literal,.java .hljs-number,.javascript .hljs-built_in,.javascript .hljs-literal,.javascript .hljs-number,.json .hljs-number,.less .hljs-attribute,.less .hljs-function,.less .hljs-hexcolor,.less .hljs-number,.makefile .hljs-keyword,.markdown .hljs-link_reference,.nginx .hljs-built_in,.objectivec .hljs-built_in,.objectivec .hljs-literal,.objectivec .hljs-number,.php .hljs-literal,.php .hljs-number,.puppet .hljs-function,.python .hljs-number,.ruby .hljs-constant,.ruby .hljs-number,.ruby .hljs-prompt,.ruby .hljs-subst .hljs-keyword,.ruby .hljs-symbol,.rust .hljs-number,.scss .hljs-attribute,.scss .hljs-function,.scss .hljs-hexcolor,.scss .hljs-number,.scss .hljs-preprocessor,.sql .hljs-number,.stylus .hljs-attribute,.stylus .hljs-hexcolor,.stylus .hljs-number,.stylus .hljs-params,.swift .hljs-built_in,.swift .hljs-number{color:#0086b3} -.apache .hljs-tag,.cs .hljs-xmlDocTag,.css .hljs-tag,.stylus .hljs-tag,.xml .hljs-title{color:#63a35c} -.bash .hljs-variable,.cs .hljs-preprocessor,.cs .hljs-preprocessor .hljs-keyword,.css .hljs-attr_selector,.css .hljs-value,.ini .hljs-keyword,.ini .hljs-value,.javascript .hljs-tag .hljs-title,.makefile .hljs-constant,.nginx .hljs-variable,.scss .hljs-variable,.xml .hljs-tag{color:#333} -.bash .hljs-title,.c .hljs-title,.coffeescript .hljs-title,.cpp .hljs-title,.cs .hljs-title,.css .hljs-class,.css .hljs-id,.css .hljs-pseudo,.diff .hljs-chunk,.haskell .hljs-pragma,.haskell .hljs-title,.ini .hljs-title,.java .hljs-title,.javascript .hljs-title,.less .hljs-class,.less .hljs-id,.less .hljs-pseudo,.makefile .hljs-title,.objectivec .hljs-title,.perl .hljs-sub,.php .hljs-title,.puppet .hljs-title,.python .hljs-decorator,.python .hljs-title,.ruby .hljs-parent,.ruby .hljs-title,.rust .hljs-title,.scss .hljs-class,.scss .hljs-id,.scss .hljs-pseudo,.stylus .hljs-class,.stylus .hljs-id,.stylus .hljs-pseudo,.stylus .hljs-title,.swift .hljs-title,.xml .hljs-attribute{color:#795da3} -.coffeescript .hljs-attribute,.coffeescript .hljs-reserved{color:#1d3e81} -.diff .hljs-chunk{font-weight:700} -.diff .hljs-addition{color:#55a532;background-color:#eaffea} -.diff .hljs-deletion{color:#bd2c00;background-color:#ffecec} -.markdown .hljs-link_url{text-decoration:underline} \ No newline at end of file diff --git a/docs/styles/docfx.vendor.js b/docs/styles/docfx.vendor.js deleted file mode 100644 index 95c2d628..00000000 --- a/docs/styles/docfx.vendor.js +++ /dev/null @@ -1,45 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("