diff --git a/packages/downsample/downsample.cxx b/packages/downsample/downsample.cxx index 8980a73e3..b4eb70b94 100644 --- a/packages/downsample/downsample.cxx +++ b/packages/downsample/downsample.cxx @@ -24,9 +24,86 @@ #include "itkDiscreteGaussianImageFilter.h" #include "itkLinearInterpolateImageFunction.h" #include "itkResampleImageFilter.h" +#include "itkVectorIndexSelectionCastImageFilter.h" +#include "itkComposeImageFilter.h" #include "downsampleSigma.h" +// Scalar image processing +template +int +DownsampleScalarImage(itk::wasm::Pipeline & pipeline, const TImage * inputImage) +{ + using ImageType = TImage; + constexpr unsigned int ImageDimension = ImageType::ImageDimension; + + pipeline.get_option("input")->required()->type_name("INPUT_IMAGE"); + + std::vector shrinkFactors{ 2, 2 }; + pipeline.add_option("-s,--shrink-factors", shrinkFactors, "Shrink factors")->required()->type_size(ImageDimension); + + std::vector cropRadius; + pipeline.add_option("-r,--crop-radius", cropRadius, "Optional crop radius in pixel units.") + ->type_size(ImageDimension); + + using OutputImageType = itk::wasm::OutputImage; + OutputImageType downsampledImage; + pipeline.add_option("downsampled", downsampledImage, "Output downsampled image") + ->required() + ->type_name("OUTPUT_IMAGE"); + + ITK_WASM_PARSE(pipeline); + + auto sigmaValues = downsampleSigma(shrinkFactors); + + using GaussianFilterType = itk::DiscreteGaussianImageFilter; + auto gaussianFilter = GaussianFilterType::New(); + gaussianFilter->SetInput(inputImage); + typename GaussianFilterType::ArrayType sigmaArray; + for (unsigned int i = 0; i < ImageDimension; ++i) + { + sigmaArray[i] = sigmaValues[i]; + } + gaussianFilter->SetSigmaArray(sigmaArray); + gaussianFilter->SetUseImageSpacingOff(); + + const auto inputOrigin = inputImage->GetOrigin(); + const auto inputSpacing = inputImage->GetSpacing(); + const auto inputSize = inputImage->GetLargestPossibleRegion().GetSize(); + + typename ImageType::PointType outputOrigin; + typename ImageType::SpacingType outputSpacing; + typename ImageType::SizeType outputSize; + for (unsigned int i = 0; i < ImageDimension; ++i) + { + const double cropRadiusValue = cropRadius.size() ? cropRadius[i] : 0.0; + + outputOrigin[i] = inputOrigin[i] + cropRadiusValue * inputSpacing[i]; + outputSpacing[i] = inputSpacing[i] * shrinkFactors[i]; + outputSize[i] = std::max(0, (inputSize[i] - 2 * cropRadiusValue) / shrinkFactors[i]); + } + + using InterpolatorType = itk::LinearInterpolateImageFunction; + auto interpolator = InterpolatorType::New(); + + using ResampleFilterType = itk::ResampleImageFilter; + auto shrinkFilter = ResampleFilterType::New(); + shrinkFilter->SetInput(gaussianFilter->GetOutput()); + shrinkFilter->SetInterpolator(interpolator); + shrinkFilter->SetOutputOrigin(outputOrigin); + shrinkFilter->SetOutputSpacing(outputSpacing); + shrinkFilter->SetOutputDirection(inputImage->GetDirection()); + shrinkFilter->SetSize(outputSize); + shrinkFilter->SetOutputStartIndex(inputImage->GetLargestPossibleRegion().GetIndex()); + + ITK_WASM_CATCH_EXCEPTION(pipeline, shrinkFilter->UpdateLargestPossibleRegion()); + + typename ImageType::ConstPointer result = shrinkFilter->GetOutput(); + downsampledImage.Set(result); + + return EXIT_SUCCESS; +} + template class PipelineFunctor { @@ -39,16 +116,40 @@ class PipelineFunctor using InputImageType = itk::wasm::InputImage; InputImageType inputImage; + pipeline.add_option("input", inputImage, "Input image")->type_name("INPUT_IMAGE"); + + ITK_WASM_PRE_PARSE(pipeline); + + typename ImageType::ConstPointer image = inputImage.Get(); + return DownsampleScalarImage(pipeline, image); + } +}; + +// Specialization for VectorImage types +template +class PipelineFunctor> +{ +public: + int + operator()(itk::wasm::Pipeline & pipeline) + { + constexpr unsigned int Dimension = VDimension; + using PixelType = TPixel; + using VectorImageType = itk::VectorImage; + using ScalarImageType = itk::Image; + + using InputImageType = itk::wasm::InputImage; + InputImageType inputImage; pipeline.add_option("input", inputImage, "Input image")->required()->type_name("INPUT_IMAGE"); std::vector shrinkFactors{ 2, 2 }; - pipeline.add_option("-s,--shrink-factors", shrinkFactors, "Shrink factors")->required()->type_size(ImageDimension); + pipeline.add_option("-s,--shrink-factors", shrinkFactors, "Shrink factors")->required()->type_size(Dimension); std::vector cropRadius; pipeline.add_option("-r,--crop-radius", cropRadius, "Optional crop radius in pixel units.") - ->type_size(ImageDimension); + ->type_size(Dimension); - using OutputImageType = itk::wasm::OutputImage; + using OutputImageType = itk::wasm::OutputImage; OutputImageType downsampledImage; pipeline.add_option("downsampled", downsampledImage, "Output downsampled image") ->required() @@ -56,27 +157,23 @@ class PipelineFunctor ITK_WASM_PARSE(pipeline); - auto sigmaValues = downsampleSigma(shrinkFactors); + // Get number of components + const unsigned int numberOfComponents = inputImage.Get()->GetNumberOfComponentsPerPixel(); - using GaussianFilterType = itk::DiscreteGaussianImageFilter; - auto gaussianFilter = GaussianFilterType::New(); - gaussianFilter->SetInput(inputImage.Get()); - typename GaussianFilterType::ArrayType sigmaArray; - for (unsigned int i = 0; i < ImageDimension; ++i) - { - sigmaArray[i] = sigmaValues[i]; - } - gaussianFilter->SetSigmaArray(sigmaArray); - gaussianFilter->SetUseImageSpacingOff(); + // Extract, process, and compose each component + using ExtractFilterType = itk::VectorIndexSelectionCastImageFilter; + using ComposeFilterType = itk::ComposeImageFilter; + + auto sigmaValues = downsampleSigma(shrinkFactors); const auto inputOrigin = inputImage.Get()->GetOrigin(); const auto inputSpacing = inputImage.Get()->GetSpacing(); const auto inputSize = inputImage.Get()->GetLargestPossibleRegion().GetSize(); - typename ImageType::PointType outputOrigin; - typename ImageType::SpacingType outputSpacing; - typename ImageType::SizeType outputSize; - for (unsigned int i = 0; i < ImageDimension; ++i) + typename VectorImageType::PointType outputOrigin; + typename VectorImageType::SpacingType outputSpacing; + typename VectorImageType::SizeType outputSize; + for (unsigned int i = 0; i < Dimension; ++i) { const double cropRadiusValue = cropRadius.size() ? cropRadius[i] : 0.0; @@ -85,23 +182,51 @@ class PipelineFunctor outputSize[i] = std::max(0, (inputSize[i] - 2 * cropRadiusValue) / shrinkFactors[i]); } - using InterpolatorType = itk::LinearInterpolateImageFunction; - auto interpolator = InterpolatorType::New(); + auto composeFilter = ComposeFilterType::New(); + + auto extractFilter = ExtractFilterType::New(); + extractFilter->SetInput(inputImage.Get()); + + using GaussianFilterType = itk::DiscreteGaussianImageFilter; + auto gaussianFilter = GaussianFilterType::New(); + + for (unsigned int component = 0; component < numberOfComponents; ++component) + { + // Extract component + extractFilter->SetIndex(component); + + // Smooth component + gaussianFilter->SetInput(extractFilter->GetOutput()); + typename GaussianFilterType::ArrayType sigmaArray; + for (unsigned int i = 0; i < Dimension; ++i) + { + sigmaArray[i] = sigmaValues[i]; + } + gaussianFilter->SetSigmaArray(sigmaArray); + gaussianFilter->SetUseImageSpacingOff(); - using ResampleFilterType = itk::ResampleImageFilter; - auto shrinkFilter = ResampleFilterType::New(); - shrinkFilter->SetInput(gaussianFilter->GetOutput()); - shrinkFilter->SetInterpolator(interpolator); - shrinkFilter->SetOutputOrigin(outputOrigin); - shrinkFilter->SetOutputSpacing(outputSpacing); - shrinkFilter->SetOutputDirection(inputImage.Get()->GetDirection()); - shrinkFilter->SetSize(outputSize); - shrinkFilter->SetOutputStartIndex(inputImage.Get()->GetLargestPossibleRegion().GetIndex()); + // Resample component + using InterpolatorType = itk::LinearInterpolateImageFunction; + auto interpolator = InterpolatorType::New(); + + using ResampleFilterType = itk::ResampleImageFilter; + auto shrinkFilter = ResampleFilterType::New(); + shrinkFilter->SetInput(gaussianFilter->GetOutput()); + shrinkFilter->SetInterpolator(interpolator); + shrinkFilter->SetOutputOrigin(outputOrigin); + shrinkFilter->SetOutputSpacing(outputSpacing); + shrinkFilter->SetOutputDirection(inputImage.Get()->GetDirection()); + shrinkFilter->SetSize(outputSize); + shrinkFilter->SetOutputStartIndex(inputImage.Get()->GetLargestPossibleRegion().GetIndex()); + shrinkFilter->UpdateLargestPossibleRegion(); + + // Add to compose filter + composeFilter->SetInput(component, shrinkFilter->GetOutput()); + } - ITK_WASM_CATCH_EXCEPTION(pipeline, shrinkFilter->UpdateLargestPossibleRegion()); + ITK_WASM_CATCH_EXCEPTION(pipeline, composeFilter->UpdateLargestPossibleRegion()); - typename ImageType::ConstPointer result = shrinkFilter->GetOutput(); - downsampledImage.Set(result); + downsampledImage.Set(composeFilter->GetOutput()); return EXIT_SUCCESS; } @@ -123,5 +248,11 @@ main(int argc, char * argv[]) uint64_t, int64_t, float, - double>::Dimensions<2U, 3U, 4U, 5U>("input", pipeline); + double, + itk::VariableLengthVector, + itk::VariableLengthVector, + itk::VariableLengthVector, + itk::VariableLengthVector, + itk::VariableLengthVector + >::Dimensions<2U, 3U, 4U, 5U>("input", pipeline); } \ No newline at end of file diff --git a/packages/downsample/package.json b/packages/downsample/package.json index 55d7e96e7..d5188cd6e 100644 --- a/packages/downsample/package.json +++ b/packages/downsample/package.json @@ -1,16 +1,15 @@ { "name": "@itk-wasm/downsample-build", - "version": "1.7.1", + "version": "1.8.0", "private": true, "description": "Pipelines for downsampling images.", "type": "module", "itk-wasm": { "emscripten-docker-image": "quay.io/itkwasm/emscripten:latest", "wasi-docker-image": "quay.io/itkwasm/wasi:latest", - "test-data-hash": "bafkreic7utwwa32sc7ekhouzdlnla4kffytphcwc7qwam5ndhixwjulydq", + "test-data-hash": "bafkreigtrr3oeqaunbyhrpuvvhc5hfmpbddc4u52jvonsvr2m2xe5ni3jq", "test-data-urls": [ - "https://github.com/InsightSoftwareConsortium/ITK-Wasm/releases/download/itk-wasm-v1.0.0-b.163/itkwasm-downsample-test-data.tar.gz https://w3s.link/ipfs/bafybeifwebok64osjl2i3zc6rkn3izgon333wsjotqzqlxorkkvrbldjcy/data.tar.gz", - "https://w3s.link/ipfs/bafybeifwebok64osjl2i3zc6rkn3izgon333wsjotqzqlxorkkvrbldjcy/data.tar.gz" + "https://itk.mypinata.cloud/ipfs/bafkreigtrr3oeqaunbyhrpuvvhc5hfmpbddc4u52jvonsvr2m2xe5ni3jq" ], "typescript-package-name": "@itk-wasm/downsample", "python-package-name": "itkwasm-downsample", @@ -29,7 +28,7 @@ "build:gen:typescript": "itk-wasm pnpm-script build:gen:typescript", "build:gen:python": "pnpm build:wasi && pnpm bindgen:python", "test": "pnpm test:data:download && pnpm build:gen:python && pnpm test:python", - "test:data:download": "dam download test/data test/data.tar.gz bafkreic7utwwa32sc7ekhouzdlnla4kffytphcwc7qwam5ndhixwjulydq https://github.com/InsightSoftwareConsortium/ITK-Wasm/releases/download/itk-wasm-v1.0.0-b.163/itkwasm-downsample-test-data.tar.gz https://w3s.link/ipfs/bafybeifwebok64osjl2i3zc6rkn3izgon333wsjotqzqlxorkkvrbldjcy/data.tar.gz", + "test:data:download": "dam download test/data test/data.tar.gz bafkreigtrr3oeqaunbyhrpuvvhc5hfmpbddc4u52jvonsvr2m2xe5ni3jq https://itk.mypinata.cloud/ipfs/bafkreigtrr3oeqaunbyhrpuvvhc5hfmpbddc4u52jvonsvr2m2xe5ni3jq", "test:data:pack": "dam pack test/data test/data.tar.gz", "test:python:wasi": "pnpm test:data:download && pixi run --manifest-path=./pixi.toml test-wasi", "test:python:emscripten": "pnpm test:data:download && pixi run --manifest-path=./pixi.toml test-emscripten", diff --git a/packages/downsample/pixi.lock b/packages/downsample/pixi.lock index b416acd8d..bd1f74488 100644 --- a/packages/downsample/pixi.lock +++ b/packages/downsample/pixi.lock @@ -483,10 +483,10 @@ environments: - pypi: https://files.pythonhosted.org/packages/dc/58/ec1bf790ed9657fd8a651189d40eedd765bf1cd75355ffa3f8f9bd67f4df/itk_registration-5.4.0-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1a/e5/94a596fba3dbecdea33059b455294fbfea91fcfc0d6cfd92372e10a6da93/itk_segmentation-5.4.0-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a6/3c/ac3bad4ff24fe2b07064be5e44db8f4ed32a4e3708dff084e3b58c5b608c/itk_webassemblyinterface-1.0b175-cp311-abi3-manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/1b/81/6e07b81113d403ecc01599496351905531fa8d852a833952600db7a092ec/itkwasm-1.0b179-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/df/5ba47e12638ac537a8166a454c497032af83f2d5eb826bca81024ac8f78c/itkwasm-1.0b195-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/48/c1ae6fa5fa77d735a6411a764e6e3937a023bd4c3b124ac6301ee174a194/itkwasm_compare_images-5.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/ee/4a4bd7a8f381d391fa293dcfde3437d891c7e9dc7db8764e85506d6cc753/itkwasm_compare_images_wasi-5.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/35/333a5edde2a84b6cb1e472c6086d794ee76bbec7ce09f06547e1788e782a/itkwasm_image_io-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/17/b1a8b50187cdc81a979eb0f23dba13133bc0c4b5a355fa02eac39108134f/itkwasm_image_io-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b8/2a/5f599b21625876da5a1afb88192375d095fa73805054a7dfa3a3db92849d/itkwasm_image_io_wasi-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/b4/e3c7e6fab0f77fff6194afa173d1f2342073d91b1d3b4b30b17c3fb4407a/numpy-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl @@ -502,11 +502,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/83/ec3196c360afffbc5b342ead48d1eb7393dd74fa70bca75d33905a86f211/trio-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/be/a9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa/trio_websocket-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5c/ba/f551b829378d65d0e0494fdb492942a0ed2dc7f40681b2438a47d1f4af86/wasmtime-25.0.0-py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/54/de/7b8898c9e7f73a2f4c20b621279143cfc27836dba0db676e9a923cd0a461/wasmtime-38.0.0-py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl - - pypi: python/itkwasm-downsample - - pypi: python/itkwasm-downsample-wasi + - pypi: ./python/itkwasm-downsample + - pypi: ./python/itkwasm-downsample-wasi linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -630,10 +630,10 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/f0/a21ddf56263ad6c5f87164032aaeb2235ee2de688cb8a8eeec01a5f01bd7/itk_registration-5.4.0-cp311-abi3-manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/79/b9/ba9598bb8b7ee3962980d481065a58f75569c5a2df1d01520083288894b0/itk_segmentation-5.4.0-cp311-abi3-manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/f2/f5/cd8ed297bd1b9f816d7492bfa857c53bd8fd68aefc2aa9bef7a0d5a61d85/itk_webassemblyinterface-1.0b175-cp311-abi3-manylinux_2_28_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/1b/81/6e07b81113d403ecc01599496351905531fa8d852a833952600db7a092ec/itkwasm-1.0b179-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/df/5ba47e12638ac537a8166a454c497032af83f2d5eb826bca81024ac8f78c/itkwasm-1.0b195-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/48/c1ae6fa5fa77d735a6411a764e6e3937a023bd4c3b124ac6301ee174a194/itkwasm_compare_images-5.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/ee/4a4bd7a8f381d391fa293dcfde3437d891c7e9dc7db8764e85506d6cc753/itkwasm_compare_images_wasi-5.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/35/333a5edde2a84b6cb1e472c6086d794ee76bbec7ce09f06547e1788e782a/itkwasm_image_io-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/17/b1a8b50187cdc81a979eb0f23dba13133bc0c4b5a355fa02eac39108134f/itkwasm_image_io-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b8/2a/5f599b21625876da5a1afb88192375d095fa73805054a7dfa3a3db92849d/itkwasm_image_io_wasi-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/a7/af3329fda3c3ec31d9b650e42bbcd3422fc62a765cbb1405fde4177a0996/numpy-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl @@ -649,11 +649,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/83/ec3196c360afffbc5b342ead48d1eb7393dd74fa70bca75d33905a86f211/trio-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/be/a9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa/trio_websocket-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/36/5e83b5f7858fe1003cbb89d0d5716f628b9a00fafc3762665f06ca4ef75d/wasmtime-25.0.0-py3-none-manylinux2014_aarch64.whl + - pypi: https://files.pythonhosted.org/packages/fc/7b/8e6f9670ea1476735517b28b99b2595e9000d46ee0a276d0e0b547cc928c/wasmtime-38.0.0-py3-none-manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl - - pypi: python/itkwasm-downsample - - pypi: python/itkwasm-downsample-wasi + - pypi: ./python/itkwasm-downsample + - pypi: ./python/itkwasm-downsample-wasi osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda @@ -760,10 +760,10 @@ environments: - pypi: https://files.pythonhosted.org/packages/88/99/3db052a349efaf1ddbb51252e7e4c7a6a10ed5b3b87e2076afb622b711fd/itk_registration-5.4.0-cp311-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3a/92/7d32413898fe4068f0b2da97ab783057e6af84123aa6c54af3706476fed9/itk_segmentation-5.4.0-cp311-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/77/66/73fa21a0439eacae5156c73611b35eec2c9c3d83ae4f987754043fce1d67/itk_webassemblyinterface-1.0b175-cp311-abi3-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/1b/81/6e07b81113d403ecc01599496351905531fa8d852a833952600db7a092ec/itkwasm-1.0b179-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/df/5ba47e12638ac537a8166a454c497032af83f2d5eb826bca81024ac8f78c/itkwasm-1.0b195-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/48/c1ae6fa5fa77d735a6411a764e6e3937a023bd4c3b124ac6301ee174a194/itkwasm_compare_images-5.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/ee/4a4bd7a8f381d391fa293dcfde3437d891c7e9dc7db8764e85506d6cc753/itkwasm_compare_images_wasi-5.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/35/333a5edde2a84b6cb1e472c6086d794ee76bbec7ce09f06547e1788e782a/itkwasm_image_io-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/17/b1a8b50187cdc81a979eb0f23dba13133bc0c4b5a355fa02eac39108134f/itkwasm_image_io-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b8/2a/5f599b21625876da5a1afb88192375d095fa73805054a7dfa3a3db92849d/itkwasm_image_io_wasi-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/29/cb48a402ea879e645b16218718f3f7d9588a77d674a9dcf22e4c43487636/numpy-2.1.2-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl @@ -779,11 +779,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/83/ec3196c360afffbc5b342ead48d1eb7393dd74fa70bca75d33905a86f211/trio-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/be/a9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa/trio_websocket-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/f0/d415d6b31ba69cfca04b2d5e83fbb5fc05335323712fd91948a1a53d13be/wasmtime-25.0.0-py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/54/83/83d598af08eb297f1a644e678ce2d6c335f015c9f3c8c2532e289801293b/wasmtime-38.0.0-py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl - - pypi: python/itkwasm-downsample - - pypi: python/itkwasm-downsample-wasi + - pypi: ./python/itkwasm-downsample + - pypi: ./python/itkwasm-downsample-wasi win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda @@ -895,10 +895,10 @@ environments: - pypi: https://files.pythonhosted.org/packages/89/f6/686c2d2650065495720889c2e6ebcf6af2e5c2692fc6d8768793b08c641a/itk_registration-5.4.0-cp311-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/77/8d/916c078544ac29a5ac215d2e5a2b07c9314b515b63136be92d6856a41f55/itk_segmentation-5.4.0-cp311-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/6c/cf/af6554bd0fd831ba2f8ed7840904a1b0828b1ea348b5000b78ad34c5688f/itk_webassemblyinterface-1.0b175-cp311-abi3-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/1b/81/6e07b81113d403ecc01599496351905531fa8d852a833952600db7a092ec/itkwasm-1.0b179-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/df/5ba47e12638ac537a8166a454c497032af83f2d5eb826bca81024ac8f78c/itkwasm-1.0b195-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/48/c1ae6fa5fa77d735a6411a764e6e3937a023bd4c3b124ac6301ee174a194/itkwasm_compare_images-5.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/ee/4a4bd7a8f381d391fa293dcfde3437d891c7e9dc7db8764e85506d6cc753/itkwasm_compare_images_wasi-5.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/35/333a5edde2a84b6cb1e472c6086d794ee76bbec7ce09f06547e1788e782a/itkwasm_image_io-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/17/b1a8b50187cdc81a979eb0f23dba13133bc0c4b5a355fa02eac39108134f/itkwasm_image_io-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b8/2a/5f599b21625876da5a1afb88192375d095fa73805054a7dfa3a3db92849d/itkwasm_image_io_wasi-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/79/73735a6a5dad6059c085f240a4e74c9270feccd2bc66e4d31b5ca01d329c/numpy-2.1.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl @@ -914,11 +914,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/83/ec3196c360afffbc5b342ead48d1eb7393dd74fa70bca75d33905a86f211/trio-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/48/be/a9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa/trio_websocket-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1b/21/c0f3e031efe5f009215975eb7dbea86b55a69c4f02420965d1f45f43865e/wasmtime-25.0.0-py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/66/99/6da689c6534b16b2e6959321533f0000228854e5f4211eb00bfa7b6bcebc/wasmtime-38.0.0-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl - - pypi: python/itkwasm-downsample - - pypi: python/itkwasm-downsample-wasi + - pypi: ./python/itkwasm-downsample + - pypi: ./python/itkwasm-downsample-wasi packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -1974,17 +1974,17 @@ packages: - itk==5.4.* - itk-meshtopolydata==0.11.* requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/1b/81/6e07b81113d403ecc01599496351905531fa8d852a833952600db7a092ec/itkwasm-1.0b179-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/1d/df/5ba47e12638ac537a8166a454c497032af83f2d5eb826bca81024ac8f78c/itkwasm-1.0b195-py3-none-any.whl name: itkwasm - version: 1.0b179 - sha256: 43558ccd082f3dc3c9b3b2379cdb197635b33620d41dbc6c1fa9186d03c22a7e + version: 1.0b195 + sha256: c98eaf4263a89cd3e639f40da0c1e0b021f85903fdfad54606b994c42e0d057a requires_dist: - importlib-metadata ; python_full_version < '3.10' - numpy - platformdirs ; sys_platform != 'emscripten' - typing-extensions - - wasmtime>=13.0.2 ; sys_platform != 'emscripten' - requires_python: '>=3.8' + - wasmtime>=28.0.0 ; sys_platform != 'emscripten' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/08/48/c1ae6fa5fa77d735a6411a764e6e3937a023bd4c3b124ac6301ee174a194/itkwasm_compare_images-5.2.3-py3-none-any.whl name: itkwasm-compare-images version: 5.2.3 @@ -2002,9 +2002,9 @@ packages: - importlib-resources - itkwasm>=1.0b171 requires_python: '>=3.8' -- pypi: python/itkwasm-downsample +- pypi: ./python/itkwasm-downsample name: itkwasm-downsample - version: 1.4.3 + version: 1.7.1 sha256: 40a64ad99d6ad94e7e233bcc1ff4ec3ad0af60f473dbcaa2d8b0099b79c326ba requires_dist: - itkwasm-downsample-emscripten ; sys_platform == 'emscripten' @@ -2012,23 +2012,23 @@ packages: - itkwasm>=1.0b145 requires_python: '>=3.8' editable: true -- pypi: python/itkwasm-downsample-wasi +- pypi: ./python/itkwasm-downsample-wasi name: itkwasm-downsample-wasi - version: 1.4.3 + version: 1.7.1 sha256: e889b45381ae4dba3986c719889a9a9ca1bff2d1aa55d17a10cb863fa75e2586 requires_dist: - importlib-resources - itkwasm>=1.0b145 requires_python: '>=3.8' editable: true -- pypi: https://files.pythonhosted.org/packages/fa/35/333a5edde2a84b6cb1e472c6086d794ee76bbec7ce09f06547e1788e782a/itkwasm_image_io-1.3.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/be/17/b1a8b50187cdc81a979eb0f23dba13133bc0c4b5a355fa02eac39108134f/itkwasm_image_io-1.6.0-py3-none-any.whl name: itkwasm-image-io - version: 1.3.0 - sha256: 121ef7e942f1f6c25ef428a0a39944a0a9eb9bce226d6ee7466df1e2d8fc9a56 + version: 1.6.0 + sha256: 55122f55b37b7b3c834952bfdc40ff51bdf1da05482e5c5aeba5b4fec418b8f7 requires_dist: - itkwasm-image-io-emscripten ; sys_platform == 'emscripten' - itkwasm-image-io-wasi ; sys_platform != 'emscripten' - - itkwasm>=1.0b145 + - itkwasm>=1.0b186 requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/b8/2a/5f599b21625876da5a1afb88192375d095fa73805054a7dfa3a3db92849d/itkwasm_image_io_wasi-1.3.0-py3-none-any.whl name: itkwasm-image-io-wasi @@ -4341,54 +4341,54 @@ packages: purls: [] size: 17453 timestamp: 1728400827536 -- pypi: https://files.pythonhosted.org/packages/1b/21/c0f3e031efe5f009215975eb7dbea86b55a69c4f02420965d1f45f43865e/wasmtime-25.0.0-py3-none-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/54/83/83d598af08eb297f1a644e678ce2d6c335f015c9f3c8c2532e289801293b/wasmtime-38.0.0-py3-none-macosx_11_0_arm64.whl name: wasmtime - version: 25.0.0 - sha256: f8a2a213b9179965db2d2eedececd69a37e287e902330509afae51c71a3a6842 + version: 38.0.0 + sha256: 479529425f68cd69f8f4c369abf50d6f44a0e2395f5ce2b9a506c8a695aef65b requires_dist: - importlib-resources>=5.10 - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - pycparser ; extra == 'testing' - pytest-mypy ; extra == 'testing' - - componentize-py ; extra == 'testing' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/5c/ba/f551b829378d65d0e0494fdb492942a0ed2dc7f40681b2438a47d1f4af86/wasmtime-25.0.0-py3-none-manylinux1_x86_64.whl + - pytest ; extra == 'testing' + - componentize-py ; (sys_platform != 'win32' and extra == 'testing') or (platform_machine == 'AMD64' and extra == 'testing') + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/54/de/7b8898c9e7f73a2f4c20b621279143cfc27836dba0db676e9a923cd0a461/wasmtime-38.0.0-py3-none-manylinux1_x86_64.whl name: wasmtime - version: 25.0.0 - sha256: b4364e14d44e3b7afe6a40bf608e9d0d2c40b09dece441d20f4f6e31906b729c + version: 38.0.0 + sha256: f6c87bfe9de9a35de5b28fbdac192e2526486e3d0a3be48e107789cf117925fd requires_dist: - importlib-resources>=5.10 - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - pycparser ; extra == 'testing' - pytest-mypy ; extra == 'testing' - - componentize-py ; extra == 'testing' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/b7/36/5e83b5f7858fe1003cbb89d0d5716f628b9a00fafc3762665f06ca4ef75d/wasmtime-25.0.0-py3-none-manylinux2014_aarch64.whl + - pytest ; extra == 'testing' + - componentize-py ; (sys_platform != 'win32' and extra == 'testing') or (platform_machine == 'AMD64' and extra == 'testing') + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/66/99/6da689c6534b16b2e6959321533f0000228854e5f4211eb00bfa7b6bcebc/wasmtime-38.0.0-py3-none-win_amd64.whl name: wasmtime - version: 25.0.0 - sha256: a07445073cf36a6e5d1dc28246a897dcbdaa537ba8be8805be65422ecca297eb + version: 38.0.0 + sha256: c0f7ac800575e592e74ce7d111e04ad7b3dbbff421bfac00c94432300ee39bfe requires_dist: - importlib-resources>=5.10 - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - pycparser ; extra == 'testing' - pytest-mypy ; extra == 'testing' - - componentize-py ; extra == 'testing' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/cc/f0/d415d6b31ba69cfca04b2d5e83fbb5fc05335323712fd91948a1a53d13be/wasmtime-25.0.0-py3-none-macosx_11_0_arm64.whl + - pytest ; extra == 'testing' + - componentize-py ; (sys_platform != 'win32' and extra == 'testing') or (platform_machine == 'AMD64' and extra == 'testing') + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fc/7b/8e6f9670ea1476735517b28b99b2595e9000d46ee0a276d0e0b547cc928c/wasmtime-38.0.0-py3-none-manylinux2014_aarch64.whl name: wasmtime - version: 25.0.0 - sha256: 5bdf1214ee3ee78a4a8a92da339f4c4c8c109e65af881b37f4adfc05d02af426 + version: 38.0.0 + sha256: d5455bd83e82b04db32c226524b1c084a71d5d9d4ada3c5d0cf5cccaf2563253 requires_dist: - importlib-resources>=5.10 - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - pycparser ; extra == 'testing' - pytest-mypy ; extra == 'testing' - - componentize-py ; extra == 'testing' - requires_python: '>=3.8' + - pytest ; extra == 'testing' + - componentize-py ; (sys_platform != 'win32' and extra == 'testing') or (platform_machine == 'AMD64' and extra == 'testing') + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl name: websocket-client version: 1.8.0 diff --git a/packages/downsample/pixi.toml b/packages/downsample/pixi.toml index f2411d30c..b2a7ac72d 100644 --- a/packages/downsample/pixi.toml +++ b/packages/downsample/pixi.toml @@ -1,5 +1,5 @@ -[project] -authors = ["Matt McCormick "] +[workspace] +authors = ["Matt McCormick "] channels = ["conda-forge"] description = "Pipelines for downsampling images." name = "downsample" @@ -86,7 +86,7 @@ itkwasm-downsample = { path = "python/itkwasm-downsample", editable = true } pyodide-py = ">=0.26.3, <0.27" pytest-pyodide = ">=0.58.3, <0.59" itk-webassemblyinterface = ">=1.0b175, <2" -itkwasm-image-io = ">=1.3.0, <2" +itkwasm-image-io = ">=1.6.0, <2" itkwasm-compare-images = ">=5.2.3, <6" [feature.python.tasks.test-wasi] diff --git a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/_version.py b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/_version.py index 3c1e9cbd3..29654eec0 100644 --- a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/_version.py +++ b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/_version.py @@ -1 +1 @@ -__version__ = "1.7.1" +__version__ = "1.8.0" diff --git a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py index afec5715a..2faab6f53 100644 --- a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py +++ b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIHJJPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZ0k9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlySShBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIGlJPSIxLjcuMSIsZWU9aUk7dmFyIG9JPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0saz1vSTt2YXIgbkk9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFg9bkk7ZnVuY3Rpb24gYUkoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIGsuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIGsuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIGsuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2Ugay5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIFguRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgWC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIEg9YUk7dmFyIHNJPXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLFBvaW50U2V0OiJQb2ludFNldCIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixUcmFuc2Zvcm1MaXN0OiJUcmFuc2Zvcm1MaXN0IixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxkPXNJO3ZhciBUZT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxDST1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyZT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksdGU9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLFVBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSx4ZT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixCST17Y2FuSGFuZGxlOkE9PnhlKEEpJiZBW1RlXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOmUscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBXZShBLGUpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksZ2UoQSl9fSxRST17Y2FuSGFuZGxlOkE9PnhlKEEpJiZVQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBlO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ZT17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OmU9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW2UsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sUGU9bmV3IE1hcChbWyJwcm94eSIsQkldLFsidGhyb3ciLFFJXV0pO2Z1bmN0aW9uIEVJKEEsZSl7Zm9yKGxldCB0IG9mIEEpaWYoZT09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBXZShBLGU9Z2xvYmFsVGhpcyx0PVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIEkocil7aWYoIXJ8fCFyLmRhdGEpcmV0dXJuO2lmKCFFSSh0LHIub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiAnJHtyLm9yaWdpbn0nIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDppLHR5cGU6ZyxwYXRoOnN9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LHIuZGF0YSksRT0oci5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcCh6KSxDO3RyeXtsZXQgbz1zLnNsaWNlKDAsLTEpLnJlZHVjZSgoYyxCKT0+Y1tCXSxBKSxhPXMucmVkdWNlKChjLEIpPT5jW0JdLEEpO3N3aXRjaChnKXtjYXNlIkdFVCI6Qz1hO2JyZWFrO2Nhc2UiU0VUIjpvW3Muc2xpY2UoLTEpWzBdXT16KHIuZGF0YS52YWx1ZSksQz0hMDticmVhaztjYXNlIkFQUExZIjpDPWEuYXBwbHkobyxFKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBjPW5ldyBhKC4uLkUpO0M9ZEkoYyl9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpjLHBvcnQyOkJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtXZShBLEIpLEM9aWUoYyxbY10pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6Qz12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKG8pe0M9e3ZhbHVlOm8sW1VBXTowfX1Qcm9taXNlLnJlc29sdmUoQykuY2F0Y2gobz0+KHt2YWx1ZTpvLFtVQV06MH0pKS50aGVuKG89PntsZXRbYSxjXT1MQShvKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLGMpLGc9PT0iUkVMRUFTRSImJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLEkpLGplKGUpLHRlIGluIEEmJnR5cGVvZiBBW3RlXT09ImZ1bmN0aW9uIiYmQVt0ZV0oKSl9KS5jYXRjaChvPT57bGV0W2EsY109TEEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtVQV06MH0pO2UucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtpZDppfSksYyl9KX0pLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBsSShBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBqZShBKXtsSShBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIGdlKEEsZSl7cmV0dXJuIEllKEEsW10sZSl9ZnVuY3Rpb24ga0EoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIHZlKEEpe3JldHVybiBBQShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntqZShBKX0pfXZhciBOQT1uZXcgV2Vha01hcCxHQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oTkEuZ2V0KEEpfHwwKS0xO05BLnNldChBLGUpLGU9PT0wJiZ2ZShBKX0pO2Z1bmN0aW9uIGNJKEEsZSl7bGV0IHQ9KE5BLmdldChlKXx8MCkrMTtOQS5zZXQoZSx0KSxHQSYmR0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIGZJKEEpe0dBJiZHQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIEllKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IEk9ITEscj1uZXcgUHJveHkodCx7Z2V0KGksZyl7aWYoa0EoSSksZz09PXJlKXJldHVybigpPT57ZkkociksdmUoQSksST0hMH07aWYoZz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5yfTtsZXQgcz1BQShBLHt0eXBlOiJHRVQiLHBhdGg6ZS5tYXAoRT0+RS50b1N0cmluZygpKX0pLnRoZW4oeik7cmV0dXJuIHMudGhlbi5iaW5kKHMpfXJldHVybiBJZShBLFsuLi5lLGddKX0sc2V0KGksZyxzKXtrQShJKTtsZXRbRSxDXT1MQShzKTtyZXR1cm4gQUEoQSx7dHlwZToiU0VUIixwYXRoOlsuLi5lLGddLm1hcChvPT5vLnRvU3RyaW5nKCkpLHZhbHVlOkV9LEMpLnRoZW4oeil9LGFwcGx5KGksZyxzKXtrQShJKTtsZXQgRT1lW2UubGVuZ3RoLTFdO2lmKEU9PT1DSSlyZXR1cm4gQUEoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbih6KTtpZihFPT09ImJpbmQiKXJldHVybiBJZShBLGUuc2xpY2UoMCwtMSkpO2xldFtDLG9dPU9lKHMpO3JldHVybiBBQShBLHt0eXBlOiJBUFBMWSIscGF0aDplLm1hcChhPT5hLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpDfSxvKS50aGVuKHopfSxjb25zdHJ1Y3QoaSxnKXtrQShJKTtsZXRbcyxFXT1PZShnKTtyZXR1cm4gQUEoQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOmUubWFwKEM9PkMudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OnN9LEUpLnRoZW4oeil9fSk7cmV0dXJuIGNJKHIsQSkscn1mdW5jdGlvbiB1SShBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBPZShBKXtsZXQgZT1BLm1hcChMQSk7cmV0dXJuW2UubWFwKHQ9PnRbMF0pLHVJKGUubWFwKHQ9PnRbMV0pKV19dmFyIFplPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGllKEEsZSl7cmV0dXJuIFplLnNldChBLGUpLEF9ZnVuY3Rpb24gZEkoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W1RlXTohMH0pfWZ1bmN0aW9uIExBKEEpe2ZvcihsZXRbZSx0XW9mIFBlKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbSSxyXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6ZSx2YWx1ZTpJfSxyXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sWmUuZ2V0KEEpfHxbXV19ZnVuY3Rpb24geihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBQZS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIEFBKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoST0+e2xldCByPXBJKCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKGcpeyFnLmRhdGF8fCFnLmRhdGEuaWR8fGcuZGF0YS5pZCE9PXJ8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLEkoZy5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpyfSxlKSx0KX0pfWZ1bmN0aW9uIHBJKCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBDQShBLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KGUsYXJndW1lbnRzKX19dmFye3RvU3RyaW5nOmhJfT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpuZX09T2JqZWN0LHtpdGVyYXRvcjpKQSx0b1N0cmluZ1RhZzp6ZX09U3ltYm9sLFlBPShBPT5lPT57bGV0IHQ9aEkuY2FsbChlKTtyZXR1cm4gQVt0XXx8KEFbdF09dC5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpKX0pKE9iamVjdC5jcmVhdGUobnVsbCkpLGI9QT0+KEE9QS50b0xvd2VyQ2FzZSgpLGU9PllBKGUpPT09QSksTUE9QT0+ZT0+dHlwZW9mIGU9PT1BLHtpc0FycmF5OnRBfT1BcnJheSxlQT1NQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gQkEoQSl7cmV0dXJuIEEhPT1udWxsJiYhZUEoQSkmJkEuY29uc3RydWN0b3IhPT1udWxsJiYhZUEoQS5jb25zdHJ1Y3RvcikmJlUoQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIF9lPWIoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gREkoQSl7bGV0IGU7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9lPUFycmF5QnVmZmVyLmlzVmlldyhBKTplPUEmJkEuYnVmZmVyJiZfZShBLmJ1ZmZlciksZX12YXIgeUk9TUEoInN0cmluZyIpLFU9TUEoImZ1bmN0aW9uIiksJGU9TUEoIm51bWJlciIpLFFBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsd0k9QT0+QT09PSEwfHxBPT09ITEsYkE9QT0+e2lmKFlBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IGU9bmUoQSk7cmV0dXJuKGU9PT1udWxsfHxlPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bnVsbCkmJiEoemUgaW4gQSkmJiEoSkEgaW4gQSl9LG1JPUE9PntpZighUUEoQSl8fEJBKEEpKXJldHVybiExO3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoQSkubGVuZ3RoPT09MCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09T2JqZWN0LnByb3RvdHlwZX1jYXRjaHtyZXR1cm4hMX19LFNJPWIoIkRhdGUiKSxGST1iKCJGaWxlIiksUkk9YigiQmxvYiIpLGtJPWIoIkZpbGVMaXN0IiksVUk9QT0+UUEoQSkmJlUoQS5waXBlKSxOST1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1ZQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sR0k9YigiVVJMU2VhcmNoUGFyYW1zIiksW0xJLGJJLEpJLFlJXT1bIlJlYWRhYmxlU3RyZWFtIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiSGVhZGVycyJdLm1hcChiKSxNST1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywiIik7ZnVuY3Rpb24gRUEoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgSSxyO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSx0QShBKSlmb3IoST0wLHI9QS5sZW5ndGg7STxyO0krKyllLmNhbGwobnVsbCxBW0ldLEksQSk7ZWxzZXtpZihCQShBKSlyZXR1cm47bGV0IGk9dD9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKTpPYmplY3Qua2V5cyhBKSxnPWkubGVuZ3RoLHM7Zm9yKEk9MDtJPGc7SSsrKXM9aVtJXSxlLmNhbGwobnVsbCxBW3NdLHMsQSl9fWZ1bmN0aW9uIEF0KEEsZSl7aWYoQkEoQSkpcmV0dXJuIG51bGw7ZT1lLnRvTG93ZXJDYXNlKCk7bGV0IHQ9T2JqZWN0LmtleXMoQSksST10Lmxlbmd0aCxyO2Zvcig7SS0tID4wOylpZihyPXRbSV0sZT09PXIudG9Mb3dlckNhc2UoKSlyZXR1cm4gcjtyZXR1cm4gbnVsbH12YXIgXz10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLGV0PUE9PiFlQShBKSYmQSE9PV87ZnVuY3Rpb24gb2UoKXtsZXR7Y2FzZWxlc3M6QSxza2lwVW5kZWZpbmVkOmV9PWV0KHRoaXMpJiZ0aGlzfHx7fSx0PXt9LEk9KHIsaSk9PntsZXQgZz1BJiZBdCh0LGkpfHxpO2JBKHRbZ10pJiZiQShyKT90W2ddPW9lKHRbZ10scik6YkEocik/dFtnXT1vZSh7fSxyKTp0QShyKT90W2ddPXIuc2xpY2UoKTooIWV8fCFlQShyKSkmJih0W2ddPXIpfTtmb3IobGV0IHI9MCxpPWFyZ3VtZW50cy5sZW5ndGg7cjxpO3IrKylhcmd1bWVudHNbcl0mJkVBKGFyZ3VtZW50c1tyXSxJKTtyZXR1cm4gdH12YXIgSEk9KEEsZSx0LHthbGxPd25LZXlzOkl9PXt9KT0+KEVBKGUsKHIsaSk9Pnt0JiZVKHIpP0FbaV09Q0Eocix0KTpBW2ldPXJ9LHthbGxPd25LZXlzOkl9KSxBKSxxST1BPT4oQS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihBPUEuc2xpY2UoMSkpLEEpLEtJPShBLGUsdCxJKT0+e0EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUsSSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwic3VwZXIiLHt2YWx1ZTplLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oQS5wcm90b3R5cGUsdCl9LE9JPShBLGUsdCxJKT0+e2xldCByLGksZyxzPXt9O2lmKGU9ZXx8e30sQT09bnVsbClyZXR1cm4gZTtkb3tmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKSxpPXIubGVuZ3RoO2ktLSA+MDspZz1yW2ldLCghSXx8SShnLEEsZSkpJiYhc1tnXSYmKGVbZ109QVtnXSxzW2ddPSEwKTtBPXQhPT0hMSYmbmUoQSl9d2hpbGUoQSYmKCF0fHx0KEEsZSkpJiZBIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIGV9LFRJPShBLGUsdCk9PntBPVN0cmluZyhBKSwodD09PXZvaWQgMHx8dD5BLmxlbmd0aCkmJih0PUEubGVuZ3RoKSx0LT1lLmxlbmd0aDtsZXQgST1BLmluZGV4T2YoZSx0KTtyZXR1cm4gSSE9PS0xJiZJPT09dH0seEk9QT0+e2lmKCFBKXJldHVybiBudWxsO2lmKHRBKEEpKXJldHVybiBBO2xldCBlPUEubGVuZ3RoO2lmKCEkZShlKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoZSk7Zm9yKDtlLS0gPjA7KXRbZV09QVtlXTtyZXR1cm4gdH0sUEk9KEE9PmU9PkEmJmUgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJm5lKFVpbnQ4QXJyYXkpKSxXST0oQSxlKT0+e2xldCBJPShBJiZBW0pBXSkuY2FsbChBKSxyO2Zvcig7KHI9SS5uZXh0KCkpJiYhci5kb25lOyl7bGV0IGk9ci52YWx1ZTtlLmNhbGwoQSxpWzBdLGlbMV0pfX0sakk9KEEsZSk9PntsZXQgdCxJPVtdO2Zvcig7KHQ9QS5leGVjKGUpKSE9PW51bGw7KUkucHVzaCh0KTtyZXR1cm4gSX0sdkk9YigiSFRNTEZvcm1FbGVtZW50IiksWkk9QT0+QS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xzXShbYS16XGRdKShcdyopL2csZnVuY3Rpb24odCxJLHIpe3JldHVybiBJLnRvVXBwZXJDYXNlKCkrcn0pLFhlPSgoe2hhc093blByb3BlcnR5OkF9KT0+KGUsdCk9PkEuY2FsbChlLHQpKShPYmplY3QucHJvdG90eXBlKSxWST1iKCJSZWdFeHAiKSx0dD0oQSxlKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEEpLEk9e307RUEodCwocixpKT0+e2xldCBnOyhnPWUocixpLEEpKSE9PSExJiYoSVtpXT1nfHxyKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEEsSSl9LFhJPUE9Pnt0dChBLChlLHQpPT57aWYoVShBKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IEk9QVt0XTtpZihVKEkpKXtpZihlLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIGUpe2Uud3JpdGFibGU9ITE7cmV0dXJufWUuc2V0fHwoZS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgJyIrdCsiJyIpfSl9fSl9LHpJPShBLGUpPT57bGV0IHQ9e30sST1yPT57ci5mb3JFYWNoKGk9Pnt0W2ldPSEwfSl9O3JldHVybiB0QShBKT9JKEEpOkkoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxfST0oKT0+e30sJEk9KEEsZSk9PkEhPW51bGwmJk51bWJlci5pc0Zpbml0ZShBPStBKT9BOmU7ZnVuY3Rpb24gQXIoQSl7cmV0dXJuISEoQSYmVShBLmFwcGVuZCkmJkFbemVdPT09IkZvcm1EYXRhIiYmQVtKQV0pfXZhciBlcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShJLHIpPT57aWYoUUEoSSkpe2lmKGUuaW5kZXhPZihJKT49MClyZXR1cm47aWYoQkEoSSkpcmV0dXJuIEk7aWYoISgidG9KU09OImluIEkpKXtlW3JdPUk7bGV0IGk9dEEoSSk/W106e307cmV0dXJuIEVBKEksKGcscyk9PntsZXQgRT10KGcscisxKTshZUEoRSkmJihpW3NdPUUpfSksZVtyXT12b2lkIDAsaX19cmV0dXJuIEl9O3JldHVybiB0KEEsMCl9LHRyPWIoIkFzeW5jRnVuY3Rpb24iKSxJcj1BPT5BJiYoUUEoQSl8fFUoQSkpJiZVKEEudGhlbikmJlUoQS5jYXRjaCksSXQ9KChBLGUpPT5BP3NldEltbWVkaWF0ZTplPygodCxJKT0+KF8uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtzb3VyY2U6cixkYXRhOml9KT0+e3I9PT1fJiZpPT09dCYmSS5sZW5ndGgmJkkuc2hpZnQoKSgpfSwhMSkscj0+e0kucHVzaChyKSxfLnBvc3RNZXNzYWdlKHQsIioiKX0pKShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsW10pOnQ9PnNldFRpbWVvdXQodCkpKHR5cGVvZiBzZXRJbW1lZGlhdGU9PSJmdW5jdGlvbiIsVShfLnBvc3RNZXNzYWdlKSkscnI9dHlwZW9mIHF1ZXVlTWljcm90YXNrPCJ1Ij9xdWV1ZU1pY3JvdGFzay5iaW5kKF8pOnR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5uZXh0VGlja3x8SXQsZ3I9QT0+QSE9bnVsbCYmVShBW0pBXSksbj17aXNBcnJheTp0QSxpc0FycmF5QnVmZmVyOl9lLGlzQnVmZmVyOkJBLGlzRm9ybURhdGE6TkksaXNBcnJheUJ1ZmZlclZpZXc6REksaXNTdHJpbmc6eUksaXNOdW1iZXI6JGUsaXNCb29sZWFuOndJLGlzT2JqZWN0OlFBLGlzUGxhaW5PYmplY3Q6YkEsaXNFbXB0eU9iamVjdDptSSxpc1JlYWRhYmxlU3RyZWFtOkxJLGlzUmVxdWVzdDpiSSxpc1Jlc3BvbnNlOkpJLGlzSGVhZGVyczpZSSxpc1VuZGVmaW5lZDplQSxpc0RhdGU6U0ksaXNGaWxlOkZJLGlzQmxvYjpSSSxpc1JlZ0V4cDpWSSxpc0Z1bmN0aW9uOlUsaXNTdHJlYW06VUksaXNVUkxTZWFyY2hQYXJhbXM6R0ksaXNUeXBlZEFycmF5OlBJLGlzRmlsZUxpc3Q6a0ksZm9yRWFjaDpFQSxtZXJnZTpvZSxleHRlbmQ6SEksdHJpbTpNSSxzdHJpcEJPTTpxSSxpbmhlcml0czpLSSx0b0ZsYXRPYmplY3Q6T0ksa2luZE9mOllBLGtpbmRPZlRlc3Q6YixlbmRzV2l0aDpUSSx0b0FycmF5OnhJLGZvckVhY2hFbnRyeTpXSSxtYXRjaEFsbDpqSSxpc0hUTUxGb3JtOnZJLGhhc093blByb3BlcnR5OlhlLGhhc093blByb3A6WGUscmVkdWNlRGVzY3JpcHRvcnM6dHQsZnJlZXplTWV0aG9kczpYSSx0b09iamVjdFNldDp6SSx0b0NhbWVsQ2FzZTpaSSxub29wOl9JLHRvRmluaXRlTnVtYmVyOiRJLGZpbmRLZXk6QXQsZ2xvYmFsOl8saXNDb250ZXh0RGVmaW5lZDpldCxpc1NwZWNDb21wbGlhbnRGb3JtOkFyLHRvSlNPTk9iamVjdDplcixpc0FzeW5jRm46dHIsaXNUaGVuYWJsZTpJcixzZXRJbW1lZGlhdGU6SXQsYXNhcDpycixpc0l0ZXJhYmxlOmdyfTtmdW5jdGlvbiBJQShBLGUsdCxJLHIpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsZSYmKHRoaXMuY29kZT1lKSx0JiYodGhpcy5jb25maWc9dCksSSYmKHRoaXMucmVxdWVzdD1JKSxyJiYodGhpcy5yZXNwb25zZT1yLHRoaXMuc3RhdHVzPXIuc3RhdHVzP3Iuc3RhdHVzOm51bGwpfW4uaW5oZXJpdHMoSUEsRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpuLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMuc3RhdHVzfX19KTt2YXIgcnQ9SUEucHJvdG90eXBlLGd0PXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e2d0W0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKElBLGd0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocnQsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7SUEuZnJvbT0oQSxlLHQsSSxyLGkpPT57bGV0IGc9T2JqZWN0LmNyZWF0ZShydCk7bi50b0ZsYXRPYmplY3QoQSxnLGZ1bmN0aW9uKG8pe3JldHVybiBvIT09RXJyb3IucHJvdG90eXBlfSxDPT5DIT09ImlzQXhpb3NFcnJvciIpO2xldCBzPUEmJkEubWVzc2FnZT9BLm1lc3NhZ2U6IkVycm9yIixFPWU9PW51bGwmJkE/QS5jb2RlOmU7cmV0dXJuIElBLmNhbGwoZyxzLEUsdCxJLHIpLEEmJmcuY2F1c2U9PW51bGwmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLCJjYXVzZSIse3ZhbHVlOkEsY29uZmlndXJhYmxlOiEwfSksZy5uYW1lPUEmJkEubmFtZXx8IkVycm9yIixpJiZPYmplY3QuYXNzaWduKGcsaSksZ307dmFyIHU9SUE7dmFyIEhBPW51bGw7ZnVuY3Rpb24gYWUoQSl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdChBKXx8bi5pc0FycmF5KEEpfWZ1bmN0aW9uIG90KEEpe3JldHVybiBuLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGl0KEEsZSx0KXtyZXR1cm4gQT9BLmNvbmNhdChlKS5tYXAoZnVuY3Rpb24ocixpKXtyZXR1cm4gcj1vdChyKSwhdCYmaT8iWyIrcisiXSI6cn0pLmpvaW4odD8iLiI6IiIpOmV9ZnVuY3Rpb24gaXIoQSl7cmV0dXJuIG4uaXNBcnJheShBKSYmIUEuc29tZShhZSl9dmFyIG9yPW4udG9GbGF0T2JqZWN0KG4se30sbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoZSl9KTtmdW5jdGlvbiBucihBLGUsdCl7aWYoIW4uaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ZT1lfHxuZXcoSEF8fEZvcm1EYXRhKSx0PW4udG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihmLGwpe3JldHVybiFuLmlzVW5kZWZpbmVkKGxbZl0pfSk7bGV0IEk9dC5tZXRhVG9rZW5zLHI9dC52aXNpdG9yfHxvLGk9dC5kb3RzLGc9dC5pbmRleGVzLEU9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmbi5pc1NwZWNDb21wbGlhbnRGb3JtKGUpO2lmKCFuLmlzRnVuY3Rpb24ocikpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBDKFEpe2lmKFE9PT1udWxsKXJldHVybiIiO2lmKG4uaXNEYXRlKFEpKXJldHVybiBRLnRvSVNPU3RyaW5nKCk7aWYobi5pc0Jvb2xlYW4oUSkpcmV0dXJuIFEudG9TdHJpbmcoKTtpZighRSYmbi5pc0Jsb2IoUSkpdGhyb3cgbmV3IHUoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIG4uaXNBcnJheUJ1ZmZlcihRKXx8bi5pc1R5cGVkQXJyYXkoUSk/RSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW1FdKTpCdWZmZXIuZnJvbShRKTpRfWZ1bmN0aW9uIG8oUSxmLGwpe2xldCBwPVE7aWYoUSYmIWwmJnR5cGVvZiBRPT0ib2JqZWN0Iil7aWYobi5lbmRzV2l0aChmLCJ7fSIpKWY9ST9mOmYuc2xpY2UoMCwtMiksUT1KU09OLnN0cmluZ2lmeShRKTtlbHNlIGlmKG4uaXNBcnJheShRKSYmaXIoUSl8fChuLmlzRmlsZUxpc3QoUSl8fG4uZW5kc1dpdGgoZiwiW10iKSkmJihwPW4udG9BcnJheShRKSkpcmV0dXJuIGY9b3QoZikscC5mb3JFYWNoKGZ1bmN0aW9uKEQsUil7IShuLmlzVW5kZWZpbmVkKEQpfHxEPT09bnVsbCkmJmUuYXBwZW5kKGc9PT0hMD9pdChbZl0sUixpKTpnPT09bnVsbD9mOmYrIltdIixDKEQpKX0pLCExfXJldHVybiBhZShRKT8hMDooZS5hcHBlbmQoaXQobCxmLGkpLEMoUSkpLCExKX1sZXQgYT1bXSxjPU9iamVjdC5hc3NpZ24ob3Ise2RlZmF1bHRWaXNpdG9yOm8sY29udmVydFZhbHVlOkMsaXNWaXNpdGFibGU6YWV9KTtmdW5jdGlvbiBCKFEsZil7aWYoIW4uaXNVbmRlZmluZWQoUSkpe2lmKGEuaW5kZXhPZihRKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitmLmpvaW4oIi4iKSk7YS5wdXNoKFEpLG4uZm9yRWFjaChRLGZ1bmN0aW9uKHAsRil7KCEobi5pc1VuZGVmaW5lZChwKXx8cD09PW51bGwpJiZyLmNhbGwoZSxwLG4uaXNTdHJpbmcoRik/Ri50cmltKCk6RixmLGMpKT09PSEwJiZCKHAsZj9mLmNvbmNhdChGKTpbRl0pfSksYS5wb3AoKX19aWYoIW4uaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBCKEEpLGV9dmFyIGo9bnI7ZnVuY3Rpb24gbnQoQSl7bGV0IGU9eyIhIjoiJTIxIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwifiI6IiU3RSIsIiUyMCI6IisiLCIlMDAiOiJcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvWyEnKCl+XXwlMjB8JTAwL2csZnVuY3Rpb24oSSl7cmV0dXJuIGVbSV19KX1mdW5jdGlvbiBhdChBLGUpe3RoaXMuX3BhaXJzPVtdLEEmJmooQSx0aGlzLGUpfXZhciBzdD1hdC5wcm90b3R5cGU7c3QuYXBwZW5kPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcGFpcnMucHVzaChbZSx0XSl9O3N0LnRvU3RyaW5nPWZ1bmN0aW9uKGUpe2xldCB0PWU/ZnVuY3Rpb24oSSl7cmV0dXJuIGUuY2FsbCh0aGlzLEksbnQpfTpudDtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0KHJbMF0pKyI9Iit0KHJbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgcUE9YXQ7ZnVuY3Rpb24gYXIoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIil9ZnVuY3Rpb24gbEEoQSxlLHQpe2lmKCFlKXJldHVybiBBO2xldCBJPXQmJnQuZW5jb2RlfHxhcjtuLmlzRnVuY3Rpb24odCkmJih0PXtzZXJpYWxpemU6dH0pO2xldCByPXQmJnQuc2VyaWFsaXplLGk7aWYocj9pPXIoZSx0KTppPW4uaXNVUkxTZWFyY2hQYXJhbXMoZSk/ZS50b1N0cmluZygpOm5ldyBxQShlLHQpLnRvU3RyaW5nKEkpLGkpe2xldCBnPUEuaW5kZXhPZigiIyIpO2chPT0tMSYmKEE9QS5zbGljZSgwLGcpKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStpfXJldHVybiBBfXZhciBzZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKGUsdCxJKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOkk/SS5zeW5jaHJvbm91czohMSxydW5XaGVuOkk/SS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goZSl7bi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oSSl7SSE9PW51bGwmJmUoSSl9KX19LENlPXNlO3ZhciBLQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIEN0PXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpxQTt2YXIgQnQ9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciBRdD10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBFdD17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczpDdCxGb3JtRGF0YTpCdCxCbG9iOlF0fSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIEVlPXt9O2dJKEVlLHtoYXNCcm93c2VyRW52OigpPT5RZSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PnNyLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+Q3IsbmF2aWdhdG9yOigpPT5CZSxvcmlnaW46KCk9PkJyfSk7dmFyIFFlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEJlPXR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3J8fHZvaWQgMCxzcj1RZSYmKCFCZXx8WyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihCZS5wcm9kdWN0KTwwKSxDcj10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIsQnI9UWUmJndpbmRvdy5sb2NhdGlvbi5ocmVmfHwiaHR0cDovL2xvY2FsaG9zdCI7dmFyIGg9ey4uLkVlLC4uLkV0fTtmdW5jdGlvbiBsZShBLGUpe3JldHVybiBqKEEsbmV3IGguY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMse3Zpc2l0b3I6ZnVuY3Rpb24odCxJLHIsaSl7cmV0dXJuIGguaXNOb2RlJiZuLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChJLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6aS5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LC4uLmV9KX1mdW5jdGlvbiBRcihBKXtyZXR1cm4gbi5tYXRjaEFsbCgvXHcrfFxbKFx3KildL2csQSkubWFwKGU9PmVbMF09PT0iW10iPyIiOmVbMV18fGVbMF0pfWZ1bmN0aW9uIEVyKEEpe2xldCBlPXt9LHQ9T2JqZWN0LmtleXMoQSksSSxyPXQubGVuZ3RoLGk7Zm9yKEk9MDtJPHI7SSsrKWk9dFtJXSxlW2ldPUFbaV07cmV0dXJuIGV9ZnVuY3Rpb24gbHIoQSl7ZnVuY3Rpb24gZSh0LEkscixpKXtsZXQgZz10W2krK107aWYoZz09PSJfX3Byb3RvX18iKXJldHVybiEwO2xldCBzPU51bWJlci5pc0Zpbml0ZSgrZyksRT1pPj10Lmxlbmd0aDtyZXR1cm4gZz0hZyYmbi5pc0FycmF5KHIpP3IubGVuZ3RoOmcsRT8obi5oYXNPd25Qcm9wKHIsZyk/cltnXT1bcltnXSxJXTpyW2ddPUksIXMpOigoIXJbZ118fCFuLmlzT2JqZWN0KHJbZ10pKSYmKHJbZ109W10pLGUodCxJLHJbZ10saSkmJm4uaXNBcnJheShyW2ddKSYmKHJbZ109RXIocltnXSkpLCFzKX1pZihuLmlzRm9ybURhdGEoQSkmJm4uaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gbi5mb3JFYWNoRW50cnkoQSwoSSxyKT0+e2UoUXIoSSkscix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgT0E9bHI7ZnVuY3Rpb24gY3IoQSxlLHQpe2lmKG4uaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxuLnRyaW0oQSl9Y2F0Y2goSSl7aWYoSS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBJfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIGNlPXt0cmFuc2l0aW9uYWw6S0EsYWRhcHRlcjpbInhociIsImh0dHAiLCJmZXRjaCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7bGV0IEk9dC5nZXRDb250ZW50VHlwZSgpfHwiIixyPUkuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLGk9bi5pc09iamVjdChlKTtpZihpJiZuLmlzSFRNTEZvcm0oZSkmJihlPW5ldyBGb3JtRGF0YShlKSksbi5pc0Zvcm1EYXRhKGUpKXJldHVybiByP0pTT04uc3RyaW5naWZ5KE9BKGUpKTplO2lmKG4uaXNBcnJheUJ1ZmZlcihlKXx8bi5pc0J1ZmZlcihlKXx8bi5pc1N0cmVhbShlKXx8bi5pc0ZpbGUoZSl8fG4uaXNCbG9iKGUpfHxuLmlzUmVhZGFibGVTdHJlYW0oZSkpcmV0dXJuIGU7aWYobi5pc0FycmF5QnVmZmVyVmlldyhlKSlyZXR1cm4gZS5idWZmZXI7aWYobi5pc1VSTFNlYXJjaFBhcmFtcyhlKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxlLnRvU3RyaW5nKCk7bGV0IHM7aWYoaSl7aWYoSS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gbGUoZSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChzPW4uaXNGaWxlTGlzdChlKSl8fEkuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgRT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIGoocz97ImZpbGVzW10iOmV9OmUsRSYmbmV3IEUsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiBpfHxyPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSksY3IoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fGNlLnRyYW5zaXRpb25hbCxJPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcscj10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihuLmlzUmVzcG9uc2UoZSl8fG4uaXNSZWFkYWJsZVN0cmVhbShlKSlyZXR1cm4gZTtpZihlJiZuLmlzU3RyaW5nKGUpJiYoSSYmIXRoaXMucmVzcG9uc2VUeXBlfHxyKSl7bGV0IGc9ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmcjt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSx0aGlzLnBhcnNlUmV2aXZlcil9Y2F0Y2gocyl7aWYoZyl0aHJvdyBzLm5hbWU9PT0iU3ludGF4RXJyb3IiP3UuZnJvbShzLHUuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6c319cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOmguY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOmguY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O24uZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57Y2UuaGVhZGVyc1tBXT17fX0pO3ZhciByQT1jZTt2YXIgZnI9bi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxsdD1BPT57bGV0IGU9e30sdCxJLHI7cmV0dXJuIEEmJkEuc3BsaXQoYApgKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe3I9Zy5pbmRleE9mKCI6IiksdD1nLnN1YnN0cmluZygwLHIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLEk9Zy5zdWJzdHJpbmcocisxKS50cmltKCksISghdHx8ZVt0XSYmZnJbdF0pJiYodD09PSJzZXQtY29va2llIj9lW3RdP2VbdF0ucHVzaChJKTplW3RdPVtJXTplW3RdPWVbdF0/ZVt0XSsiLCAiK0k6SSl9KSxlfTt2YXIgY3Q9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBjQShBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFRBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTpuLmlzQXJyYXkoQSk/QS5tYXAoVEEpOlN0cmluZyhBKX1mdW5jdGlvbiB1cihBKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9LyhbXlxzLDs9XSspXHMqKD86PVxzKihbXiw7XSspKT8vZyxJO2Zvcig7ST10LmV4ZWMoQSk7KWVbSVsxXV09SVsyXTtyZXR1cm4gZX12YXIgZHI9QT0+L15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gZmUoQSxlLHQsSSxyKXtpZihuLmlzRnVuY3Rpb24oSSkpcmV0dXJuIEkuY2FsbCh0aGlzLGUsdCk7aWYociYmKGU9dCksISFuLmlzU3RyaW5nKGUpKXtpZihuLmlzU3RyaW5nKEkpKXJldHVybiBlLmluZGV4T2YoSSkhPT0tMTtpZihuLmlzUmVnRXhwKEkpKXJldHVybiBJLnRlc3QoZSl9fWZ1bmN0aW9uIHByKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XGRdKShcdyopL2csKGUsdCxJKT0+dC50b1VwcGVyQ2FzZSgpK0kpfWZ1bmN0aW9uIGhyKEEsZSl7bGV0IHQ9bi50b0NhbWVsQ2FzZSgiICIrZSk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKEk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxJK3Qse3ZhbHVlOmZ1bmN0aW9uKHIsaSxnKXtyZXR1cm4gdGhpc1tJXS5jYWxsKHRoaXMsZSxyLGksZyl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9dmFyIGdBPWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQsSSl7bGV0IHI9dGhpcztmdW5jdGlvbiBpKHMsRSxDKXtsZXQgbz1jQShFKTtpZighbyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9bi5maW5kS2V5KHIsbyk7KCFhfHxyW2FdPT09dm9pZCAwfHxDPT09ITB8fEM9PT12b2lkIDAmJnJbYV0hPT0hMSkmJihyW2F8fEVdPVRBKHMpKX1sZXQgZz0ocyxFKT0+bi5mb3JFYWNoKHMsKEMsbyk9PmkoQyxvLEUpKTtpZihuLmlzUGxhaW5PYmplY3QoZSl8fGUgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKWcoZSx0KTtlbHNlIGlmKG4uaXNTdHJpbmcoZSkmJihlPWUudHJpbSgpKSYmIWRyKGUpKWcobHQoZSksdCk7ZWxzZSBpZihuLmlzT2JqZWN0KGUpJiZuLmlzSXRlcmFibGUoZSkpe2xldCBzPXt9LEUsQztmb3IobGV0IG8gb2YgZSl7aWYoIW4uaXNBcnJheShvKSl0aHJvdyBUeXBlRXJyb3IoIk9iamVjdCBpdGVyYXRvciBtdXN0IHJldHVybiBhIGtleS12YWx1ZSBwYWlyIik7c1tDPW9bMF1dPShFPXNbQ10pP24uaXNBcnJheShFKT9bLi4uRSxvWzFdXTpbRSxvWzFdXTpvWzFdfWcocyx0KX1lbHNlIGUhPW51bGwmJmkodCxlLEkpO3JldHVybiB0aGlzfWdldChlLHQpe2lmKGU9Y0EoZSksZSl7bGV0IEk9bi5maW5kS2V5KHRoaXMsZSk7aWYoSSl7bGV0IHI9dGhpc1tJXTtpZighdClyZXR1cm4gcjtpZih0PT09ITApcmV0dXJuIHVyKHIpO2lmKG4uaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMscixJKTtpZihuLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMocik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9Y0EoZSksZSl7bGV0IEk9bi5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEoSSYmdGhpc1tJXSE9PXZvaWQgMCYmKCF0fHxmZSh0aGlzLHRoaXNbSV0sSSx0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCBJPXRoaXMscj0hMTtmdW5jdGlvbiBpKGcpe2lmKGc9Y0EoZyksZyl7bGV0IHM9bi5maW5kS2V5KEksZyk7cyYmKCF0fHxmZShJLElbc10scyx0KSkmJihkZWxldGUgSVtzXSxyPSEwKX19cmV0dXJuIG4uaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxyfWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLEk9dC5sZW5ndGgscj0hMTtmb3IoO0ktLTspe2xldCBpPXRbSV07KCFlfHxmZSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxyPSEwKX1yZXR1cm4gcn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxJPXt9O3JldHVybiBuLmZvckVhY2godGhpcywocixpKT0+e2xldCBnPW4uZmluZEtleShJLGkpO2lmKGcpe3RbZ109VEEociksZGVsZXRlIHRbaV07cmV0dXJufWxldCBzPWU/cHIoaSk6U3RyaW5nKGkpLnRyaW0oKTtzIT09aSYmZGVsZXRlIHRbaV0sdFtzXT1UQShyKSxJW3NdPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIG4uZm9yRWFjaCh0aGlzLChJLHIpPT57SSE9bnVsbCYmSSE9PSExJiYodFtyXT1lJiZuLmlzQXJyYXkoSSk/SS5qb2luKCIsICIpOkkpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0U2V0Q29va2llKCl7cmV0dXJuIHRoaXMuZ2V0KCJzZXQtY29va2llIil8fFtdfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzP2U6bmV3IHRoaXMoZSl9c3RhdGljIGNvbmNhdChlLC4uLnQpe2xldCBJPW5ldyB0aGlzKGUpO3JldHVybiB0LmZvckVhY2gocj0+SS5zZXQocikpLEl9c3RhdGljIGFjY2Vzc29yKGUpe2xldCBJPSh0aGlzW2N0XT10aGlzW2N0XT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLHI9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gaShnKXtsZXQgcz1jQShnKTtJW3NdfHwoaHIocixnKSxJW3NdPSEwKX1yZXR1cm4gbi5pc0FycmF5KGUpP2UuZm9yRWFjaChpKTppKGUpLHRoaXN9fTtnQS5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7bi5yZWR1Y2VEZXNjcmlwdG9ycyhnQS5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KEkpe3RoaXNbdF09SX19fSk7bi5mcmVlemVNZXRob2RzKGdBKTt2YXIgbT1nQTtmdW5jdGlvbiBmQShBLGUpe2xldCB0PXRoaXN8fHJBLEk9ZXx8dCxyPW0uZnJvbShJLmhlYWRlcnMpLGk9SS5kYXRhO3JldHVybiBuLmZvckVhY2goQSxmdW5jdGlvbihzKXtpPXMuY2FsbCh0LGksci5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxyLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gdUEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBmdChBLGUsdCl7dS5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIix1LkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9bi5pbmhlcml0cyhmdCx1LHtfX0NBTkNFTF9fOiEwfSk7dmFyIHE9ZnQ7ZnVuY3Rpb24gZEEoQSxlLHQpe2xldCBJPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IUl8fEkodC5zdGF0dXMpP0EodCk6ZShuZXcgdSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFt1LkVSUl9CQURfUkVRVUVTVCx1LkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfWZ1bmN0aW9uIHVlKEEpe2xldCBlPS9eKFstK1x3XXsxLDI1fSkoOj9cL1wvfDopLy5leGVjKEEpO3JldHVybiBlJiZlWzFdfHwiIn1mdW5jdGlvbiBEcihBLGUpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLEk9bmV3IEFycmF5KEEpLHI9MCxpPTAsZztyZXR1cm4gZT1lIT09dm9pZCAwP2U6MWUzLGZ1bmN0aW9uKEUpe2xldCBDPURhdGUubm93KCksbz1JW2ldO2d8fChnPUMpLHRbcl09RSxJW3JdPUM7bGV0IGE9aSxjPTA7Zm9yKDthIT09cjspYys9dFthKytdLGE9YSVBO2lmKHI9KHIrMSklQSxyPT09aSYmKGk9KGkrMSklQSksQy1nPGUpcmV0dXJuO2xldCBCPW8mJkMtbztyZXR1cm4gQj9NYXRoLnJvdW5kKGMqMWUzL0IpOnZvaWQgMH19dmFyIHV0PURyO2Z1bmN0aW9uIHlyKEEsZSl7bGV0IHQ9MCxJPTFlMy9lLHIsaSxnPShDLG89RGF0ZS5ub3coKSk9Pnt0PW8scj1udWxsLGkmJihjbGVhclRpbWVvdXQoaSksaT1udWxsKSxBKC4uLkMpfTtyZXR1cm5bKC4uLkMpPT57bGV0IG89RGF0ZS5ub3coKSxhPW8tdDthPj1JP2coQyxvKToocj1DLGl8fChpPXNldFRpbWVvdXQoKCk9PntpPW51bGwsZyhyKX0sSS1hKSkpfSwoKT0+ciYmZyhyKV19dmFyIGR0PXlyO3ZhciBpQT0oQSxlLHQ9Myk9PntsZXQgST0wLHI9dXQoNTAsMjUwKTtyZXR1cm4gZHQoaT0+e2xldCBnPWkubG9hZGVkLHM9aS5sZW5ndGhDb21wdXRhYmxlP2kudG90YWw6dm9pZCAwLEU9Zy1JLEM9cihFKSxvPWc8PXM7ST1nO2xldCBhPXtsb2FkZWQ6Zyx0b3RhbDpzLHByb2dyZXNzOnM/Zy9zOnZvaWQgMCxieXRlczpFLHJhdGU6Q3x8dm9pZCAwLGVzdGltYXRlZDpDJiZzJiZvPyhzLWcpL0M6dm9pZCAwLGV2ZW50OmksbGVuZ3RoQ29tcHV0YWJsZTpzIT1udWxsLFtlPyJkb3dubG9hZCI6InVwbG9hZCJdOiEwfTtBKGEpfSx0KX0sZGU9KEEsZSk9PntsZXQgdD1BIT1udWxsO3JldHVybltJPT5lWzBdKHtsZW5ndGhDb21wdXRhYmxlOnQsdG90YWw6QSxsb2FkZWQ6SX0pLGVbMV1dfSxwZT1BPT4oLi4uZSk9Pm4uYXNhcCgoKT0+QSguLi5lKSk7dmFyIHB0PWguaGFzU3RhbmRhcmRCcm93c2VyRW52PygoQSxlKT0+dD0+KHQ9bmV3IFVSTCh0LGgub3JpZ2luKSxBLnByb3RvY29sPT09dC5wcm90b2NvbCYmQS5ob3N0PT09dC5ob3N0JiYoZXx8QS5wb3J0PT09dC5wb3J0KSkpKG5ldyBVUkwoaC5vcmlnaW4pLGgubmF2aWdhdG9yJiYvKG1zaWV8dHJpZGVudCkvaS50ZXN0KGgubmF2aWdhdG9yLnVzZXJBZ2VudCkpOigpPT4hMDt2YXIgaHQ9aC5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LEkscixpKXtsZXQgZz1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTtuLmlzTnVtYmVyKHQpJiZnLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxuLmlzU3RyaW5nKEkpJiZnLnB1c2goInBhdGg9IitJKSxuLmlzU3RyaW5nKHIpJiZnLnB1c2goImRvbWFpbj0iK3IpLGk9PT0hMCYmZy5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9Zy5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gaGUoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiBEZShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8/XC8kLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gcEEoQSxlLHQpe2xldCBJPSFoZShlKTtyZXR1cm4gQSYmKEl8fHQ9PSExKT9EZShBLGUpOmV9dmFyIER0PUE9PkEgaW5zdGFuY2VvZiBtP3suLi5BfTpBO2Z1bmN0aW9uIEooQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIEkoQyxvLGEsYyl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdChDKSYmbi5pc1BsYWluT2JqZWN0KG8pP24ubWVyZ2UuY2FsbCh7Y2FzZWxlc3M6Y30sQyxvKTpuLmlzUGxhaW5PYmplY3Qobyk/bi5tZXJnZSh7fSxvKTpuLmlzQXJyYXkobyk/by5zbGljZSgpOm99ZnVuY3Rpb24gcihDLG8sYSxjKXtpZihuLmlzVW5kZWZpbmVkKG8pKXtpZighbi5pc1VuZGVmaW5lZChDKSlyZXR1cm4gSSh2b2lkIDAsQyxhLGMpfWVsc2UgcmV0dXJuIEkoQyxvLGEsYyl9ZnVuY3Rpb24gaShDLG8pe2lmKCFuLmlzVW5kZWZpbmVkKG8pKXJldHVybiBJKHZvaWQgMCxvKX1mdW5jdGlvbiBnKEMsbyl7aWYobi5pc1VuZGVmaW5lZChvKSl7aWYoIW4uaXNVbmRlZmluZWQoQykpcmV0dXJuIEkodm9pZCAwLEMpfWVsc2UgcmV0dXJuIEkodm9pZCAwLG8pfWZ1bmN0aW9uIHMoQyxvLGEpe2lmKGEgaW4gZSlyZXR1cm4gSShDLG8pO2lmKGEgaW4gQSlyZXR1cm4gSSh2b2lkIDAsQyl9bGV0IEU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOmcsdHJhbnNmb3JtUmVxdWVzdDpnLHRyYW5zZm9ybVJlc3BvbnNlOmcscGFyYW1zU2VyaWFsaXplcjpnLHRpbWVvdXQ6Zyx0aW1lb3V0TWVzc2FnZTpnLHdpdGhDcmVkZW50aWFsczpnLHdpdGhYU1JGVG9rZW46ZyxhZGFwdGVyOmcscmVzcG9uc2VUeXBlOmcseHNyZkNvb2tpZU5hbWU6Zyx4c3JmSGVhZGVyTmFtZTpnLG9uVXBsb2FkUHJvZ3Jlc3M6ZyxvbkRvd25sb2FkUHJvZ3Jlc3M6ZyxkZWNvbXByZXNzOmcsbWF4Q29udGVudExlbmd0aDpnLG1heEJvZHlMZW5ndGg6ZyxiZWZvcmVSZWRpcmVjdDpnLHRyYW5zcG9ydDpnLGh0dHBBZ2VudDpnLGh0dHBzQWdlbnQ6ZyxjYW5jZWxUb2tlbjpnLHNvY2tldFBhdGg6ZyxyZXNwb25zZUVuY29kaW5nOmcsdmFsaWRhdGVTdGF0dXM6cyxoZWFkZXJzOihDLG8sYSk9PnIoRHQoQyksRHQobyksYSwhMCl9O3JldHVybiBuLmZvckVhY2goT2JqZWN0LmtleXMoey4uLkEsLi4uZX0pLGZ1bmN0aW9uKG8pe2xldCBhPUVbb118fHIsYz1hKEFbb10sZVtvXSxvKTtuLmlzVW5kZWZpbmVkKGMpJiZhIT09c3x8KHRbb109Yyl9KSx0fXZhciB4QT1BPT57bGV0IGU9Sih7fSxBKSx7ZGF0YTp0LHdpdGhYU1JGVG9rZW46SSx4c3JmSGVhZGVyTmFtZTpyLHhzcmZDb29raWVOYW1lOmksaGVhZGVyczpnLGF1dGg6c309ZTtpZihlLmhlYWRlcnM9Zz1tLmZyb20oZyksZS51cmw9bEEocEEoZS5iYXNlVVJMLGUudXJsLGUuYWxsb3dBYnNvbHV0ZVVybHMpLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplcikscyYmZy5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoKHMudXNlcm5hbWV8fCIiKSsiOiIrKHMucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMucGFzc3dvcmQpKToiIikpKSxuLmlzRm9ybURhdGEodCkpe2lmKGguaGFzU3RhbmRhcmRCcm93c2VyRW52fHxoLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilnLnNldENvbnRlbnRUeXBlKHZvaWQgMCk7ZWxzZSBpZihuLmlzRnVuY3Rpb24odC5nZXRIZWFkZXJzKSl7bGV0IEU9dC5nZXRIZWFkZXJzKCksQz1bImNvbnRlbnQtdHlwZSIsImNvbnRlbnQtbGVuZ3RoIl07T2JqZWN0LmVudHJpZXMoRSkuZm9yRWFjaCgoW28sYV0pPT57Qy5pbmNsdWRlcyhvLnRvTG93ZXJDYXNlKCkpJiZnLnNldChvLGEpfSl9fWlmKGguaGFzU3RhbmRhcmRCcm93c2VyRW52JiYoSSYmbi5pc0Z1bmN0aW9uKEkpJiYoST1JKGUpKSxJfHxJIT09ITEmJnB0KGUudXJsKSkpe2xldCBFPXImJmkmJmh0LnJlYWQoaSk7RSYmZy5zZXQocixFKX1yZXR1cm4gZX07dmFyIHdyPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIseXQ9d3ImJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LEkpe2xldCByPXhBKEEpLGk9ci5kYXRhLGc9bS5mcm9tKHIuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpzLG9uVXBsb2FkUHJvZ3Jlc3M6RSxvbkRvd25sb2FkUHJvZ3Jlc3M6Q309cixvLGEsYyxCLFE7ZnVuY3Rpb24gZigpe0ImJkIoKSxRJiZRKCksci5jYW5jZWxUb2tlbiYmci5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvKSxyLnNpZ25hbCYmci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG8pfWxldCBsPW5ldyBYTUxIdHRwUmVxdWVzdDtsLm9wZW4oci5tZXRob2QudG9VcHBlckNhc2UoKSxyLnVybCwhMCksbC50aW1lb3V0PXIudGltZW91dDtmdW5jdGlvbiBwKCl7aWYoIWwpcmV0dXJuO2xldCBEPW0uZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGwmJmwuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLEw9e2RhdGE6IXN8fHM9PT0idGV4dCJ8fHM9PT0ianNvbiI/bC5yZXNwb25zZVRleHQ6bC5yZXNwb25zZSxzdGF0dXM6bC5zdGF0dXMsc3RhdHVzVGV4dDpsLnN0YXR1c1RleHQsaGVhZGVyczpELGNvbmZpZzpBLHJlcXVlc3Q6bH07ZEEoZnVuY3Rpb24oTil7dChOKSxmKCl9LGZ1bmN0aW9uKE4pe0koTiksZigpfSxMKSxsPW51bGx9Im9ubG9hZGVuZCJpbiBsP2wub25sb2FkZW5kPXA6bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshbHx8bC5yZWFkeVN0YXRlIT09NHx8bC5zdGF0dXM9PT0wJiYhKGwucmVzcG9uc2VVUkwmJmwucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KHApfSxsLm9uYWJvcnQ9ZnVuY3Rpb24oKXtsJiYoSShuZXcgdSgiUmVxdWVzdCBhYm9ydGVkIix1LkVDT05OQUJPUlRFRCxBLGwpKSxsPW51bGwpfSxsLm9uZXJyb3I9ZnVuY3Rpb24oUil7bGV0IEw9UiYmUi5tZXNzYWdlP1IubWVzc2FnZToiTmV0d29yayBFcnJvciIsWj1uZXcgdShMLHUuRVJSX05FVFdPUkssQSxsKTtaLmV2ZW50PVJ8fG51bGwsSShaKSxsPW51bGx9LGwub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IFI9ci50aW1lb3V0PyJ0aW1lb3V0IG9mICIrci50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLEw9ci50cmFuc2l0aW9uYWx8fEtBO3IudGltZW91dEVycm9yTWVzc2FnZSYmKFI9ci50aW1lb3V0RXJyb3JNZXNzYWdlKSxJKG5ldyB1KFIsTC5jbGFyaWZ5VGltZW91dEVycm9yP3UuRVRJTUVET1VUOnUuRUNPTk5BQk9SVEVELEEsbCkpLGw9bnVsbH0saT09PXZvaWQgMCYmZy5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBsJiZuLmZvckVhY2goZy50b0pTT04oKSxmdW5jdGlvbihSLEwpe2wuc2V0UmVxdWVzdEhlYWRlcihMLFIpfSksbi5pc1VuZGVmaW5lZChyLndpdGhDcmVkZW50aWFscyl8fChsLndpdGhDcmVkZW50aWFscz0hIXIud2l0aENyZWRlbnRpYWxzKSxzJiZzIT09Impzb24iJiYobC5yZXNwb25zZVR5cGU9ci5yZXNwb25zZVR5cGUpLEMmJihbYyxRXT1pQShDLCEwKSxsLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixjKSksRSYmbC51cGxvYWQmJihbYSxCXT1pQShFKSxsLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYSksbC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVuZCIsQikpLChyLmNhbmNlbFRva2VufHxyLnNpZ25hbCkmJihvPUQ9PntsJiYoSSghRHx8RC50eXBlP25ldyBxKG51bGwsQSxsKTpEKSxsLmFib3J0KCksbD1udWxsKX0sci5jYW5jZWxUb2tlbiYmci5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobyksci5zaWduYWwmJihyLnNpZ25hbC5hYm9ydGVkP28oKTpyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbykpKTtsZXQgRj11ZShyLnVybCk7aWYoRiYmaC5wcm90b2NvbHMuaW5kZXhPZihGKT09PS0xKXtJKG5ldyB1KCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0YrIjoiLHUuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59bC5zZW5kKGl8fG51bGwpfSl9O3ZhciBtcj0oQSxlKT0+e2xldHtsZW5ndGg6dH09QT1BP0EuZmlsdGVyKEJvb2xlYW4pOltdO2lmKGV8fHQpe2xldCBJPW5ldyBBYm9ydENvbnRyb2xsZXIscixpPWZ1bmN0aW9uKEMpe2lmKCFyKXtyPSEwLHMoKTtsZXQgbz1DIGluc3RhbmNlb2YgRXJyb3I/Qzp0aGlzLnJlYXNvbjtJLmFib3J0KG8gaW5zdGFuY2VvZiB1P286bmV3IHEobyBpbnN0YW5jZW9mIEVycm9yP28ubWVzc2FnZTpvKSl9fSxnPWUmJnNldFRpbWVvdXQoKCk9PntnPW51bGwsaShuZXcgdShgdGltZW91dCAke2V9IG9mIG1zIGV4Y2VlZGVkYCx1LkVUSU1FRE9VVCkpfSxlKSxzPSgpPT57QSYmKGcmJmNsZWFyVGltZW91dChnKSxnPW51bGwsQS5mb3JFYWNoKEM9PntDLnVuc3Vic2NyaWJlP0MudW5zdWJzY3JpYmUoaSk6Qy5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsaSl9KSxBPW51bGwpfTtBLmZvckVhY2goQz0+Qy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsaSkpO2xldHtzaWduYWw6RX09STtyZXR1cm4gRS51bnN1YnNjcmliZT0oKT0+bi5hc2FwKHMpLEV9fSx3dD1tcjt2YXIgU3I9ZnVuY3Rpb24qKEEsZSl7bGV0IHQ9QS5ieXRlTGVuZ3RoO2lmKCFlfHx0PGUpe3lpZWxkIEE7cmV0dXJufWxldCBJPTAscjtmb3IoO0k8dDspcj1JK2UseWllbGQgQS5zbGljZShJLHIpLEk9cn0sRnI9YXN5bmMgZnVuY3Rpb24qKEEsZSl7Zm9yIGF3YWl0KGxldCB0IG9mIFJyKEEpKXlpZWxkKlNyKHQsZSl9LFJyPWFzeW5jIGZ1bmN0aW9uKihBKXtpZihBW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSl7eWllbGQqQTtyZXR1cm59bGV0IGU9QS5nZXRSZWFkZXIoKTt0cnl7Zm9yKDs7KXtsZXR7ZG9uZTp0LHZhbHVlOkl9PWF3YWl0IGUucmVhZCgpO2lmKHQpYnJlYWs7eWllbGQgSX19ZmluYWxseXthd2FpdCBlLmNhbmNlbCgpfX0seWU9KEEsZSx0LEkpPT57bGV0IHI9RnIoQSxlKSxpPTAsZyxzPUU9PntnfHwoZz0hMCxJJiZJKEUpKX07cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7YXN5bmMgcHVsbChFKXt0cnl7bGV0e2RvbmU6Qyx2YWx1ZTpvfT1hd2FpdCByLm5leHQoKTtpZihDKXtzKCksRS5jbG9zZSgpO3JldHVybn1sZXQgYT1vLmJ5dGVMZW5ndGg7aWYodCl7bGV0IGM9aSs9YTt0KGMpfUUuZW5xdWV1ZShuZXcgVWludDhBcnJheShvKSl9Y2F0Y2goQyl7dGhyb3cgcyhDKSxDfX0sY2FuY2VsKEUpe3JldHVybiBzKEUpLHIucmV0dXJuKCl9fSx7aGlnaFdhdGVyTWFyazoyfSl9O3ZhciBtdD02NCoxMDI0LHtpc0Z1bmN0aW9uOlBBfT1uLGt0PSgoe2ZldGNoOkEsUmVxdWVzdDplLFJlc3BvbnNlOnR9KT0+KHtmZXRjaDpBLFJlcXVlc3Q6ZSxSZXNwb25zZTp0fSkpKG4uZ2xvYmFsKSx7UmVhZGFibGVTdHJlYW06U3QsVGV4dEVuY29kZXI6RnR9PW4uZ2xvYmFsLFJ0PShBLC4uLmUpPT57dHJ5e3JldHVybiEhQSguLi5lKX1jYXRjaHtyZXR1cm4hMX19LGtyPUE9PntsZXR7ZmV0Y2g6ZSxSZXF1ZXN0OnQsUmVzcG9uc2U6SX09T2JqZWN0LmFzc2lnbih7fSxrdCxBKSxyPVBBKGUpLGk9UEEodCksZz1QQShJKTtpZighcilyZXR1cm4hMTtsZXQgcz1yJiZQQShTdCksRT1yJiYodHlwZW9mIEZ0PT0iZnVuY3Rpb24iPyhRPT5mPT5RLmVuY29kZShmKSkobmV3IEZ0KTphc3luYyBRPT5uZXcgVWludDhBcnJheShhd2FpdCBuZXcgdChRKS5hcnJheUJ1ZmZlcigpKSksQz1pJiZzJiZSdCgoKT0+e2xldCBRPSExLGY9bmV3IHQoaC5vcmlnaW4se2JvZHk6bmV3IFN0LG1ldGhvZDoiUE9TVCIsZ2V0IGR1cGxleCgpe3JldHVybiBRPSEwLCJoYWxmIn19KS5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIik7cmV0dXJuIFEmJiFmfSksbz1nJiZzJiZSdCgoKT0+bi5pc1JlYWRhYmxlU3RyZWFtKG5ldyBJKCIiKS5ib2R5KSksYT17c3RyZWFtOm8mJihRPT5RLmJvZHkpfTtyJiZbInRleHQiLCJhcnJheUJ1ZmZlciIsImJsb2IiLCJmb3JtRGF0YSIsInN0cmVhbSJdLmZvckVhY2goUT0+eyFhW1FdJiYoYVtRXT0oZixsKT0+e2xldCBwPWYmJmZbUV07aWYocClyZXR1cm4gcC5jYWxsKGYpO3Rocm93IG5ldyB1KGBSZXNwb25zZSB0eXBlICcke1F9JyBpcyBub3Qgc3VwcG9ydGVkYCx1LkVSUl9OT1RfU1VQUE9SVCxsKX0pfSk7bGV0IGM9YXN5bmMgUT0+e2lmKFE9PW51bGwpcmV0dXJuIDA7aWYobi5pc0Jsb2IoUSkpcmV0dXJuIFEuc2l6ZTtpZihuLmlzU3BlY0NvbXBsaWFudEZvcm0oUSkpcmV0dXJuKGF3YWl0IG5ldyB0KGgub3JpZ2luLHttZXRob2Q6IlBPU1QiLGJvZHk6UX0pLmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7aWYobi5pc0FycmF5QnVmZmVyVmlldyhRKXx8bi5pc0FycmF5QnVmZmVyKFEpKXJldHVybiBRLmJ5dGVMZW5ndGg7aWYobi5pc1VSTFNlYXJjaFBhcmFtcyhRKSYmKFE9USsiIiksbi5pc1N0cmluZyhRKSlyZXR1cm4oYXdhaXQgRShRKSkuYnl0ZUxlbmd0aH0sQj1hc3luYyhRLGYpPT57bGV0IGw9bi50b0Zpbml0ZU51bWJlcihRLmdldENvbnRlbnRMZW5ndGgoKSk7cmV0dXJuIGw/P2MoZil9O3JldHVybiBhc3luYyBRPT57bGV0e3VybDpmLG1ldGhvZDpsLGRhdGE6cCxzaWduYWw6RixjYW5jZWxUb2tlbjpELHRpbWVvdXQ6UixvbkRvd25sb2FkUHJvZ3Jlc3M6TCxvblVwbG9hZFByb2dyZXNzOloscmVzcG9uc2VUeXBlOk4saGVhZGVyczokQSx3aXRoQ3JlZGVudGlhbHM6U0E9InNhbWUtb3JpZ2luIixmZXRjaE9wdGlvbnM6WWV9PXhBKFEpO049Tj8oTisiIikudG9Mb3dlckNhc2UoKToidGV4dCI7bGV0IEZBPXd0KFtGLEQmJkQudG9BYm9ydFNpZ25hbCgpXSxSKSxzQT1udWxsLFY9RkEmJkZBLnVuc3Vic2NyaWJlJiYoKCk9PntGQS51bnN1YnNjcmliZSgpfSksTWU7dHJ5e2lmKFomJkMmJmwhPT0iZ2V0IiYmbCE9PSJoZWFkIiYmKE1lPWF3YWl0IEIoJEEscCkpIT09MCl7bGV0IFc9bmV3IHQoZix7bWV0aG9kOiJQT1NUIixib2R5OnAsZHVwbGV4OiJoYWxmIn0pLCQ7aWYobi5pc0Zvcm1EYXRhKHApJiYoJD1XLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSkmJiRBLnNldENvbnRlbnRUeXBlKCQpLFcuYm9keSl7bGV0W0FlLFJBXT1kZShNZSxpQShwZShaKSkpO3A9eWUoVy5ib2R5LG10LEFlLFJBKX19bi5pc1N0cmluZyhTQSl8fChTQT1TQT8iaW5jbHVkZSI6Im9taXQiKTtsZXQgTT1pJiYiY3JlZGVudGlhbHMiaW4gdC5wcm90b3R5cGUsSGU9ey4uLlllLHNpZ25hbDpGQSxtZXRob2Q6bC50b1VwcGVyQ2FzZSgpLGhlYWRlcnM6JEEubm9ybWFsaXplKCkudG9KU09OKCksYm9keTpwLGR1cGxleDoiaGFsZiIsY3JlZGVudGlhbHM6TT9TQTp2b2lkIDB9O3NBPWkmJm5ldyB0KGYsSGUpO2xldCBQPWF3YWl0KGk/ZShzQSxZZSk6ZShmLEhlKSkscWU9byYmKE49PT0ic3RyZWFtInx8Tj09PSJyZXNwb25zZSIpO2lmKG8mJihMfHxxZSYmVikpe2xldCBXPXt9O1sic3RhdHVzIiwic3RhdHVzVGV4dCIsImhlYWRlcnMiXS5mb3JFYWNoKEtlPT57V1tLZV09UFtLZV19KTtsZXQgJD1uLnRvRmluaXRlTnVtYmVyKFAuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIikpLFtBZSxSQV09TCYmZGUoJCxpQShwZShMKSwhMCkpfHxbXTtQPW5ldyBJKHllKFAuYm9keSxtdCxBZSwoKT0+e1JBJiZSQSgpLFYmJlYoKX0pLFcpfU49Tnx8InRleHQiO2xldCBJST1hd2FpdCBhW24uZmluZEtleShhLE4pfHwidGV4dCJdKFAsUSk7cmV0dXJuIXFlJiZWJiZWKCksYXdhaXQgbmV3IFByb21pc2UoKFcsJCk9PntkQShXLCQse2RhdGE6SUksaGVhZGVyczptLmZyb20oUC5oZWFkZXJzKSxzdGF0dXM6UC5zdGF0dXMsc3RhdHVzVGV4dDpQLnN0YXR1c1RleHQsY29uZmlnOlEscmVxdWVzdDpzQX0pfSl9Y2F0Y2goTSl7dGhyb3cgViYmVigpLE0mJk0ubmFtZT09PSJUeXBlRXJyb3IiJiYvTG9hZCBmYWlsZWR8ZmV0Y2gvaS50ZXN0KE0ubWVzc2FnZSk/T2JqZWN0LmFzc2lnbihuZXcgdSgiTmV0d29yayBFcnJvciIsdS5FUlJfTkVUV09SSyxRLHNBKSx7Y2F1c2U6TS5jYXVzZXx8TX0pOnUuZnJvbShNLE0mJk0uY29kZSxRLHNBKX19fSxVcj1uZXcgTWFwLHdlPUE9PntsZXQgZT1uLm1lcmdlLmNhbGwoe3NraXBVbmRlZmluZWQ6ITB9LGt0LEE/QS5lbnY6bnVsbCkse2ZldGNoOnQsUmVxdWVzdDpJLFJlc3BvbnNlOnJ9PWUsaT1bSSxyLHRdLGc9aS5sZW5ndGgscz1nLEUsQyxvPVVyO2Zvcig7cy0tOylFPWlbc10sQz1vLmdldChFKSxDPT09dm9pZCAwJiZvLnNldChFLEM9cz9uZXcgTWFwOmtyKGUpKSxvPUM7cmV0dXJuIEN9LEZvPXdlKCk7dmFyIG1lPXtodHRwOkhBLHhocjp5dCxmZXRjaDp7Z2V0OndlfX07bi5mb3JFYWNoKG1lLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIFV0PUE9PmAtICR7QX1gLEdyPUE9Pm4uaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxXQT17Z2V0QWRhcHRlcjooQSxlKT0+e0E9bi5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6dH09QSxJLHIsaT17fTtmb3IobGV0IGc9MDtnPHQ7ZysrKXtJPUFbZ107bGV0IHM7aWYocj1JLCFHcihJKSYmKHI9bWVbKHM9U3RyaW5nKEkpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgdShgVW5rbm93biBhZGFwdGVyICcke3N9J2ApO2lmKHImJihuLmlzRnVuY3Rpb24ocil8fChyPXIuZ2V0KGUpKSkpYnJlYWs7aVtzfHwiIyIrZ109cn1pZighcil7bGV0IGc9T2JqZWN0LmVudHJpZXMoaSkubWFwKChbRSxDXSk9PmBhZGFwdGVyICR7RX0gYCsoQz09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLHM9dD9nLmxlbmd0aD4xP2BzaW5jZSA6CmArZy5tYXAoVXQpLmpvaW4oYApgKToiICIrVXQoZ1swXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgdSgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK3MsIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiByfSxhZGFwdGVyczptZX07ZnVuY3Rpb24gU2UoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IHEobnVsbCxBKX1mdW5jdGlvbiBqQShBKXtyZXR1cm4gU2UoQSksQS5oZWFkZXJzPW0uZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1mQS5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksV0EuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fHJBLmFkYXB0ZXIsQSkoQSkudGhlbihmdW5jdGlvbihJKXtyZXR1cm4gU2UoQSksSS5kYXRhPWZBLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLEkpLEkuaGVhZGVycz1tLmZyb20oSS5oZWFkZXJzKSxJfSxmdW5jdGlvbihJKXtyZXR1cm4gdUEoSSl8fChTZShBKSxJJiZJLnJlc3BvbnNlJiYoSS5yZXNwb25zZS5kYXRhPWZBLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLEkucmVzcG9uc2UpLEkucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oSS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KEkpfSl9dmFyIHZBPSIxLjEyLjAiO3ZhciBaQT17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKEEsZSk9PntaQVtBXT1mdW5jdGlvbihJKXtyZXR1cm4gdHlwZW9mIEk9PT1BfHwiYSIrKGU8MT8ibiAiOiIgIikrQX19KTt2YXIgTnQ9e307WkEudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxJKXtmdW5jdGlvbiByKGksZyl7cmV0dXJuIltBeGlvcyB2Iit2QSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2krIiciK2crKEk/Ii4gIitJOiIiKX1yZXR1cm4oaSxnLHMpPT57aWYoZT09PSExKXRocm93IG5ldyB1KHIoZywiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSksdS5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHQmJiFOdFtnXSYmKE50W2ddPSEwLGNvbnNvbGUud2FybihyKGcsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksZT9lKGksZyxzKTohMH19O1pBLnNwZWxsaW5nPWZ1bmN0aW9uKGUpe3JldHVybih0LEkpPT4oY29uc29sZS53YXJuKGAke0l9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7ZX1gKSwhMCl9O2Z1bmN0aW9uIExyKEEsZSx0KXtpZih0eXBlb2YgQSE9Im9iamVjdCIpdGhyb3cgbmV3IHUoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLHUuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2xldCBJPU9iamVjdC5rZXlzKEEpLHI9SS5sZW5ndGg7Zm9yKDtyLS0gPjA7KXtsZXQgaT1JW3JdLGc9ZVtpXTtpZihnKXtsZXQgcz1BW2ldLEU9cz09PXZvaWQgMHx8ZyhzLGksQSk7aWYoRSE9PSEwKXRocm93IG5ldyB1KCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK0UsdS5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYodCE9PSEwKXRocm93IG5ldyB1KCJVbmtub3duIG9wdGlvbiAiK2ksdS5FUlJfQkFEX09QVElPTil9fXZhciBoQT17YXNzZXJ0T3B0aW9uczpMcix2YWxpZGF0b3JzOlpBfTt2YXIgSz1oQS52YWxpZGF0b3JzLG9BPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZXx8e30sdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IENlLHJlc3BvbnNlOm5ldyBDZX19YXN5bmMgcmVxdWVzdChlLHQpe3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5fcmVxdWVzdChlLHQpfWNhdGNoKEkpe2lmKEkgaW5zdGFuY2VvZiBFcnJvcil7bGV0IHI9e307RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Uocik6cj1uZXcgRXJyb3I7bGV0IGk9ci5zdGFjaz9yLnN0YWNrLnJlcGxhY2UoL14uK1xuLywiIik6IiI7dHJ5e0kuc3RhY2s/aSYmIVN0cmluZyhJLnN0YWNrKS5lbmRzV2l0aChpLnJlcGxhY2UoL14uK1xuLitcbi8sIiIpKSYmKEkuc3RhY2srPWAKYCtpKTpJLnN0YWNrPWl9Y2F0Y2h7fX10aHJvdyBJfX1fcmVxdWVzdChlLHQpe3R5cGVvZiBlPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1lKTp0PWV8fHt9LHQ9Sih0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6SSxwYXJhbXNTZXJpYWxpemVyOnIsaGVhZGVyczppfT10O0khPT12b2lkIDAmJmhBLmFzc2VydE9wdGlvbnMoSSx7c2lsZW50SlNPTlBhcnNpbmc6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpLLnRyYW5zaXRpb25hbChLLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKX0sITEpLHIhPW51bGwmJihuLmlzRnVuY3Rpb24ocik/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6cn06aEEuYXNzZXJ0T3B0aW9ucyhyLHtlbmNvZGU6Sy5mdW5jdGlvbixzZXJpYWxpemU6Sy5mdW5jdGlvbn0sITApKSx0LmFsbG93QWJzb2x1dGVVcmxzIT09dm9pZCAwfHwodGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscyE9PXZvaWQgMD90LmFsbG93QWJzb2x1dGVVcmxzPXRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHM6dC5hbGxvd0Fic29sdXRlVXJscz0hMCksaEEuYXNzZXJ0T3B0aW9ucyh0LHtiYXNlVXJsOksuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOksuc3BlbGxpbmcoIndpdGhYU1JGVG9rZW4iKX0sITApLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBnPWkmJm4ubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJm4uZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxRPT57ZGVsZXRlIGlbUV19KSx0LmhlYWRlcnM9bS5jb25jYXQoZyxpKTtsZXQgcz1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihmKXt0eXBlb2YgZi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZmLnJ1bldoZW4odCk9PT0hMXx8KEU9RSYmZi5zeW5jaHJvbm91cyxzLnVuc2hpZnQoZi5mdWxmaWxsZWQsZi5yZWplY3RlZCkpfSk7bGV0IEM9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihmKXtDLnB1c2goZi5mdWxmaWxsZWQsZi5yZWplY3RlZCl9KTtsZXQgbyxhPTAsYztpZighRSl7bGV0IFE9W2pBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoUS51bnNoaWZ0KC4uLnMpLFEucHVzaCguLi5DKSxjPVEubGVuZ3RoLG89UHJvbWlzZS5yZXNvbHZlKHQpO2E8Yzspbz1vLnRoZW4oUVthKytdLFFbYSsrXSk7cmV0dXJuIG99Yz1zLmxlbmd0aDtsZXQgQj10O2ZvcihhPTA7YTxjOyl7bGV0IFE9c1thKytdLGY9c1thKytdO3RyeXtCPVEoQil9Y2F0Y2gobCl7Zi5jYWxsKHRoaXMsbCk7YnJlYWt9fXRyeXtvPWpBLmNhbGwodGhpcyxCKX1jYXRjaChRKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoUSl9Zm9yKGE9MCxjPUMubGVuZ3RoO2E8Yzspbz1vLnRoZW4oQ1thKytdLENbYSsrXSk7cmV0dXJuIG99Z2V0VXJpKGUpe2U9Sih0aGlzLmRlZmF1bHRzLGUpO2xldCB0PXBBKGUuYmFzZVVSTCxlLnVybCxlLmFsbG93QWJzb2x1dGVVcmxzKTtyZXR1cm4gbEEodCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpfX07bi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihlKXtvQS5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxJKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEooSXx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KEl8fHt9KS5kYXRhfSkpfX0pO24uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoSSl7cmV0dXJuIGZ1bmN0aW9uKGksZyxzKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEooc3x8e30se21ldGhvZDplLGhlYWRlcnM6ST97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6aSxkYXRhOmd9KSl9fW9BLnByb3RvdHlwZVtlXT10KCksb0EucHJvdG90eXBlW2UrIkZvcm0iXT10KCEwKX0pO3ZhciBEQT1vQTt2YXIgRmU9Y2xhc3MgQXtjb25zdHJ1Y3RvcihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGkpe3Q9aX0pO2xldCBJPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4ocj0+e2lmKCFJLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBpPUkuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtpLS0gPjA7KUkuX2xpc3RlbmVyc1tpXShyKTtJLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPXI9PntsZXQgaSxnPW5ldyBQcm9taXNlKHM9PntJLnN1YnNjcmliZShzKSxpPXN9KS50aGVuKHIpO3JldHVybiBnLmNhbmNlbD1mdW5jdGlvbigpe0kudW5zdWJzY3JpYmUoaSl9LGd9LGUoZnVuY3Rpb24oaSxnLHMpe0kucmVhc29ufHwoSS5yZWFzb249bmV3IHEoaSxnLHMpLHQoSS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoZSl7aWYodGhpcy5yZWFzb24pe2UodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX11bnN1YnNjcmliZShlKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX10b0Fib3J0U2lnbmFsKCl7bGV0IGU9bmV3IEFib3J0Q29udHJvbGxlcix0PUk9PntlLmFib3J0KEkpfTtyZXR1cm4gdGhpcy5zdWJzY3JpYmUodCksZS5zaWduYWwudW5zdWJzY3JpYmU9KCk9PnRoaXMudW5zdWJzY3JpYmUodCksZS5zaWduYWx9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihyKXtlPXJ9KSxjYW5jZWw6ZX19fSxHdD1GZTtmdW5jdGlvbiBSZShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24ga2UoQSl7cmV0dXJuIG4uaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIFVlPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhVZSkuZm9yRWFjaCgoW0EsZV0pPT57VWVbZV09QX0pO3ZhciBMdD1VZTtmdW5jdGlvbiBidChBKXtsZXQgZT1uZXcgREEoQSksdD1DQShEQS5wcm90b3R5cGUucmVxdWVzdCxlKTtyZXR1cm4gbi5leHRlbmQodCxEQS5wcm90b3R5cGUsZSx7YWxsT3duS2V5czohMH0pLG4uZXh0ZW5kKHQsZSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGJ0KEooQSxyKSl9LHR9dmFyIHk9YnQockEpO3kuQXhpb3M9REE7eS5DYW5jZWxlZEVycm9yPXE7eS5DYW5jZWxUb2tlbj1HdDt5LmlzQ2FuY2VsPXVBO3kuVkVSU0lPTj12QTt5LnRvRm9ybURhdGE9ajt5LkF4aW9zRXJyb3I9dTt5LkNhbmNlbD15LkNhbmNlbGVkRXJyb3I7eS5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTt5LnNwcmVhZD1SZTt5LmlzQXhpb3NFcnJvcj1rZTt5Lm1lcmdlQ29uZmlnPUo7eS5BeGlvc0hlYWRlcnM9bTt5LmZvcm1Ub0pTT049QT0+T0Eobi5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTt5LmdldEFkYXB0ZXI9V0EuZ2V0QWRhcHRlcjt5Lkh0dHBTdGF0dXNDb2RlPUx0O3kuZGVmYXVsdD15O3ZhciBuQT15O3ZhcntBeGlvczptbixBeGlvc0Vycm9yOlNuLENhbmNlbGVkRXJyb3I6Rm4saXNDYW5jZWw6Um4sQ2FuY2VsVG9rZW46a24sVkVSU0lPTjpVbixhbGw6Tm4sQ2FuY2VsOkduLGlzQXhpb3NFcnJvcjpMbixzcHJlYWQ6Ym4sdG9Gb3JtRGF0YTpKbixBeGlvc0hlYWRlcnM6WW4sSHR0cFN0YXR1c0NvZGU6TW4sZm9ybVRvSlNPTjpIbixnZXRBZGFwdGVyOnFuLG1lcmdlQ29uZmlnOktufT1uQTthc3luYyBmdW5jdGlvbiBicihBLGUpe2xldCB0PUEsST1udWxsO2lmKHQ9PW51bGwpST1uZXcgV29ya2VyKG5ldyBVUkwoIi4vd2ViLXdvcmtlcnMvaXRrLXdhc20tcGlwZWxpbmUud29ya2VyLmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUifSk7ZWxzZSBpZih0LnN0YXJ0c1dpdGgoImh0dHAiKSl7bGV0IHI9YXdhaXQgbkEuZ2V0KHQse3Jlc3BvbnNlVHlwZToiYmxvYiIscGFyYW1zOmV9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwoci5kYXRhKTtJPW5ldyBXb3JrZXIoaSx7dHlwZToibW9kdWxlIn0pfWVsc2UgST1uZXcgV29ya2VyKHQse3R5cGU6Im1vZHVsZSJ9KTtyZXR1cm4gSX12YXIgeUE9YnI7ZnVuY3Rpb24gSnQoQSl7bGV0IGU9Z2UoQSksdD1BO3JldHVybiB0LnRlcm1pbmF0ZWQ9ITEsdC53b3JrZXJQcm94eT1lLHQub3JpZ2luYWxUZXJtaW5hdGU9dC50ZXJtaW5hdGUsdC50ZXJtaW5hdGU9KCk9Pnt0LnRlcm1pbmF0ZWQ9ITAsdC53b3JrZXJQcm94eVtyZV0oKSx0Lm9yaWdpbmFsVGVybWluYXRlKCl9LHt3b3JrZXJQcm94eTplLHdvcmtlcjp0fX1hc3luYyBmdW5jdGlvbiBKcihBLGUsdCl7bGV0IEk7aWYoQSE9bnVsbCl7bGV0IGk9QTtyZXR1cm4gaS53b3JrZXJQcm94eSE9PXZvaWQgMD8oST1pLndvcmtlclByb3h5LHt3b3JrZXJQcm94eTpJLHdvcmtlcjppfSk6SnQoQSl9bGV0IHI9YXdhaXQgeUEoZSx0KTtyZXR1cm4gSnQocil9dmFyIFl0PUpyO3ZhciB3QSx4LEdlLE5lPXtlbnY6e2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGg6ZnVuY3Rpb24oQSl7R2U9bmV3IFVpbnQ4QXJyYXkoeC5leHBvcnRzLm1lbW9yeS5idWZmZXIpfX19LFZBPWNsYXNze2luaXQoKXtyZXR1cm4gd0F8fCh0eXBlb2YgZmV0Y2g8InUiP3dBPWZldGNoKCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LCIrTXQpLnRoZW4oZT0+ZS5hcnJheUJ1ZmZlcigpKS50aGVuKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGUsTmUpKS50aGVuKHRoaXMuX2luaXQpOndBPVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEJ1ZmZlci5mcm9tKE10LCJiYXNlNjQiKSxOZSkudGhlbih0aGlzLl9pbml0KSx3QSl9X2luaXQoZSl7eD1lLmluc3RhbmNlLE5lLmVudi5lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKDApfWRlY29kZShlLHQ9MCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJaU1RERGVjb2RlcjogQXdhaXQgLmluaXQoKSBiZWZvcmUgZGVjb2RpbmcuIik7bGV0IEk9ZS5ieXRlTGVuZ3RoLHI9eC5leHBvcnRzLm1hbGxvYyhJKTtHZS5zZXQoZSxyKSx0PXR8fE51bWJlcih4LmV4cG9ydHMuWlNURF9maW5kRGVjb21wcmVzc2VkU2l6ZShyLEkpKTtsZXQgaT14LmV4cG9ydHMubWFsbG9jKHQpLGc9eC5leHBvcnRzLlpTVERfZGVjb21wcmVzcyhpLHQscixJKSxzPUdlLnNsaWNlKGksaStnKTtyZXR1cm4geC5leHBvcnRzLmZyZWUocikseC5leHBvcnRzLmZyZWUoaSksc319LE10PSJBR0Z6YlFFQUFBQUJiZzVnQTM5L2Z3Ri9ZQUYvQVg5Z0FuOS9BR0FCZndCZ0JYOS9mMzkvQVg5Z0EzOS9md0JnQkg5L2YzOEJmMkFBQVg5Z0FuOS9BWDlnQjM5L2YzOS9mMzhCZjJBQ2YzOEJmbUFJZjM5L2YzOS9mMzhCZjJBRmYzOS9mMzhBWUE1L2YzOS9mMzkvZjM5L2YzOS9md0YvQWljQkEyVnVkaDlsYlhOamNtbHdkR1Z1WDI1dmRHbG1lVjl0WlcxdmNubGZaM0p2ZDNSb0FBTURJeUlIQUFBQkFRTUhBd0VBQ1FRQUJRRUlDQUVGQmdRRUJBTUdBQUFLQUFVTERBMEdCQVVCY0FFQkFRVUhBUUdBQW9DQUFnWUlBWDhCUVlDakJBc0hyZ0VMQm0xbGJXOXllUUlBQm0xaGJHeHZZd0FGQkdaeVpXVUFCZ3hhVTFSRVgybHpSWEp5YjNJQUVobGFVMVJFWDJacGJtUkVaV052YlhCeVpYTnpaV1JUYVhwbEFCd1BXbE5VUkY5a1pXTnZiWEJ5WlhOekFDSVpYMTlwYm1ScGNtVmpkRjltZFc1amRHbHZibDkwWVdKc1pRRUFFRjlmWlhKeWJtOWZiRzlqWVhScGIyNEFBUWx6ZEdGamExTmhkbVVBQnd4emRHRmphMUpsYzNSdmNtVUFDQXB6ZEdGamEwRnNiRzlqQUFrS2kvSUJJZ1VBUVlRZkN6TUJBWDhnQWdSQUlBQWhBd05BSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJJQUpCQVdzaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXRzQVFKL1FZQWZLQUlBSWdFZ0FFRUhha0Y0Y1NJQ2FpRUFBa0FnQWtFQUlBQWdBVTBiRFFBZ0FEOEFRUkIwU3dSQUlBQS9BRUVRZEd0Qi8vOERha0VRZGtBQVFYOUdCSDlCQUFWQkFCQUFRUUVMUlEwQkMwR0FIeUFBTmdJQUlBRVBDMEdFSDBFd05nSUFRWDhMdVNjQkMzOGpBRUVRYXlJS0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCOUFGTkJFQkJpQjhvQWdBaUJrRVFJQUJCQzJwQmVIRWdBRUVMU1JzaUJVRURkaUlBZGlJQlFRTnhCRUFDUUNBQlFYOXpRUUZ4SUFCcUlnSkJBM1FpQVVHd0gyb2lBQ0FCUWJnZmFpZ0NBQ0lCS0FJSUlnUkdCRUJCaUI4Z0JrRitJQUozY1RZQ0FBd0JDeUFFSUFBMkFnd2dBQ0FFTmdJSUN5QUJRUWhxSVFBZ0FTQUNRUU4wSWdKQkEzSTJBZ1FnQVNBQ2FpSUJJQUVvQWdSQkFYSTJBZ1FNRHdzZ0JVR1FIeWdDQUNJSFRRMEJJQUVFUUFKQVFRSWdBSFFpQWtFQUlBSnJjaUFCSUFCMGNXZ2lBVUVEZENJQVFiQWZhaUlDSUFCQnVCOXFLQUlBSWdBb0FnZ2lCRVlFUUVHSUh5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRRkJuQjhvQWdBaEFnSi9JQVpCQVNBSFFRTjJkQ0lEY1VVRVFFR0lIeUFESUFaeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQXlBQklBSTJBZ2dnQXlBQ05nSU1JQUlnQVRZQ0RDQUNJQU0yQWdnTElBQkJDR29oQUVHY0h5QUlOZ0lBUVpBZklBUTJBZ0FNRHd0QmpCOG9BZ0FpQzBVTkFTQUxhRUVDZEVHNElXb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFaZ2ZLQUlBR2lBQ0tBSUlJZ0FnQkRZQ0RDQUVJQUEyQWdnTURnc2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRVFSUnFJZ0VvQWdBaUFBMEFJQVJCRUdvaEFTQUVLQUlRSWdBTkFBc2dDRUVBTmdJQURBMExRWDhoQlNBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFRlFZd2ZLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFRzRJV29vQWdBaUFVVUVRRUVBSVFBTUFRdEJBQ0VBSUFWQkdTQUhRUUYyYTBFQUlBZEJIMGNiZENFQ0EwQUNRQ0FCS0FJRVFYaHhJQVZySWdZZ0EwOE5BQ0FCSVFRZ0JpSUREUUJCQUNFRElBRWhBQXdEQ3lBQUlBRW9BaFFpQmlBR0lBRWdBa0VkZGtFRWNXb29BaEFpQVVZYklBQWdCaHNoQUNBQ1FRRjBJUUlnQVEwQUN3c2dBQ0FFY2tVRVFFRUFJUVJCQWlBSGRDSUFRUUFnQUd0eUlBaHhJZ0JGRFFNZ0FHaEJBblJCdUNGcUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJQ0lBTkpJUUVnQWlBRElBRWJJUU1nQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBRFFaQWZLQUlBSUFWclR3MEFJQVFvQWhnaEJ5QUVJQVFvQWd3aUFrY0VRRUdZSHlnQ0FCb2dCQ2dDQ0NJQUlBSTJBZ3dnQWlBQU5nSUlEQXdMSUFSQkZHb2lBU2dDQUNJQVJRUkFJQVFvQWhBaUFFVU5BeUFFUVJCcUlRRUxBMEFnQVNFR0lBQWlBa0VVYWlJQktBSUFJZ0FOQUNBQ1FSQnFJUUVnQWlnQ0VDSUFEUUFMSUFaQkFEWUNBQXdMQ3lBRlFaQWZLQUlBSWdSTkJFQkJuQjhvQWdBaEFBSkFJQVFnQldzaUFVRVFUd1JBSUFBZ0JXb2lBaUFCUVFGeU5nSUVJQUFnQkdvZ0FUWUNBQ0FBSUFWQkEzSTJBZ1FNQVFzZ0FDQUVRUU55TmdJRUlBQWdCR29pQVNBQktBSUVRUUZ5TmdJRVFRQWhBa0VBSVFFTFFaQWZJQUUyQWdCQm5COGdBallDQUNBQVFRaHFJUUFNRFFzZ0JVR1VIeWdDQUNJQ1NRUkFRWlFmSUFJZ0JXc2lBVFlDQUVHZ0gwR2dIeWdDQUNJQUlBVnFJZ0kyQWdBZ0FpQUJRUUZ5TmdJRUlBQWdCVUVEY2pZQ0JDQUFRUWhxSVFBTURRdEJBQ0VBSUFWQkwyb2lBd0ovUWVBaUtBSUFCRUJCNkNJb0FnQU1BUXRCN0NKQ2Z6Y0NBRUhrSWtLQW9JQ0FnSUFFTndJQVFlQWlJQXBCREdwQmNIRkIyS3JWcWdWek5nSUFRZlFpUVFBMkFnQkJ4Q0pCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdoeElnRWdCVTBOREVIQUlpZ0NBQ0lFQkVCQnVDSW9BZ0FpQnlBQmFpSUpJQWROSUFRZ0NVbHlEUTBMQWtCQnhDSXRBQUJCQkhGRkJFQUNRQUpBQWtBQ1FFR2dIeWdDQUNJRUJFQkJ5Q0loQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFQVFpQWtGL1JnMERJQUVoQmtIa0lpZ0NBQ0lBUVFGcklnUWdBbkVFUUNBQklBSnJJQUlnQkdwQkFDQUFhM0ZxSVFZTElBVWdCazhOQTBIQUlpZ0NBQ0lBQkVCQnVDSW9BZ0FpQkNBR2FpSUlJQVJOSUFBZ0NFbHlEUVFMSUFZUUJDSUFJQUpIRFFFTUJRc2dCaUFDYXlBSWNTSUdFQVFpQWlBQUtBSUFJQUFvQWdScVJnMEJJQUloQUFzZ0FFRi9SZzBCSUFWQk1Hb2dCazBFUUNBQUlRSU1CQXRCNkNJb0FnQWlBaUFESUFacmFrRUFJQUpyY1NJQ0VBUkJmMFlOQVNBQ0lBWnFJUVlnQUNFQ0RBTUxJQUpCZjBjTkFndEJ4Q0pCeENJb0FnQkJCSEkyQWdBTElBRVFCQ0lDUVg5R1FRQVFCQ0lBUVg5R2NpQUFJQUpOY2cwRklBQWdBbXNpQmlBRlFTaHFUUTBGQzBHNElrRzRJaWdDQUNBR2FpSUFOZ0lBUWJ3aUtBSUFJQUJKQkVCQnZDSWdBRFlDQUFzQ1FFR2dIeWdDQUNJREJFQkJ5Q0loQUFOQUlBSWdBQ2dDQUNJQklBQW9BZ1FpQkdwR0RRSWdBQ2dDQ0NJQURRQUxEQVFMUVpnZktBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHWUh5QUNOZ0lBQzBFQUlRQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFhZ2ZRWDgyQWdCQnJCOUI0Q0lvQWdBMkFnQkIxQ0pCQURZQ0FBTkFJQUJCQTNRaUFVRzRIMm9nQVVHd0gyb2lCRFlDQUNBQlFid2ZhaUFFTmdJQUlBQkJBV29pQUVFZ1J3MEFDMEdVSHlBR1FTaHJJZ0JCZUNBQ2EwRUhjU0lCYXlJRU5nSUFRYUFmSUFFZ0Ftb2lBVFlDQUNBQklBUkJBWEkyQWdRZ0FDQUNha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQVFMSUFJZ0EwMGdBU0FEUzNJTkFpQUFLQUlNUVFoeERRSWdBQ0FFSUFacU5nSUVRYUFmSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUVpRZlFaUWZLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFNTFFRQWhCQXdLQzBFQUlRSU1DQXRCbUI4b0FnQWdBa3NFUUVHWUh5QUNOZ0lBQ3lBQ0lBWnFJUUZCeUNJaEFBSkFBa0FDUUFOQUlBRWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QnlDSWhBQU5BSUFNZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUJDQURTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUpCZUNBQ2EwRUhjV29pQnlBRlFRTnlOZ0lFSUFGQmVDQUJhMEVIY1dvaUJpQUZJQWRxSWdWcklRQWdBeUFHUmdSQVFhQWZJQVUyQWdCQmxCOUJsQjhvQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJuQjhvQWdBZ0JrWUVRRUdjSHlBRk5nSUFRWkFmUVpBZktBSUFJQUJxSWdBMkFnQWdCU0FBUVFGeU5nSUVJQUFnQldvZ0FEWUNBQXdJQ3lBR0tBSUVJZ05CQTNGQkFVY05CaUFEUVhoeElRa2dBMEgvQVUwRVFDQUdLQUlNSWdFZ0JpZ0NDQ0lDUmdSQVFZZ2ZRWWdmS0FJQVFYNGdBMEVEZG5keE5nSUFEQWNMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01CZ3NnQmlnQ0dDRUlJQVlnQmlnQ0RDSUNSd1JBSUFZb0FnZ2lBU0FDTmdJTUlBSWdBVFlDQ0F3RkN5QUdRUlJxSWdFb0FnQWlBMFVFUUNBR0tBSVFJZ05GRFFRZ0JrRVFhaUVCQ3dOQUlBRWhCQ0FESWdKQkZHb2lBU2dDQUNJRERRQWdBa0VRYWlFQklBSW9BaEFpQXcwQUN5QUVRUUEyQWdBTUJBdEJsQjhnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFR2dIeUFCSUFKcUlnRTJBZ0FnQVNBSVFRRnlOZ0lFSUFBZ0FtcEJLRFlDQkVHa0gwSHdJaWdDQURZQ0FDQURJQVJCSnlBRWEwRUhjV3BCTDJzaUFDQUFJQU5CRUdwSkd5SUJRUnMyQWdRZ0FVSFFJaWtDQURjQ0VDQUJRY2dpS1FJQU53SUlRZEFpSUFGQkNHbzJBZ0JCekNJZ0JqWUNBRUhJSWlBQ05nSUFRZFFpUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29nQUVFRWFpRUFJQVJKRFFBTElBRWdBMFlOQUNBQklBRW9BZ1JCZm5FMkFnUWdBeUFCSUFOcklnSkJBWEkyQWdRZ0FTQUNOZ0lBSUFKQi93Rk5CRUFnQWtGNGNVR3dIMm9oQUFKL1FZZ2ZLQUlBSWdGQkFTQUNRUU4yZENJQ2NVVUVRRUdJSHlBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFTQUFJQU0yQWdnZ0FTQUROZ0lNSUFNZ0FEWUNEQ0FESUFFMkFnZ01BUXRCSHlFQUlBSkIvLy8vQjAwRVFDQUNRU1lnQWtFSWRtY2lBR3QyUVFGeElBQkJBWFJyUVQ1cUlRQUxJQU1nQURZQ0hDQURRZ0EzQWhBZ0FFRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlCRUVCSUFCMElnWnhSUVJBUVl3ZklBUWdCbkkyQWdBZ0FTQUROZ0lBREFFTElBSkJHU0FBUVFGMmEwRUFJQUJCSDBjYmRDRUFJQUVvQWdBaEJBTkFJQVFpQVNnQ0JFRjRjU0FDUmcwQ0lBQkJIWFloQkNBQVFRRjBJUUFnQVNBRVFRUnhhaUlHS0FJUUlnUU5BQXNnQmlBRE5nSVFDeUFESUFFMkFoZ2dBeUFETmdJTUlBTWdBellDQ0F3QkN5QUJLQUlJSWdBZ0F6WUNEQ0FCSUFNMkFnZ2dBMEVBTmdJWUlBTWdBVFlDRENBRElBQTJBZ2dMUVpRZktBSUFJZ0FnQlUwTkFFR1VIeUFBSUFWcklnRTJBZ0JCb0I5Qm9COG9BZ0FpQUNBRmFpSUNOZ0lBSUFJZ0FVRUJjallDQkNBQUlBVkJBM0kyQWdRZ0FFRUlhaUVBREFnTFFZUWZRVEEyQWdCQkFDRUFEQWNMUVFBaEFnc2dDRVVOQUFKQUlBWW9BaHdpQVVFQ2RFRzRJV29pQkNnQ0FDQUdSZ1JBSUFRZ0FqWUNBQ0FDRFFGQmpCOUJqQjhvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUd3SDJvaEFRSi9RWWdmS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHSUh5QUFJQUp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBQ0FCSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBVFlDRENBRklBQTJBZ2dNQVF0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFVZ0F6WUNIQ0FGUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQWtFQklBTjBJZ1J4UlFSQVFZd2ZJQUlnQkhJMkFnQWdBU0FGTmdJQURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBZ05BSUFJaUFTZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0FTQUNRUVJ4YWlJRUtBSVFJZ0lOQUFzZ0JDQUZOZ0lRQ3lBRklBRTJBaGdnQlNBRk5nSU1JQVVnQlRZQ0NBd0JDeUFCS0FJSUlnQWdCVFlDRENBQklBVTJBZ2dnQlVFQU5nSVlJQVVnQVRZQ0RDQUZJQUEyQWdnTElBZEJDR29oQUF3Q0N3SkFJQWRGRFFBQ1FDQUVLQUljSWdCQkFuUkJ1Q0ZxSWdFb0FnQWdCRVlFUUNBQklBSTJBZ0FnQWcwQlFZd2ZJQWhCZmlBQWQzRWlDRFlDQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQVJHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQWMyQWhnZ0JDZ0NFQ0lBQkVBZ0FpQUFOZ0lRSUFBZ0FqWUNHQXNnQkNnQ0ZDSUFSUTBBSUFJZ0FEWUNGQ0FBSUFJMkFoZ0xBa0FnQTBFUFRRUkFJQVFnQXlBRmFpSUFRUU55TmdJRUlBQWdCR29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQVFnQlVFRGNqWUNCQ0FFSUFWcUlnSWdBMEVCY2pZQ0JDQUNJQU5xSUFNMkFnQWdBMEgvQVUwRVFDQURRWGh4UWJBZmFpRUFBbjlCaUI4b0FnQWlBVUVCSUFOQkEzWjBJZ054UlFSQVFZZ2ZJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFiZ2hhaUVCQWtBQ1FDQUlRUUVnQUhRaUJuRkZCRUJCakI4Z0JpQUljallDQUNBQklBSTJBZ0FNQVFzZ0EwRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRkEwQWdCU0lCS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVHSUFCQkFYUWhBQ0FCSUFaQkJIRnFJZ1lvQWhBaUJRMEFDeUFHSUFJMkFoQUxJQUlnQVRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFFTElBRW9BZ2dpQUNBQ05nSU1JQUVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUJOZ0lNSUFJZ0FEWUNDQXNnQkVFSWFpRUFEQUVMQWtBZ0NVVU5BQUpBSUFJb0Fod2lBRUVDZEVHNElXb2lBU2dDQUNBQ1JnUkFJQUVnQkRZQ0FDQUVEUUZCakI4Z0MwRitJQUIzY1RZQ0FBd0NDeUFKUVJCQkZDQUpLQUlRSUFKR0cyb2dCRFlDQUNBRVJRMEJDeUFFSUFrMkFoZ2dBaWdDRUNJQUJFQWdCQ0FBTmdJUUlBQWdCRFlDR0FzZ0FpZ0NGQ0lBUlEwQUlBUWdBRFlDRkNBQUlBUTJBaGdMQWtBZ0EwRVBUUVJBSUFJZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQW1vaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFJZ0JVRURjallDQkNBQ0lBVnFJZ1FnQTBFQmNqWUNCQ0FESUFScUlBTTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRQkJuQjhvQWdBaEFRSi9RUUVnQjBFRGRuUWlCU0FHY1VVRVFFR0lIeUFGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFad2ZJQVEyQWdCQmtCOGdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2U0N3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJtQjhvQWdCSkRRRWdBQ0FCYWlFQUFrQUNRRUdjSHlnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQUlvQWd3aUFTQUNLQUlJSWdOR0JFQkJpQjlCaUI4b0FnQkJmaUFFZDNFMkFnQU1CUXNnQXlBQk5nSU1JQUVnQXpZQ0NBd0VDeUFDS0FJWUlRWWdBaUFDS0FJTUlnRkhCRUFnQWlnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBSkJGR29pQkNnQ0FDSURSUVJBSUFJb0FoQWlBMFVOQWlBQ1FSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZLQUlFSWdGQkEzRkJBMGNOQWtHUUh5QUFOZ0lBSUFVZ0FVRitjVFlDQkNBQ0lBQkJBWEkyQWdRZ0JTQUFOZ0lBRHd0QkFDRUJDeUFHUlEwQUFrQWdBaWdDSENJRFFRSjBRYmdoYWlJRUtBSUFJQUpHQkVBZ0JDQUJOZ0lBSUFFTkFVR01IMEdNSHlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQUlBRWdBellDRkNBRElBRTJBaGdMSUFJZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FBSkFBa0FDUUNBQlFRSnhSUVJBUWFBZktBSUFJQVZHQkVCQm9COGdBallDQUVHVUgwR1VIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQ1Fad2ZLQUlBUncwR1FaQWZRUUEyQWdCQm5COUJBRFlDQUE4TFFad2ZLQUlBSUFWR0JFQkJuQjhnQWpZQ0FFR1FIMEdRSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFnQVVIL0FVMEVRQ0FCUVFOMklRUWdCU2dDRENJQklBVW9BZ2dpQTBZRVFFR0lIMEdJSHlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFFMkFnd2dBU0FETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFVY0VRRUdZSHlnQ0FCb2dCU2dDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFWQkZHb2lCQ2dDQUNJRFJRUkFJQVVvQWhBaUEwVU5BaUFGUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBd0RDMEVBSVFFTElBWkZEUUFDUUNBRktBSWNJZ05CQW5SQnVDRnFJZ1FvQWdBZ0JVWUVRQ0FFSUFFMkFnQWdBUTBCUVl3ZlFZd2ZLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUVp3ZktBSUFSdzBBUVpBZklBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJzQjlxSVFFQ2YwR0lIeWdDQUNJRFFRRWdBRUVEZG5RaUFIRkZCRUJCaUI4Z0FDQURjallDQUNBQkRBRUxJQUVvQWdnTElRQWdBU0FDTmdJSUlBQWdBallDRENBQ0lBRTJBZ3dnQWlBQU5nSUlEd3RCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQUlnQXpZQ0hDQUNRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0FDUUVHTUh5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQmpCOGdCQ0FIY2pZQ0FDQUJJQUkyQWdBZ0FpQUJOZ0lZREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQVNBRFFRRjBJUU1nQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUNOZ0lRSUFJZ0JEWUNHQXNnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFFS0FJSUlnQWdBallDRENBRUlBSTJBZ2dnQWtFQU5nSVlJQUlnQkRZQ0RDQUNJQUEyQWdnTFFhZ2ZRYWdmS0FJQVFRRnJJZ0JCZnlBQUd6WUNBQXNMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF0S0FRRi9JQUFnQVVrRVFDQUFJQUVnQWhBQ0R3c2dBZ1JBSUFBZ0Ftb2hBeUFCSUFKcUlRRURRQ0FEUVFGcklnTWdBVUVCYXlJQkxRQUFPZ0FBSUFKQkFXc2lBZzBBQ3dzZ0FBdjlEZ0lSZndGK0l3QkJNR3NpQnlRQVFiaC9JUWdDUUNBRlJRMEFJQVFzQUFBaUNVSC9BWEVoQ3dKQUlBbEJBRWdFUUNBTFFmNEFhMEVCZGlJR0lBVlBEUUpCYkNFSUlBdEIvd0JySWd0Qi93RkxEUUlnQkVFQmFpRUlRUUFoQlFOQUlBVWdDMDhFUUNBTElRZ2dCaUVMREFNRklBQWdCV29nQ0NBRlFRRjJhaUlFTFFBQVFRUjJPZ0FBSUFBZ0JVRUJjbW9nQkMwQUFFRVBjVG9BQUNBRlFRSnFJUVVNQVFzQUN3QUxJQVVnQzAwTkFTQUhRZjhCTmdJRUlBWWdCMEVFYWlBSFFRaHFJQVJCQVdvaURpQUxFQXdpQkVHSWYwc0VRQ0FFSVFnTUFndEJWQ0VJSUFjb0FnZ2lFRUVHU3cwQklBY29BZ1FpRVVFQmRDSUpRUUpxclVJQklCQ3RoaUlZUVFFZ0VIUWlEVUVCYWlJRnJVSUNobng4UWd0OFF2ei8vLy8vLy8vLy93Q0RRdVFDVmcwQlFWSWhDQ0FSUWY4QlN3MEJJQTFCZjNOQkFuUkI1QUpxclNBUlFRRnFJaFZCQVhTdElCaDhRZ2g4VkEwQklBc2dCR3NoRmlBRUlBNXFJUmNnQmtHQUJHb2lFaUFGUVFKMGFpSVJJQWxxUVFKcUlRNGdCa0dFQkdvaEUwR0FnQUlnRUhSQkVIWWhDVUVBSVFWQkFTRVBJQTFCQVdzaUZDRUtBMEFnQlNBVlJrVUVRQUpBSUFZZ0JVRUJkQ0lJYWk4QkFDSUVRZi8vQTBZRVFDQVRJQXBCQW5ScUlBVTZBQUlnQ2tFQmF5RUtRUUVoQkF3QkN5QVBRUUFnQ1NBRXdVb2JJUThMSUFnZ0VXb2dCRHNCQUNBRlFRRnFJUVVNQVFzTElBWWdEenNCZ2dRZ0JpQVFPd0dBQkFKQUlBb2dGRVlFUUNBTlFRTjJJUWhDQUNFWVFRQWhEd05BSUF3Z0ZVWUVRQ0FJSUExQkFYWnFRUU5xSWdsQkFYUWhDRUVBSVFSQkFDRUtBMEJCQUNFRklBb2dEVThOQkFOQUlBVkJBa1pGQkVBZ0V5QUZJQWxzSUFScUlCUnhRUUowYWlBT0lBVWdDbXBxTFFBQU9nQUNJQVZCQVdvaEJRd0JDd3NnQ2tFQ2FpRUtJQVFnQ0dvZ0ZIRWhCQXdBQ3dBRklBWWdERUVCZEdvdUFRQWhDU0FPSUE5cUlnUWdHRGNBQUVFSUlRVURRQ0FGSUFsT1JRUkFJQVFnQldvZ0dEY0FBQ0FGUVFocUlRVU1BUXNMSUJoQ2dZS0VpSkNnd0lBQmZDRVlJQXhCQVdvaERDQUpJQTlxSVE4TUFRc0FDd0FMSUExQkEzWWdEVUVCZG1wQkEyb2hDRUVBSVFVRFFDQU1JQlZHUlFSQVFRQWhDU0FHSUF4QkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FKUmtVRVFDQVRJQVZCQW5ScUlBdzZBQUlEUUNBRklBaHFJQlJ4SWdVZ0Nrc05BQXNnQ1VFQmFpRUpEQUVMQ3lBTVFRRnFJUXdNQVFzTFFYOGhDQ0FGRFFJTElCQkJBV29oQ0VFQUlRVURRQ0FGSUExR1JRUkFJQkVnRXlBRlFRSjBhaUlPTFFBQ1FRRjBhaUlFSUFRdkFRQWlDVUVCYWpzQkFDQU9JQWdnQ1dkQllITnFJZ1E2QUFNZ0RpQUpJQVIwSUExck93RUFJQVZCQVdvaEJRd0JDd3NDUUFKQUlBWXZBWUlFQkVBZ0IwRWNhaUlFSUJjZ0ZoQU5JZ2hCaUg5TERRSWdCMEVVYWlBRUlCSVFEaUFIUVF4cUlBUWdFaEFPUVFBaEJRTkFJQWRCSEdvaUJCQVBJQVZCK3dGTGNnMENJQUFnQldvaUJpQUhRUlJxSUFRUUVEb0FBQ0FHSUFkQkRHb2dCQkFRT2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVU1Bd1VnQUNBRWFpQUhRUlJxSUFkQkhHb2lCQkFRT2dBQUlBWWdCMEVNYWlBRUVCQTZBQU1nQlVFRWFpRUZEQUVMQUFzQUN5QUhRUnhxSWdRZ0Z5QVdFQTBpQ0VHSWYwc05BU0FIUVJScUlBUWdFaEFPSUFkQkRHb2dCQ0FTRUE1QkFDRUZBMEFnQjBFY2FpSUVFQThnQlVIN0FVdHlSUVJBSUFBZ0JXb2lCaUFIUVJScUlBUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVGSUFBZ0JHb2dCMEVVYWlBSFFSeHFJZ1FRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FESUFWQkJHb2hCUXdDQ3dzTEFuOERRRUc2ZnlFSUlBVkIvUUZMRFFNZ0FDQUZhaUlHSUFkQkZHb2dCMEVjYWlJSkVCRTZBQUFnQmtFQmFpRUVJQWtRRDBFRFJnUkFJQWRCREdvaENFRUNEQUlMSUFWQi9BRkxEUU1nQmlBSFFReHFJQWRCSEdvaUJCQVJPZ0FCSUFWQkFtb2hCU0FFRUE5QkEwY05BQXNnQUNBRmFpRUVJQWRCRkdvaENFRURDeUFFSUFnZ0IwRWNhaEFST2dBQUlBWnFJQUJySVFnTUFRc0Nmd05BUWJwL0lRZ2dCVUg5QVVzTkFpQUFJQVZxSWdZZ0IwRVVhaUFIUVJ4cUlna1FFRG9BQUNBR1FRRnFJUVFnQ1JBUFFRTkdCRUFnQjBFTWFpRUlRUUlNQWdzZ0JVSDhBVXNOQWlBR0lBZEJER29nQjBFY2FpSUVFQkE2QUFFZ0JVRUNhaUVGSUFRUUQwRURSdzBBQ3lBQUlBVnFJUVFnQjBFVWFpRUlRUU1MSUFRZ0NDQUhRUnhxRUJBNkFBQWdCbW9nQUdzaENBc2dDRUdJZjBzTkFRc2dDQ0VFUVFBaEJTQUJRUUJCTkJBRElRbEJBQ0VLQTBBZ0JDQUZSd1JBSUFBZ0JXb2lCaTBBQUNJQlFRdExCRUJCYkNFSURBTUZJQWtnQVVFQ2RHb2lBU0FCS0FJQVFRRnFOZ0lBSUFWQkFXb2hCVUVCSUFZdEFBQjBRUUYxSUFwcUlRb01BZ3NBQ3d0QmJDRUlJQXBGRFFBZ0NtY2lCVUVmY3lJQlFRdExEUUFnQTBFZ0lBVnJOZ0lBUVFGQkFpQUJkQ0FLYXlJRFowRWZjeUlCZENBRFJ3MEFJQUFnQkdvZ0FVRUJhaUlBT2dBQUlBa2dBRUVDZEdvaUFDQUFLQUlBUVFGcU5nSUFJQWtvQWdRaUFFRUNTU0FBUVFGeGNnMEFJQUlnQkVFQmFqWUNBQ0FMUVFGcUlRZ0xJQWRCTUdva0FDQUlDNkFGQVF4L0l3QkJFR3NpRENRQUFuOGdCRUVIVFFSQUlBeENBRGNEQ0NBTVFRaHFJZ1VnQXlBRUVBSWFRV3dnQUNBQklBSWdCVUVJRUF3aUFDQUFJQVJMR3lBQUlBQkJpWDlKR3d3QkN5QUFRUUFnQVNnQ0FFRUJhaUlOUVFGMEVBTWhEMEZVSUFNb0FBQWlCa0VQY1NJQVFRcExEUUFhSUFJZ0FFRUZhallDQUNBRElBUnFJZ0pCQkdzaEJ5QUNRUWRySVFzZ0FFRUdhaUVPUVFRaEFpQUdRUVIySVFWQklDQUFkQ0lJUVFGeUlRbEJBQ0VBUVFFaEJpQURJUVFEUUFKQUlBWkJBWEZGQkVBRFFDQUZRWDl6UVlDQWdJQjRjbWdpQmtFWVNVVUVRQ0FBUVNScUlRQWdCQ0FMVFFSL0lBUkJBMm9GSUFRZ0MydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xJQUlnQmtFZWNTSUtha0VDYWlFQ0lBWkJBWFpCQTJ3Z0FHb2dCU0FLZGtFRGNXb2lBQ0FOVHcwQkFuOGdCQ0FMU3lBQ1FRTjJJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBUWdCMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVUxJQVVnQ0VFQmEzRWlCaUFJUVFGMFFRRnJJZ29nQ1dzaUVFa0VmeUFPUVFGckJTQUZJQXB4SWdVZ0VFRUFJQVVnQ0U0YmF5RUdJQTRMSVFVZ0R5QUFRUUYwYWlBR1FRRnJJZ283QVFBZ0FFRUJhaUVBSUFJZ0JXb2hBaUFJUVFFZ0Jtc2dDaUFHUVFCS0d5QUphaUlKU2dSQUlBbEJBa2dOQVVFZ0lBbG5JZ1ZySVE1QkFTQUZRUjl6ZENFSUN5QUFJQTFQRFFBZ0NrRUFSeUVHQW44Z0JDQUxTeUFDUVFOMUlBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFJZ0JDQUhhMEVEZEdwQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xRV3dnQ1VFQlJ3MEFHa0ZRSUFBZ0RVc05BQnBCYkNBQ1FTQktEUUFhSUFFZ0FFRUJhellDQUNBRUlBSkJCMnBCQTNWcUlBTnJDeUFNUVJCcUpBQUw4Z0VCQVg4Z0FrVUVRQ0FBUWdBM0FnQWdBRUVBTmdJUUlBQkNBRGNDQ0VHNGZ3OExJQUFnQVRZQ0RDQUFJQUZCQkdvMkFoQWdBa0VFVHdSQUlBQWdBU0FDYWlJQlFRUnJJZ00yQWdnZ0FDQURLQUFBTmdJQUlBRkJBV3N0QUFBaUFRUkFJQUFnQVdkQkYyczJBZ1FnQWc4TElBQkJBRFlDQkVGL0R3c2dBQ0FCTmdJSUlBQWdBUzBBQUNJRE5nSUFBa0FDUUFKQUlBSkJBbXNPQWdFQUFnc2dBQ0FCTFFBQ1FSQjBJQU55SWdNMkFnQUxJQUFnQVMwQUFVRUlkQ0FEYWpZQ0FBc2dBU0FDYWtFQmF5MEFBQ0lCUlFSQUlBQkJBRFlDQkVGc0R3c2dBQ0FCWnlBQ1FRTjBhMEVKYWpZQ0JDQUNDMFFCQW44Z0FTQUNMd0VBSWdNZ0FTZ0NCR29pQkRZQ0JDQUFJQU5CQW5SQm9CMXFLQUlBSUFFb0FnQkJBQ0FFYTNaeE5nSUFJQUVRRHhvZ0FDQUNRUVJxTmdJRUM1OEJBUVIvUVFNaEFTQUFLQUlFSWdKQklFMEVRQ0FBS0FJSUlnRWdBQ2dDRUU4RVFDQUFJQUpCQjNFMkFnUWdBQ0FCSUFKQkEzWnJJZ0kyQWdnZ0FDQUNLQUFBTmdJQVFRQVBDeUFBS0FJTUlnTWdBVVlFUUVFQlFRSWdBa0VnU1JzUEN5QUFJQUVnQVNBRGF5QUNRUU4ySWdRZ0FTQUVheUFEU1NJQkd5SURheUlFTmdJSUlBQWdBaUFEUVFOMGF6WUNCQ0FBSUFRb0FBQTJBZ0FMSUFFTFNBRUVmeUFBS0FJRUlBQW9BZ0JCQW5ScUlnSXRBQUlnQWk4QkFDRUVJQUVnQVNnQ0JDSUZJQUl0QUFNaUFtbzJBZ1FnQUNBRUlBRW9BZ0FnQlhSQkFDQUNhM1pxTmdJQUMxSUJCSDhnQUNnQ0JDQUFLQUlBUVFKMGFpSUNMUUFDSUFJdkFRQWhCQ0FCSUFJdEFBTWlBaUFCS0FJRWFpSUZOZ0lFSUFBZ0JDQUNRUUowUWFBZGFpZ0NBQ0FCS0FJQVFRQWdCV3QyY1dvMkFnQUxDQUFnQUVHSWYwc0xHZ0FnQUFSQUlBRUVRQ0FDSUFBZ0FSRUNBQThMSUFBUUJnc0xwZ2dDRFg4QmZpTUFRUkJySWdra0FDQUpRUUEyQWd3Z0NVRUFOZ0lJQW44Q1FDQURRZWdKYWlBRElBbEJDR29nQ1VFTWFpQUJJQUlnQTBHQUFXb1FDeUlQUVloL1N3MEFRVlFnQ1NnQ0RDSUVJQUFvQWdBaUFVSC9BWEZCQVdwTERRRWFJQUJCQkdvaEN5QUFJQUZCLzRHQWVIRWdCRUVRZEVHQWdQd0hjWEkyQWdCQmZ5QUVJQVJCQUVnYlFRRnFJUUJCQUNFQklBa29BZ2doQlVFQUlRSURRQ0FBSUFKR0JFQWdCVUVEYXlFQlFRQWhBQU5BQWtCQkFDRUNJQUFnQVU0RVFBTkFJQUFnQlU0TkFpQURJQUFnQTJwQjZBbHFMUUFBUVFKMGFrRkFheUlCSUFFb0FnQWlBVUVCYWpZQ0FDQUJJQU5xSUFBNkFPZ0hJQUJCQVdvaEFBd0FDd0FGQTBBZ0FrRUVSa1VFUUNBRElBTWdBQ0FDYWlJSGFrSG9DV290QUFCQkFuUnFRVUJySWdnZ0NDZ0NBQ0lJUVFGcU5nSUFJQU1nQ0dvZ0J6b0E2QWNnQWtFQmFpRUNEQUVMQ3lBQVFRUnFJUUFNQWdzQUN3c2dCRUVCYWlFT0lBTW9BZ0FoQjBFQUlRQkJBU0VJQTBBZ0NDQU9SZzBESUE0Z0NHc2hCQ0FESUFoQkFuUnFLQUlBSVFVQ1FBSkFBa0FDUUFKQUFrQkJBU0FJZEVFQmRTSU5RUUZyRGdnQUFRUUNCQVFFQXdRTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBQUlRRURRQ0FDSUFaR0RRVWdBeUFDSUFkcWFpMEE2QWNoQ2lBTElBRkJBWFJxSWd3Z0JEb0FBU0FNSUFvNkFBQWdBa0VCYWlFQ0lBRkJBV29oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaENpQUFJUUVEUUNBQ0lBcEdEUVFnQ3lBQlFRRjBhaUlHSUFNZ0FpQUhhbW90QU9nSElndzZBQUlnQmlBRU9nQUJJQVlnRERvQUFDQUdJQVE2QUFNZ0FrRUJhaUVDSUFGQkFtb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBRVFRaDBRWUQrQTNFaEJDQUFJUUVEUUNBQ0lBWkdEUU1nQ3lBQlFRRjBhaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitOd0FBSUFKQkFXb2hBaUFCUVFScUlRRU1BQXNBQzBFQUlRSWdCVUVBSUFWQkFFb2JJUVlnQkVFSWRFR0EvZ054SVFRZ0FDRUJBMEFnQWlBR1JnMENJQXNnQVVFQmRHb2lDaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJaEUzQUFnZ0NpQVJOd0FBSUFKQkFXb2hBaUFCUVFocUlRRU1BQXNBQzBFQUlRRWdCVUVBSUFWQkFFb2JJUW9nQkVFSWRFR0EvZ054SVF3Z0FDRUVBMEFnQVNBS1JnMEJJQXNnQkVFQmRHb2hFQ0FNSUFNZ0FTQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJUkZCQUNFQ0EwQWdBaUFOVGtVRVFDQVFJQUpCQVhScUlnWWdFVGNBR0NBR0lCRTNBQkFnQmlBUk53QUlJQVlnRVRjQUFDQUNRUkJxSVFJTUFRc0xJQUZCQVdvaEFTQUVJQTFxSVFRTUFBc0FDeUFJUVFGcUlRZ2dCU0FIYWlFSElBVWdEV3dnQUdvaEFBd0FDd0FGSUFNZ0FrRUNkR29pQjBGQWF5QUJOZ0lBSUFKQkFXb2hBaUFIS0FJQUlBRnFJUUVNQVFzQUN3QUxJQThMSUFsQkVHb2tBQXZ5QWdFR2Z5TUFRU0JySWdVa0FDQUVLQUlBSVFZZ0JVRU1haUFDSUFNUURTSURRWWgvVFFSQUlBUkJCR29oQWlBQUlBRnFJZ2xCQTJzaEJFRUFJQVpCRUhaclFSOXhJUU1EUUNBRlFReHFFQThnQUNBRVQzSkZCRUFnQWlBRktBSU1JZ1lnQlNnQ0VDSUhkQ0FEZGtFQmRHb2lDQzBBQVNFS0lBQWdDQzBBQURvQUFDQUNJQVlnQnlBS2FpSUdkQ0FEZGtFQmRHb2lCeTBBQUNFSUlBVWdCaUFITFFBQmFqWUNFQ0FBSUFnNkFBRWdBRUVDYWlFQURBRUxDd05BSUFWQkRHb1FEeUVISUFVb0Fnd2hCaUFGS0FJUUlRUWdBQ0FKVHlBSGNrVUVRQ0FDSUFZZ0JIUWdBM1pCQVhScUlnWXRBQUFoQnlBRklBUWdCaTBBQVdvMkFoQWdBQ0FIT2dBQUlBQkJBV29oQUF3QkN3c0RRQ0FBSUFsUFJRUkFJQUlnQmlBRWRDQURka0VCZEdvaUJ5MEFBU0VJSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQkNBSWFpRUVEQUVMQzBGc1FXd2dBU0FGS0FJVUlBVW9BaGhIR3lBRVFTQkhHeUVEQ3lBRlFTQnFKQUFnQXd2UEZBRWpmeU1BUWRBQWF5SUZKQUJCYkNFSkFrQWdBMEVLU1EwQUFrQWdBeUFDTHdBRUlnY2dBaThBQUNJSUlBSXZBQUlpRFdwcVFRWnFJZ3hKRFFBZ0JDOEJBaUVHSUFWQlBHb2dBa0VHYWlJQ0lBZ1FEU0lKUVloL1N3MEJJQVZCS0dvZ0FpQUlhaUlDSUEwUURTSUpRWWgvU3cwQklBVkJGR29nQWlBTmFpSUNJQWNRRFNJSlFZaC9TdzBCSUFVZ0FpQUhhaUFESUF4ckVBMGlDVUdJZjBzTkFTQUVRUVJxSVFvZ0FDQUJhaUlmUVFOcklTQkJBQ0FHYTBFZmNTRUxJQVVvQWdnaEVTQUZLQUljSVJJZ0JTZ0NNQ0VUSUFVb0FrUWhGQ0FGS0FJRUlRa2dCU2dDR0NFTklBVW9BaXdoRENBRktBSkFJUVlnQlNnQ0VDRWhJQVVvQWlRaElpQUZLQUk0SVNNZ0JTZ0NUQ0VrSUFVb0FnQWhGU0FGS0FJVUlSWWdCU2dDS0NFWElBVW9BandoR0VFQklROGdBQ0FCUVFOcVFRSjJJZ1JxSWdNZ0JHb2lBaUFFYWlJWklRUWdBaUVJSUFNaEJ3TkFJQTlCQVhGRklBUWdJRTl5UlFSQUlBQWdDaUFZSUFaMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhHaUFPTFFBRElSQWdCeUFLSUJjZ0RIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0RpMEFBaUViSUE0dEFBTWhEeUFJSUFvZ0ZpQU5kQ0FMZGtFQ2RHb2lEaThCQURzQUFDQU9MUUFDSVJ3Z0RpMEFBeUVkSUFRZ0NpQVZJQWwwSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEhpQU9MUUFESVE0Z0FDQVFhaUlsSUFvZ0dDQUdJQnBxSWdaMElBdDJRUUowYWlJUUx3RUFPd0FBSUJBdEFBSWdFQzBBQXlFbUlBY2dEMm9pSnlBS0lCY2dEQ0FiYWlJYWRDQUxka0VDZEdvaUJ5OEJBRHNBQUNBSExRQUNJUXdnQnkwQUF5RVFJQWdnSFdvaUd5QUtJQllnRFNBY2FpSVBkQ0FMZGtFQ2RHb2lDQzhCQURzQUFDQUlMUUFDSVEwZ0NDMEFBeUVjSUFRZ0Rtb2lIU0FLSUJVZ0NTQWVhaUlPZENBTGRrRUNkR29pQ1M4QkFEc0FBQ0FHYWlFQVFRTWhCd0ovSUJRZ0pFa0VRQ0FBSVFaQkF3d0JDeUFBUVFkeElRWWdGQ0FBUVFOMmF5SVVLQUFBSVJoQkFBc2dDUzBBQXlFZUlBa3RBQUloQ0NBTUlCcHFJUUFnRXlBalNRUi9JQUFGSUJNZ0FFRURkbXNpRXlnQUFDRVhRUUFoQnlBQVFRZHhDeUVNSUEwZ0Qyb2hBQ0FIY2lFSlFRTWhEd0ovSUJJZ0lra0VRQ0FBSVExQkF3d0JDeUFBUVFkeElRMGdFaUFBUVFOMmF5SVNLQUFBSVJaQkFBc2dDQ0FPYWlFQUlBbHlJQkVnSVVrRWZ5QUFCU0FSSUFCQkEzWnJJaEVvQUFBaEZVRUFJUThnQUVFSGNRc2hDU0FsSUNacUlRQWdFQ0FuYWlFSElCc2dIR29oQ0NBZElCNXFJUVFnRDNKRklROE1BUXNMSUFVZ0REWUNMQ0FGSUFZMkFrQWdCU0FOTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBSWdCMGtnQUNBRFMzSU5BRUZzSVFrZ0NDQVpTdzBCSUFOQkEyc2hDUU5BSUFWQlBHb1FEMFVnQUNBSlNYRUVRQ0FBSUFvZ0JTZ0NQQ0lOSUFVb0FrQWlESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdBQ0FPTFFBRGFpSUdJQW9nRFNBTUlBNHRBQUpxSWdCMElBdDJRUUowYWlJTUx3RUFPd0FBSUFVZ0FDQU1MUUFDYWpZQ1FDQUdJQXd0QUFOcUlRQU1BUVVnQTBFQ2F5RU1BMEFnQlVFOGFoQVBJUVlnQlNnQ1BDRU5JQVVvQWtBaENTQUFJQXhMSUFaeVJRUkFJQUFnQ2lBTklBbDBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdDU0FHTFFBQ2FqWUNRQ0FBSUFZdEFBTnFJUUFNQVFzTEEwQWdBQ0FNUzBVRVFDQUFJQW9nRFNBSmRDQUxka0VDZEdvaUJpOEJBRHNBQUNBQUlBWXRBQU5xSVFBZ0NTQUdMUUFDYWlFSkRBRUxDd0pBSUFBZ0EwOE5BQ0FBSUFvZ0RTQUpkQ0FMZGlJQVFRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FKSUFNdEFBSnFJUWtNQVFzZ0NVRWZTdzBBUVNBZ0NTQUtJQUJCQW5ScUxRQUNhaUlBSUFCQklFOGJJUWtMSUFKQkEyc2hEQU5BSUFWQktHb1FEMFVnQnlBTVNYRUVRQ0FISUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lBSFFnQzNaQkFuUnFJZzB2QVFBN0FBQWdCeUFOTFFBRGFpSURJQW9nQmlBQUlBMHRBQUpxSWdCMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FDQUdMUUFDYWpZQ0xDQURJQVl0QUFOcUlRY01BUVVnQWtFQ2F5RUdBMEFnQlVFb2FoQVBJUU1nQlNnQ0tDRU1JQVVvQWl3aEFDQUdJQWRKSUFOeVJRUkFJQWNnQ2lBTUlBQjBJQXQyUVFKMGFpSURMd0VBT3dBQUlBVWdBQ0FETFFBQ2FqWUNMQ0FISUFNdEFBTnFJUWNNQVFzTEEwQWdCaUFIU1VVRVFDQUhJQW9nRENBQWRDQUxka0VDZEdvaUF5OEJBRHNBQUNBSElBTXRBQU5xSVFjZ0FDQURMUUFDYWlFQURBRUxDd0pBSUFJZ0IwME5BQ0FISUFvZ0RDQUFkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FBSUFNdEFBSnFJUUFNQVFzZ0FFRWZTdzBBUVNBZ0FDQUtJQUpCQW5ScUxRQUNhaUlBSUFCQklFOGJJUUFMSUJsQkEyc2hEQU5BSUFWQkZHb1FEMFVnQ0NBTVNYRUVRQ0FJSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lBblFnQzNaQkFuUnFJZzB2QVFBN0FBQWdDQ0FOTFFBRGFpSURJQW9nQmlBQ0lBMHRBQUpxSWdKMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FpQUdMUUFDYWpZQ0dDQURJQVl0QUFOcUlRZ01BUVVnR1VFQ2F5RURBMEFnQlVFVWFoQVBJUUlnQlNnQ0ZDRUdJQVVvQWhnaEJ5QURJQWhKSUFKeVJRUkFJQWdnQ2lBR0lBZDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBVWdCeUFDTFFBQ2FqWUNHQ0FJSUFJdEFBTnFJUWdNQVFzTEEwQWdBeUFJU1VVRVFDQUlJQW9nQmlBSGRDQUxka0VDZEdvaUFpOEJBRHNBQUNBSUlBSXRBQU5xSVFnZ0J5QUNMUUFDYWlFSERBRUxDd0pBSUFnZ0dVOE5BQ0FJSUFvZ0JpQUhkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FISUFNdEFBSnFJUWNNQVFzZ0IwRWZTdzBBUVNBZ0J5QUtJQUpCQW5ScUxRQUNhaUlDSUFKQklFOGJJUWNMQTBBZ0JSQVBSU0FFSUNCSmNRUkFJQVFnQ2lBRktBSUFJZ1lnQlNnQ0JDSUNkQ0FMZGtFQ2RHb2lEQzhCQURzQUFDQUVJQXd0QUFOcUlnTWdDaUFHSUFJZ0RDMEFBbW9pQW5RZ0MzWkJBblJxSWdRdkFRQTdBQUFnQlNBQ0lBUXRBQUpxTmdJRUlBTWdCQzBBQTJvaEJBd0JCU0FmUVFKcklRTURRQ0FGRUE4aEFpQUZLQUlBSVFZZ0JTZ0NCQ0VJSUFNZ0JFa2dBbkpGQkVBZ0JDQUtJQVlnQ0hRZ0MzWkJBblJxSWdJdkFRQTdBQUFnQlNBSUlBSXRBQUpxTmdJRUlBUWdBaTBBQTJvaEJBd0JDd3NEUUNBRElBUkpSUVJBSUFRZ0NpQUdJQWgwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVFnQWkwQUEyb2hCQ0FJSUFJdEFBSnFJUWdNQVFzTEFrQWdCQ0FmVHcwQUlBUWdDaUFHSUFoMElBdDJJZ0pCQW5ScUlnTXRBQUE2QUFBZ0F5MEFBMEVCUmdSQUlBZ2dBeTBBQW1vaENBd0JDeUFJUVI5TERRQkJJQ0FJSUFvZ0FrRUNkR290QUFKcUlnSWdBa0VnVHhzaENBdEJiRUZzUVd4QmJFRnNRV3hCYkVGc0lBRWdDRUVnUnhzZ0JTZ0NDQ0FGS0FJTVJ4c2dCMEVnUnhzZ0JTZ0NIQ0FGS0FJZ1J4c2dBRUVnUnhzZ0JTZ0NNQ0FGS0FJMFJ4c2dDVUVnUnhzZ0JTZ0NSQ0FGS0FKSVJ4c2hDUXdKQ3dBTEFBc0FDd0FMQUFzQUN3QUxBQXRCYkNFSkN5QUZRZEFBYWlRQUlBa0w3QkFCSG44akFFSFFBR3NpQlNRQVFXd2hDUUpBSUFOQkNra05BQUpBSUFNZ0FpOEFCQ0lHSUFJdkFBQWlCeUFDTHdBQ0lnaHFha0VHYWlJT1NRMEFJQVF2QVFJaER5QUZRVHhxSUFKQkJtb2lBaUFIRUEwaUNVR0lmMHNOQVNBRlFTaHFJQUlnQjJvaUFpQUlFQTBpQ1VHSWYwc05BU0FGUVJScUlBSWdDR29pQWlBR0VBMGlDVUdJZjBzTkFTQUZJQUlnQm1vZ0F5QU9heEFOSWdsQmlIOUxEUUVnQkVFRWFpRUtJQUFnQVdvaUhFRURheUVkUVFBZ0QydEJIM0VoQ3lBRktBSUlJUkVnQlNnQ0hDRVNJQVVvQWpBaEV5QUZLQUpFSVJRZ0JTZ0NCQ0VKSUFVb0FoZ2hCaUFGS0FJc0lRY2dCU2dDUUNFSUlBVW9BaEFoSGlBRktBSWtJUjhnQlNnQ09DRWdJQVVvQWt3aElTQUZLQUlBSVJVZ0JTZ0NGQ0VXSUFVb0FpZ2hGeUFGS0FJOElSaEJBU0VOSUFBZ0FVRURha0VDZGlJQ2FpSU9JQUpxSWc4Z0Ftb2lHU0VFSUE4aEFpQU9JUU1EUUNBTlJTQUVJQjFQY2tVRVFDQUtJQmdnQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUFnQ2lBWElBZDBJQXQyUVFGMGFpSU1MUUFCSVJBZ0F5QU1MUUFBT2dBQUlBb2dGaUFHZENBTGRrRUJkR29pREMwQUFTRWFJQUlnREMwQUFEb0FBQ0FLSUJVZ0NYUWdDM1pCQVhScUlnd3RBQUVoR3lBRUlBd3RBQUE2QUFBZ0NpQVlJQWdnRFdvaUNIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFFZ0NpQVhJQWNnRUdvaUIzUWdDM1pCQVhScUlnd3RBQUVoRUNBRElBd3RBQUE2QUFFZ0NpQVdJQVlnR21vaURIUWdDM1pCQVhScUlnWXRBQUVoR2lBQ0lBWXRBQUE2QUFFZ0NpQVZJQWtnRzJvaUczUWdDM1pCQVhScUlna3RBQUVoSWlBRUlBa3RBQUE2QUFFZ0NDQU5haUVHUVFNaENRSi9JQlFnSVVrRVFFRURJUTBnQmd3QkN5QVVJQVpCQTNackloUW9BQUFoR0VFQUlRMGdCa0VIY1FzaENDQUhJQkJxSVFZZ0V5QWdTUVIvSUFZRklCTWdCa0VEZG1zaUV5Z0FBQ0VYUVFBaENTQUdRUWR4Q3lFSElBd2dHbW9oRENBSklBMXlJUkJCQXlFTkFuOGdFaUFmU1FSQUlBd2hCa0VEREFFTElBeEJCM0VoQmlBU0lBeEJBM1pySWhJb0FBQWhGa0VBQ3lBYklDSnFJUXdnRUhJaEVDQVJJQjVKQkg4Z0RBVWdFU0FNUVFOMmF5SVJLQUFBSVJWQkFDRU5JQXhCQjNFTElRa2dCRUVDYWlFRUlBSkJBbW9oQWlBRFFRSnFJUU1nQUVFQ2FpRUFJQTBnRUhKRklRME1BUXNMSUFVZ0J6WUNMQ0FGSUFnMkFrQWdCU0FHTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBQWdEa3NnQXlBUFMzSU5BRUZzSVFrZ0FpQVpTdzBCSUE1QkEyc2hDUU5BSUFWQlBHb1FEeUFBSUFsUGNrVUVRQ0FLSUFVb0Fqd2lCaUFGS0FKQUlnZDBJQXQyUVFGMGFpSUlMUUFCSVF3Z0FDQUlMUUFBT2dBQUlBb2dCaUFISUF4cUlnWjBJQXQyUVFGMGFpSUhMUUFBSVFnZ0JTQUdJQWN0QUFGcU5nSkFJQUFnQ0RvQUFTQUFRUUpxSVFBTUFRc0xBMEFnQlVFOGFoQVBJUWNnQlNnQ1BDRUdJQVVvQWtBaENTQUFJQTVQSUFkeVJRUkFJQW9nQmlBSmRDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0NTQUdMUUFCYWpZQ1FDQUFJQWM2QUFBZ0FFRUJhaUVBREFFTEN3TkFJQUFnRGs5RkJFQWdDaUFHSUFsMElBdDJRUUYwYWlJSExRQUJJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdDV29oQ1F3QkN3c2dEMEVEYXlFQUEwQWdCVUVvYWhBUElBQWdBMDF5UlFSQUlBb2dCU2dDS0NJR0lBVW9BaXdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFESUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWl3Z0F5QUlPZ0FCSUFOQkFtb2hBd3dCQ3dzRFFDQUZRU2hxRUE4aEJ5QUZLQUlvSVFZZ0JTZ0NMQ0VBSUFNZ0QwOGdCM0pGQkVBZ0NpQUdJQUIwSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FBSUFZdEFBRnFOZ0lzSUFNZ0J6b0FBQ0FEUVFGcUlRTU1BUXNMQTBBZ0F5QVBUMFVFUUNBS0lBWWdBSFFnQzNaQkFYUnFJZ2N0QUFFaENDQURJQWN0QUFBNkFBQWdBMEVCYWlFRElBQWdDR29oQUF3QkN3c2dHVUVEYXlFREEwQWdCVUVVYWhBUElBSWdBMDl5UlFSQUlBb2dCU2dDRkNJR0lBVW9BaGdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFDSUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWhnZ0FpQUlPZ0FCSUFKQkFtb2hBZ3dCQ3dzRFFDQUZRUlJxRUE4aEJ5QUZLQUlVSVFZZ0JTZ0NHQ0VESUFJZ0dVOGdCM0pGQkVBZ0NpQUdJQU4wSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FESUFZdEFBRnFOZ0lZSUFJZ0J6b0FBQ0FDUVFGcUlRSU1BUXNMQTBBZ0FpQVpUMFVFUUNBS0lBWWdBM1FnQzNaQkFYUnFJZ2N0QUFFaENDQUNJQWN0QUFBNkFBQWdBa0VCYWlFQ0lBTWdDR29oQXd3QkN3c0RRQ0FGRUE4Z0JDQWRUM0pGQkVBZ0NpQUZLQUlBSWdJZ0JTZ0NCQ0lHZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FLSUFJZ0JpQUlhaUlDZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQWlBR0xRQUJhallDQkNBRUlBYzZBQUVnQkVFQ2FpRUVEQUVMQ3dOQUlBVVFEeUVISUFVb0FnQWhCaUFGS0FJRUlRSWdCQ0FjVHlBSGNrVUVRQ0FLSUFZZ0FuUWdDM1pCQVhScUlnWXRBQUFoQnlBRklBSWdCaTBBQVdvMkFnUWdCQ0FIT2dBQUlBUkJBV29oQkF3QkN3c0RRQ0FFSUJ4UFJRUkFJQW9nQmlBQ2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBRVFRRnFJUVFnQWlBSWFpRUNEQUVMQzBGc1FXeEJiRUZzUVd4QmJFRnNRV3dnQVNBQ1FTQkhHeUFGS0FJSUlBVW9BZ3hIR3lBRFFTQkhHeUFGS0FJY0lBVW9BaUJIR3lBQVFTQkhHeUFGS0FJd0lBVW9BalJIR3lBSlFTQkhHeUFGS0FKRUlBVW9Ba2hIR3lFSkRBRUxRV3doQ1FzZ0JVSFFBR29rQUNBSkMxZ0JBMzhDUUNBQUtBS1E2d0VpQVVVTkFDQUJLQUlBSUFGQnROVUJhaWdDQUNJQ0lBRkJ1TlVCYWlnQ0FDSURFQk1nQWdSQUlBTWdBU0FDRVFJQURBRUxJQUVRQmdzZ0FFRUFOZ0tnNndFZ0FFSUFOd09RNndFTDZRTUNCSDhDZmlBQVFRQkJLQkFESVFRZ0FrRUJRUVVnQXhzaUFFa0VRQ0FBRHdzZ0FVVUVRRUYvRHd0QkFTRUdBa0FDUUNBRFFRRkdEUUFnQXlFR0lBRW9BQUFpQlVHbzZyNXBSZzBBUVhZaEF5QUZRWEJ4UWREVXRNSUJSdzBCUVFnaEF5QUNRUWhKRFFFZ0FUVUFCQ0VJSUFSQkFUWUNGQ0FFSUFnM0F3QkJBQThMSUFFZ0FpQUdFQm9pQXlBQ1N3MEFJQVFnQXpZQ0dFRnlJUU1nQUNBQmFpSUZRUUZyTFFBQUlnSkJDSEVOQUNBQ1FTQnhJZ1pGQkVCQmNDRURJQVV0QUFBaUJVR25BVXNOQVNBRlFRZHhyVUlCSUFWQkEzWkJDbXF0aGlJSVFnT0lmaUFJZkNFSklBQkJBV29oQUFzZ0FrRUdkaUVGSUFKQkFuWkJBQ0VEQWtBQ1FBSkFBa0FnQWtFRGNVRUJhdzREQUFFQ0F3c2dBQ0FCYWkwQUFDRURJQUJCQVdvaEFBd0NDeUFBSUFGcUx3QUFJUU1nQUVFQ2FpRUFEQUVMSUFBZ0FXb29BQUFoQXlBQVFRUnFJUUFMUVFGeElRSUNmZ0pBQWtBQ1FBSkFJQVZCQVdzT0F3RUNBd0FMUW44Z0JrVU5BeG9nQUNBQmFqRUFBQXdEQ3lBQUlBRnFNd0FBUW9BQ2ZBd0NDeUFBSUFGcU5RQUFEQUVMSUFBZ0FXb3BBQUFMSVFnZ0JDQUNOZ0lnSUFRZ0F6WUNIQ0FFSUFnM0F3QkJBQ0VESUFSQkFEWUNGQ0FFSUFnZ0NTQUdHeUlJTndNSUlBUkNnSUFJSUFnZ0NFS0FnQWhhR3o0Q0VBc2dBd3RmQVFGL1FiaC9JUU1nQVVFQlFRVWdBaHNpQWs4RWZ5QUFJQUpxUVFGckxRQUFJZ0JCQTNGQkFuUkJvQjVxS0FJQUlBSnFJQUJCQkhaQkRIRkJzQjVxS0FJQWFpQUFRU0J4SWdGRmFpQUJRUVYySUFCQndBQkpjV29GUWJoL0N3c01BQ0FBSUFFZ0FrRUFFQmtMbHdNQ0JYOENmaU1BUVVCcUlnUWtBQUpBQTBBZ0FVRUZUd1JBQWtBZ0FDZ0FBRUZ3Y1VIUTFMVENBVVlFUUVKK0lRY2dBVUVJU1EwRUlBQW9BQVFpQWtGM1N3MEVJQUpCQ0dvaUF5QUJTdzBFSUFKQmdYOUpEUUVNQkFzZ0JFRVlhaUFBSUFFUUd5RUNRbjRnQkNrREdFSUFJQVFvQWl4QkFVY2JJQUliSWdkQ2ZWWU5BeUFISUFoOElnZ2dCMVJDZmlFSERRTUNRQUpBSUFGQkNFa05BQ0FBS0FBQVFYQnhRZERVdE1JQlJ3MEFJQUFvQUFRaUFrRjNTdzBGUWJoL0lBSkJDR29pQWlBQklBSkpHeUVEREFFTElBUkJHR29nQUNBQkVCc2lBa0dJZjBzRVFDQUNJUU1NQVF0QnVIOGhBeUFDRFFBZ0FTQUVLQUl3SWdKcklRVWdBQ0FDYWlFR0EwQWdCaUFGSUFSQkRHb1FIU0lEUVloL1N3MEJJQU5CQTJvaUFpQUZTd1JBUWJoL0lRTU1BZ3NnQlNBQ2F5RUZJQUlnQm1vaEJpQUVLQUlRUlEwQUN5QUVLQUk0Qkg5QnVIOGhBeUFGUVFSSkRRRWdCa0VFYWdVZ0Jnc2dBR3NoQXdzZ0EwR0lmMHNOQXdzZ0FTQURheUVCSUFBZ0Eyb2hBQXdCQ3d0Q2ZpQUlJQUViSVFjTElBUkJRR3NrQUNBSEMyUUJBWDlCdUg4aEF3SkFJQUZCQTBrTkFDQUFMUUFDSVFFZ0FpQUFMd0FBSWdCQkFYRTJBZ1FnQWlBQVFRRjJRUU54SWdNMkFnQWdBaUFBSUFGQkVIUnlRUU4ySWdBMkFnZ0NRQUpBSUFOQkFXc09Bd0lCQUFFTFFXd1BDeUFBSVFNTElBTUxSQUVDZnlBQklBSW9BZ1FpQXlBQktBSUVhaUlFTmdJRUlBQWdBMEVDZEVHZ0hXb29BZ0FnQVNnQ0FFRUFJQVJyZG5FMkFnQWdBUkFQR2lBQUlBSkJDR28yQWdRTHpnRUJCbjlCdW44aENnSkFJQUlvQWdRaUNDQUNLQUlBSWdscUlnMGdBU0FBYTBzTkFFRnNJUW9nQ1NBRUlBTW9BZ0FpQzJ0TERRQWdBQ0FKYWlJRUlBSW9BZ2dpREdzaEFpQUFJQUZCSUdzaUFDQUxJQWxCQUJBZ0lBTWdDU0FMYWpZQ0FBSkFBa0FnQkNBRmF5QU1Ud1JBSUFJaEJRd0JDeUFNSUFRZ0JtdExEUUlnQnlBSElBSWdCV3NpQW1vaUFTQUlhazhFUUNBRUlBRWdDQkFLR2d3Q0N5QUNJQWhxSVFnZ0JDQUJRUUFnQW1zUUNpQUNheUVFQ3lBRUlBQWdCU0FJUVFFUUlBc2dEU0VLQ3lBS0M4Y0VBUUovSUFBZ0Eyb2hCZ0pBSUFOQkIwd0VRQU5BSUFBZ0JrOE5BaUFBSUFJdEFBQTZBQUFnQUVFQmFpRUFJQUpCQVdvaEFnd0FDd0FMSUFSQkFVWUVRQUpBSUFBZ0Ftc2lCVUVIVFFSQUlBQWdBaTBBQURvQUFDQUFJQUl0QUFFNkFBRWdBQ0FDTFFBQ09nQUNJQUFnQWkwQUF6b0FBeUFBSUFJZ0JVRUNkQ0lGUWNBZWFpZ0NBR29pQWlnQUFEWUFCQ0FDSUFWQjRCNXFLQUlBYXlFQ0RBRUxJQUFnQWlrQUFEY0FBQXNnQWtFSWFpRUNJQUJCQ0dvaEFBc2dBU0FHVHdSQUlBQWdBMm9oQVNBRVFRRkhJQUFnQW10QkQwcHlSUVJBQTBBZ0FDQUNLUUFBTndBQUlBSkJDR29oQWlBQVFRaHFJZ0FnQVVrTkFBd0RDd0FMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0EwRVJTUTBCSUFCQkVHb2hBQU5BSUFBZ0Fpa0FFRGNBQUNBQUlBSXBBQmczQUFnZ0FDQUNLUUFnTndBUUlBQWdBaWtBS0RjQUdDQUNRU0JxSVFJZ0FFRWdhaUlBSUFGSkRRQUxEQUVMQWtBZ0FDQUJTd1JBSUFBaEFRd0JDeUFCSUFCcklRVUNRQ0FFUVFGSElBQWdBbXRCRDBweVJRUkFJQUloQXdOQUlBQWdBeWtBQURjQUFDQURRUWhxSVFNZ0FFRUlhaUlBSUFGSkRRQUxEQUVMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0JVRVJTQTBBSUFCQkVHb2hBQ0FDSVFNRFFDQUFJQU1wQUJBM0FBQWdBQ0FES1FBWU53QUlJQUFnQXlrQUlEY0FFQ0FBSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUJCSUdvaUFDQUJTUTBBQ3dzZ0FpQUZhaUVDQ3dOQUlBRWdCazhOQVNBQklBSXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2hBZ3dBQ3dBTEM2NEhBZ1YvQVg0akFFR0FBV3NpRVNRQUlCRWdBellDZkVGL0lROENRQUpBQWtBQ1FBSkFJQUlPQkFFQUF3SUVDeUFHUlFSQVFiaC9JUThNQkF0QmJDRVBJQVV0QUFBaUFpQURTdzBESUFnZ0FrRUNkQ0lDYWlnQ0FDRURJQUlnQjJvb0FnQWhBaUFBUVFBNkFBc2dBRUlBTndJQUlBQWdBallDRENBQUlBTTZBQW9nQUVFQU93RUlJQUVnQURZQ0FFRUJJUThNQXdzZ0FTQUpOZ0lBUVFBaER3d0NDeUFLUlFSQVFXd2hEd3dDQzBFQUlROGdDMFVnREVFWlNISU5BVUVJSUFSMFFRaHFJUUJCQUNFREEwQWdBQ0FEVFEwQ0lBTkJRR3NoQXd3QUN3QUxRV3doRHlBUklCRkIvQUJxSUJGQitBQnFJQVVnQmhBTUlnTkJpSDlMRFFBZ0VTZ0NlQ0lDSUFSTERRQWdFU2dDZkVFQmFpRUpJQUJCQ0dvaEMwR0FnQUlnQW5SQkVIVWhCVUVCSVJCQkFTQUNkQ0lQUVFGcklnb2hFZ05BSUFrZ0RrY0VRQUpBSUJFZ0RrRUJkQ0lFYWk4QkFDSU1RZi8vQTBZRVFDQUxJQkpCQTNScUlBNDJBZ1FnRWtFQmF5RVNRUUVoREF3QkN5QVFRUUFnQlNBTXdVb2JJUkFMSUFRZ0RXb2dERHNCQUNBT1FRRnFJUTRNQVFzTElBQWdBallDQkNBQUlCQTJBZ0FDUUNBS0lCSkdCRUFnRFVIcUFHb2hCa0VBSVJCQkFDRU1BMEFnQ1NBUVJnUkFJQTlCQTNZZ0QwRUJkbXBCQTJvaUJVRUJkQ0VFUVFBaERFRUFJUklEUUVFQUlRNGdEeUFTVFEwRUEwQWdEa0VDUndSQUlBc2dCU0FPYkNBTWFpQUtjVUVEZEdvZ0JpQU9JQkpxYWkwQUFEWUNCQ0FPUVFGcUlRNE1BUXNMSUJKQkFtb2hFaUFFSUF4cUlBcHhJUXdNQUFzQUJTQVJJQkJCQVhScUxnRUFJUVVnQmlBTWFpSUVJQk0zQUFCQkNDRU9BMEFnQlNBT1NnUkFJQVFnRG1vZ0V6Y0FBQ0FPUVFocUlRNE1BUXNMSUJOQ2dZS0VpSkNnd0lBQmZDRVRJQkJCQVdvaEVDQUZJQXhxSVF3TUFRc0FDd0FMSUE5QkEzWWdEMEVCZG1wQkEyb2hCVUVBSVJCQkFDRU9BMEFnQ1NBUVJnMEJRUUFoRENBUklCQkJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBTVJ3UkFJQXNnRGtFRGRHb2dFRFlDQkFOQUlBVWdEbW9nQ25FaURpQVNTdzBBQ3lBTVFRRnFJUXdNQVFzTElCQkJBV29oRUF3QUN3QUxJQUpCQVdvaEJVRUFJUXdEUUNBTUlBOUhCRUFnRFNBTElBeEJBM1JxSWdrb0FnUWlCRUVCZEdvaUFpQUNMd0VBSWdaQkFXbzdBUUFnQ1NBRklBWm5RV0J6YWlJQ09nQURJQWtnQmlBQ2RDQVBhenNCQUNBSklBZ2dCRUVDZENJQ2FpZ0NBRG9BQWlBSklBSWdCMm9vQWdBMkFnUWdERUVCYWlFTURBRUxDeUFCSUFBMkFnQWdBeUVQQ3lBUlFZQUJhaVFBSUE4TDdWb0NPMzhHZmlNQVFlQUJheUlFSkFBQ1FFR3c3QWtRQlNJRlJRUkFRVUFoQnd3QkN5QUZRZ0EzQXZUcUFTQUZRUUEyQXNUckFTQUZRUUEyQXJUckFTQUZRZ0EzQXB6ckFTQUZRUUEyQXJqcEFTQUZRUUEyQXF6c0NTQUZRZ0EzQXRUckFTQUZRZ0EzQXF6ckFTQUZRZ0EzQTRqckFTQUZRZ0EzQXVUcUFTQUZRZ0EzQXVUckFTQUZRWUdBZ01BQU5nSzg2d0VnQlVJQU53S2s2d0VnQlVIODZnRnFRUUEyQWdBZ0JVR1E2d0ZxUWdBM0F3QWdCUkFZSUFWQnJOVUJhaUVVSUFWQitPc0JhaUVjSUFWQnNPb0JhaUVpSUFWQm9EQnFJU29nQlVHWUlHb2hLeUFGUWFqUUFHb2hIaUFGUVJCcUlTd2dCVUVJYWlFb0lBVkJCR29oTFNBRlFjRHBBV29oS1NBRlFZanJBV29nQkVHVUFXb2hMeUFFUVl3QmFpRXdJQVJCaEFGcUlURWdCRUhjQUdvaE1pQUVRZFFBYWlFeklBUkJ6QUJxSVRRZ0FDRWRBa0FDUUFKQUFrQUNRQU5BUVFGQkJTQUZLQUxrNmdFYklRWUNRQU5BSUFNZ0Jra05BU0FDS0FBQVFYQnhRZERVdE1JQlJnUkFRYmgvSVFjZ0EwRUlTUTBJSUFJb0FBUWlEa0YzU3dSQVFYSWhCd3dKQ3lBRElBNUJDR29pQ1VrTkNDQU9RWUIvU3dSQUlBa2hCd3dKQ3lBRElBbHJJUU1nQWlBSmFpRUNEQUVMQ3lBRlFnQTNBcXpwQVNBRlFnQTNBK2pwQVNBRlFRQTJBcGpyQVNBRlFnQTNBNERxQVNBRlFnTTNBL2pwQVNBRlFiVHBBV3BDQURjQ0FDQUZRZkRwQVdwQ0FEY0RBQ0FGUWFqUUFHb2lDVUdNZ0lEZ0FEWUNBQ0FGUWF6UUFXcEI0QklwQWdBM0FnQWdCVUcwMEFGcVFlZ1NLQUlBTmdJQUlBVWdCVUVRYWpZQ0FDQUZJQVZCb0RCcU5nSUVJQVVnQlVHWUlHbzJBZ2dnQlNBSk5nSU1JQVZCQVVFRklBVW9BdVRxQVJzMkFyenBBUUpBSUFGRkRRQWdCU2dDck9rQklna2dIVVlOQUNBRklBazJBcmpwQVNBRklCMDJBcXpwQVNBRktBS3c2UUVoRGlBRklCMDJBckRwQVNBRklCMGdEaUFKYTJvMkFyVHBBUXRCdUg4aENTQURRUVZCQ1NBRktBTGs2Z0VpQmh0SkRRVWdBa0VCUVFVZ0Joc2dCaEFhSWc1QmlIOUxCRUFnRGlFSkRBVUxJQU1nRGtFRGFra05CU0FwSUFJZ0RpQUdFQmtpQmtHSWYwc0VRQ0FHSVFrTUJRc2dCZzBGQWtBQ1FDQUZLQUtvNndGQkFVY05BQ0FGS0FLazZ3RWlDVVVOQUNBRktBS1U2d0ZGRFFBZ0NTZ0NCRUVCYXlJSElBVW9BdHpwQVNJS3JVS0hsYSt2bUxiZW01NS9ma0xKejlteThlVzY2aWVGUWhlSlFzL1cwNzdTeDZ2WlFuNUMrZlBkOFpuMm1hc1dmQ0kvUWlHSUlEK0ZRcy9XMDc3U3g2dlpRbjRpUDBJZGlDQS9oVUw1ODkzeG1mYVpxeForSWo5Q0lJZ2dQNFduY1NFR0lBa29BZ0FoRlFOQVFRQWhDQUpBSUJVZ0JrRUNkR29vQWdBaUNVVU5BQ0FKS0FJSVFRaEpEUUFnQ1NnQ0JDSVNLQUFBUWJmSXd1RitSdzBBSUJJb0FBUWhDQXNnQ0NBS1J3UkFJQVlnQjNGQkFXb2hCaUFJRFFFTEN5QUpSUTBBSUFVUUdDQUZRWDgyQXFEckFTQUZJQWsyQXBUckFTQUZJQVVvQXR6cEFTSUlOZ0tZNndFTUFRc2dCU2dDM09rQklRZ0xBa0FnQ0VVTkFDQUZLQUtZNndFZ0NFWU5BRUZnSVFrTUJnc0NRQ0FGS0FMZzZRRUVRQ0FGSUFVb0F1anFBU0lKUlRZQzdPb0JJQWtOQVNBRlF2bnEwTkRueWFIazRRQTNBNmpxQVNBRlFnQTNBNkRxQVNBRlFzL1cwNzdTeDZ2WlFqY0RtT29CSUFWQzF1dUM3dXI5aWZYZ0FEY0RrT29CSUFWQ0FEY0RpT29CSUNKQkFFRW9FQU1hREFFTElBVkJBRFlDN09vQkN5QUJJQjFxSVNVZ0JTQUZLUVBvNlFFZ0RxMThOd1BvNlFFZ0F5QU9heUVESUFJZ0Rtb2hBaUFkSVE0RFFDQUNJQU1nQkVFc2FoQWRJaFZCaUg5TEJFQWdGU0VKREFZTElBTkJBMnNpTlNBVlNRMEVJQUpCQTJvaEcwRnNJUWtDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUlzRGdNQ0FRQVZDeUFWUWYvL0Iwc05FeUFWUVFOSkRSSWdCU2tEeU9rQklUOENRQUpBSUJzdEFBQWlDVUVEY1NJYVFRRnJEZ01HQVFBSEN5QUZLQUtBNmdFTkFFRmlJUWtNRlFzZ0ZVRUZTUTBTSUJzb0FBQWhBd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRWlDVUVDYXc0Q0FRSUFDeUFKUVFCSElRY2dBMEVFZGtIL0IzRWhDMEVESVFZZ0EwRU9ka0gvQjNFTUFndEJCQ0VHSUFOQkJIWkIvLzhBY1NFTFFRRWhCeUFEUVJKMkRBRUxJQU5CQkhaQi8vOFBjU0lMUVlDQUNFc05FMEVCSVFkQkJTRUdJQUl0QUFkQkNuUWdBMEVXZG5JTElnZ2dCbW9pQ1NBVlN3MFNBa0FnQzBHQkJra05BQ0FGS0FLYzZ3RkZEUUJCQUNFREEwQWdBMEdEZ0FGTERRRWdBMEZBYXlFRERBQUxBQXNnQmlBYmFpRVBJQnBCQTBjTkJpQUZLQUlNSWdJdEFBRkJDSFFoQXlBSERRY2dBMFVOQ0NBRVFmQUFhaUFQSUFnUURTSURRWWgvU3cwSklBSkJCR29oQmlBTElCeHFJaEpCQTJzaENrRUFJQUl2QVFKclFSOXhJUWNnSENFREEwQWdCRUh3QUdvUUQwVWdBeUFLU1hFRVFDQURJQVlnQkNnQ2NDSUlJQVFvQW5RaUQzUWdCM1pCQW5ScUlnSXZBUUE3QUFBZ0F5QUNMUUFEYWlJRElBWWdDQ0FQSUFJdEFBSnFJZ2gwSUFkMlFRSjBhaUlDTHdFQU93QUFJQVFnQ0NBQ0xRQUNhallDZENBRElBSXRBQU5xSVFNTUFRVWdFa0VDYXlFSUEwQWdCRUh3QUdvUUR5RVBJQVFvQW5BaENpQUVLQUowSVFJZ0F5QUlTeUFQY2tVRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUNpOEJBRHNBQUNBRUlBSWdDaTBBQW1vMkFuUWdBeUFLTFFBRGFpRUREQUVMQ3dOQUlBTWdDRTBFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pRHk4QkFEc0FBQ0FESUE4dEFBTnFJUU1nQWlBUExRQUNhaUVDREFFTEN3SkFJQU1nRWs4TkFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUF5MEFBRG9BQUNBRExRQURRUUZHQkVBZ0FpQURMUUFDYWlFQ0RBRUxJQUpCSDBzTkFFRWdJQUlnQXkwQUFtb2lBaUFDUVNCUEd5RUNDMEZzUVd3Z0N5QUVLQUo0SUFRb0FueEhHeUFDUVNCSEd5RUREQXNMQUFzQUN5QUVLQUkwSWdJZ0pTQU9hMHNOQ2lBT1JRUkFRUUFoQ1NBQ0RRSU1EZ3NnRGlBYkxRQUFJQUlRQXhvZ0FpRUpEQXdMSUJVZ0pTQU9hMHNOQ1NBT0RRRkJBQ0VKSUJWRkRRd0xRYlovSVFrTUVRc2dEaUFiSUJVUUFob2dGU0VKREFvTElCd2dHd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRkJBV3NPQXdFQUFnQUxJQWxCQTNZaEEwRUJEQUlMSUJzdkFBQkJCSFloQTBFQ0RBRUxJQlZCQkVrTkRpQUNMd0FESUFJdEFBVkJFSFJ5SWdKQmo0Q0FBVXNORGlBQ1FRUjJJUU5CQXdzaUFtb3RBQUFnQTBFZ2FoQURJUWtnQlNBRE5nS0E2d0VnQlNBSk5nTHc2Z0VnQWtFQmFpRUpEQVVMSUJVQ2Z3SkFBa0FDUUNBSlFRSjJRUU54UVFGckRnTUJBQUlBQ3lBSlFRTjJJUU5CQVF3Q0N5QWJMd0FBUVFSMklRTkJBZ3dCQ3lBQ0x3QURJQUl0QUFWQkVIUnlRUVIySVFOQkF3c2lBaUFEYWlJSlFTQnFTUVJBSUFrZ0ZVc05EU0FjSUFJZ0cyb2dBeEFDSVFJZ0JTQUROZ0tBNndFZ0JTQUNOZ0x3NmdFZ0FpQURhaUlDUWdBM0FCZ2dBa0lBTndBUUlBSkNBRGNBQ0NBQ1FnQTNBQUFNQlFzZ0JTQUROZ0tBNndFZ0JTQUNJQnRxTmdMdzZnRU1CQXNnQjBVRVFDQWVJQThnQ0NBVUVCUWlBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRlNFRERBTUxJQXRGSUFoRmNnMExJQXRCQ0hZaUF5QUlJQXRKQkg4Z0NFRUVkQ0FMYmdWQkR3dEJHR3dpQWtHTUNHb29BZ0JzSUFKQmlBaHFLQUlBYWlJR1FRTjJJQVpxSUFKQmdBaHFLQUlBSUFKQmhBaHFLQUlBSUFOc2Fra0VRQ01BUVJCckloQWtBQ0FlS0FJQUlRTWdGRUh3QkdwQkFFSHNBQkFESVFaQlZDRUNBa0FnQTBIL0FYRWlERUVNU3cwQUFrQWdGRUhjQ1dvZ0JpQVFRUWhxSUJCQkRHb2dEeUFJSUJSQjNBdHFJaGNRQ3lJU1FZaC9TdzBBSUJBb0Fnd2lCaUFNU3cwQklCUkJxQVZxSVEwZ0ZFR2tCV29oTmlBZVFRUnFJUkVnQTBHQWdJQjRjU0UzSUFaQkFXb2lFeUVDSUFZaEF3TkFJQUlpQjBFQmF5RUNJQU1pQ2tFQmF5RURJQlFnQ2tFQ2RHb29BdkFFUlEwQUMwRUJJQWNnQjBFQlRSc2hGa0VBSVFkQkFTRUNBMEFnQWlBV1J3UkFJQlFnQWtFQ2RDSURhaWdDOEFRaEdDQURJQTFxSUFjMkFnQWdBa0VCYWlFQ0lBY2dHR29oQnd3QkN3c2dEU0FITmdJQVFRQWhBaUFRS0FJSUlRTURRQ0FDSUFOSEJFQWdEU0FDSUJScVFkd0phaTBBQUNJWVFRSjBhaUlaSUJrb0FnQWlHVUVCYWpZQ0FDQVVJQmxCQVhScUloa2dHRG9BM1FVZ0dTQUNPZ0RjQlNBQ1FRRnFJUUlNQVFzTFFRQWhBeUFOUVFBMkFnQWdEQ0FHUVg5emFpRUdRUUVoQWdOQUlBSWdGa2NFUUNBVUlBSkJBblJxSWcwZ0F6WUNBQ0FOS0FMd0JDQUNJQVpxZENBRGFpRURJQUpCQVdvaEFnd0JDd3NnRENBVElBcHJJZ1pyUVFGcUlRb2dCaUVEQTBBZ0F5QUtTUVJBSUJRZ0EwRTBiR29oRFVFQklRSURRQ0FDSUJaSEJFQWdEU0FDUVFKMEloaHFJQlFnR0dvb0FnQWdBM1kyQWdBZ0FrRUJhaUVDREFFTEN5QURRUUZxSVFNTUFRc0xJQmNnRkVFMEVBSWhPQ0FVUVpBTWFpRTVJQk1nREdzaE9pQVVRZHdGYWlFWFFRQWhDZ05BQWtBQ1FDQUhJQXBIQkVCQkFTQU1JQk1nRnlBS1FRRjBhaUlDTFFBQklnMXJJZ05ySWhoMElSa2dBaTBBQUNFV0lEZ2dEVUVDZEdvaUh5Z0NBQ0VDSUFZZ0dFMEVRQ0EyUVFFZ0F5QTZhaUlOSUExQkFVd2JJaUJCQW5RaUpHb29BZ0FoRFNBNUlCUWdBMEUwYkdwQk5CQUNJU0VnRFVFQmRDRW1JQkVnQWtFQ2RHb2hJeUFnUVFGTkRRSWdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVnSUNFZ0pHb29BZ0FoSkVFQUlRSURRQ0FDSUNSR0RRTWdJeUFDUVFKMGFpQWdOZ0VBSUFKQkFXb2hBZ3dBQ3dBTElBSWdBaUFaYWlJTklBSWdEVXNiSVEwZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRURBMEFnQWlBTlJnMERJQkVnQWtFQ2RHb2dBellCQUNBQ1FRRnFJUUlNQUFzQUN5QWVJQXhCRUhRZ04zSWdESEpCZ0FKeU5nSUFEQU1MSUFjZ0RXc2hKQ0FYSUNacUlTWkJBQ0VOQTBBZ0RTQWtSZzBCUVFFZ0dDQVRJQ1lnRFVFQmRHb2lKeTBBQVNJQ2F5STdhM1FpUENBaElBSkJBblJxSWlBb0FnQWlBbW9oUFNBRElEdHFRUkIwUVlDQS9BZHhJQ2N0QUFCQkNIUnlJQlp5UVlDQWdCQnlJU2NEUUNBaklBSkJBblJxSUNjMkFRQWdBa0VCYWlJQ0lEMUpEUUFMSUNBZ0lDZ0NBQ0E4YWpZQ0FDQU5RUUZxSVEwTUFBc0FDeUFmSUI4b0FnQWdHV28yQWdBZ0NrRUJhaUVLREFBTEFBc2dFaUVDQ3lBUVFSQnFKQUFnQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZpRUREQU1MSUI0Z0R5QUlJQlFRRkNJQ1FZaC9TeUFDSUFoUGNnMExJQndnQ3lBQ0lBOXFJQWdnQW1zZ0hoQVhJUU1NQWdzZ0F3UkFJQndnQ3lBUElBZ2dBaEFXSVFNTUFnc2dIQ0FMSUE4Z0NDQUNFQmNoQXd3QkN5QWNJQXNnRHlBSUlBSVFGU0VEQ3lBRFFZaC9TdzBJSUFVZ0N6WUNnT3NCSUFVZ0hEWUM4T29CSUFWQkFUWUNnT29CSUJwQkFrWUVRQ0FGSUI0MkFnd0xJQXNnSEdvaUFrSUFOd0FBSUFKQ0FEY0FHQ0FDUWdBM0FCQWdBa0lBTndBSUlBbEJpSDlMRFFvTElBa2dGVVlOQ0NBVklBbHJJUVlnQlNnQ25Pc0JJUW9DUUNBSklCdHFJZ010QUFBaUQwVUVRRUVCSVFKQkFDRVBRYmgvSVFrZ0JrRUJSZzBCREFzTEFuOGdBMEVCYWlBUHdDSUNRUUJPRFFBYUlBSkJmMFlFUUNBR1FRTklEUXNnQXk4QUFVR0EvZ0ZxSVE4Z0EwRURhZ3dCQ3lBR1FRSklEUW9nQXkwQUFTQVBRUWgwY2tHQWdBSnJJUThnQTBFQ2Fnc2hFa0c0ZnlFSklCSkJBV29pQWlBVklCdHFJZ2RMRFFvZ0xDQUZJQkl0QUFBaUVrRUdka0VqUVFrZ0FpQUhJQUpyUWNBUVFkQVJRZkFTSUFVb0FvVHFBU0FLSUE4Z0ZCQWhJZ2xCaUg5TERRZ2dLeUFvSUJKQkJIWkJBM0ZCSDBFSUlBSWdDV29pQWlBSElBSnJRWUFMUVlBTVFZQVhJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQ0VHSWYwc05DRUZzSVFrZ0tpQXRJQkpCQW5aQkEzRkJORUVKSUFJZ0NHb2lBaUFISUFKclFZQU5RZUFPUVpBWklBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlCMEdJZjBzTkNpQUNJQWRxSUFOcklnSWhDU0FDUVloL1N3MEtDeUFPSUE5QkFFeHlEUUVMUWJwL0lRa01DQXNnSlNBT2F5RUpJQVlnQW1zaEJpQUNJQU5xSVFjQ1FBSkFBa0FnQ2tVRVFDQVBRUWxJSUFVcEE4anBBVUtCZ0lBSVZISU5BaUFvS0FJQUlnSkJDR29oRWlBQ0tBSUVJUXBCQUNFRFFRQWhBZ05BSUFNZ0NuWkZCRUFnQWlBU0lBTkJBM1JxTFFBQ1FSWkxhaUVDSUFOQkFXb2hBd3dCQ3dzZ0JVRUFOZ0tjNndFZ0FrRUlJQXByZEVFVVR3MEJEQU1MSUFWQkFEWUNuT3NCQ3lBRUlBVW9BdkRxQVNJRE5nTGNBU0FKSUE1cUlSWWdBeUFGS0FLQTZ3RnFJUmNDUUNBUFJRUkFJQTRoQnd3QkN5QUZLQUs0NlFFaEdpQUZLQUswNlFFaEdDQUZLQUt3NlFFaEVpQUZRUUUyQW9UcUFVRUFJUU1EUUNBRFFRTkhCRUFnQkNBRFFRSjBJZ0pxSUFJZ0JXcEJyTkFCYWlnQ0FEWUNaQ0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRVGhxSWdJZ0J5QUdFQTFCaUg5TERRTkJDQ0FQSUE5QkNFNGJJUjhnTkNBQ0lBVW9BZ0FRSGlBeklBSWdCU2dDQ0JBZUlESWdBaUFGS0FJRUVCNGdEaUFTYXlFWlFRQWhDQU5BSUFSQk9Hb1FEMEVEUmlBSUlCOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnZEJFSFlpRVVIL0FYRWhDeUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWd4QkVIWWlJVUgvQVhFaEVDQUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFZZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDa0gvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJS2F5SU5JQUlnQWlBTlN4c2lFeUFLYWpZQ1BDQUdJQVFvQWpnZ0NuUkJBQ0FUYTNZZ0FpQVRheUlUZEdvaENpQUVRVGhxRUE4YUlBSWdEVTBOQVNBRUlBUW9BandpQWlBVGFqWUNQQ0FFS0FJNElBSjBRUUFnRTJ0MklBcHFJUW9NQVFzZ0JDQUNJQVFvQWp3aURXbzJBandnQkNnQ09DQU5kRUVBSUFwcmRpQUdhaUVLSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUFvMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQURCRUFnQkNnQ1pDRUtEQU1MSUFRb0FtZ2hDZ3dCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFZZ0EwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnWkZJQVpxSVFvZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQW8yQW1RTHB5RUNJRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUJCcU5nSThJQVFvQWpnZ0JuUkJBQ0FoYTNZZ0Ftb2hBZ3NnQ3lBUWFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lBdHFOZ0k4SUFRb0FqZ2dCblJCQUNBUmEzWWdBMm9oQXdzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQmtFQUlBZEJHSFlpQ3lBRUtBSThhaUlRYTNZZ0MwRUNkRUdnSFdvb0FnQnhJQWRCLy84RGNXbzJBa3dnQkNBUUlBeEJHSFlpQjJvaUN6WUNQQ0FFSUFkQkFuUkJvQjFxS0FJQUlBWkJBQ0FMYTNaeElBeEIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdaQkdIWWlCeUFFS0FJOGFpSUxOZ0k4SUFRZ0IwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBdHJkbkVnQmtILy93TnhhallDVkNBRVFmQUFhaUFJUVF4c2FpSUdJQW8yQWdnZ0JpQUNOZ0lFSUFZZ0F6WUNBQ0FJUVFGcUlRZ2dBeUFaYWlBQ2FpRVpEQUVMQ3lBSUlCOUlEUU1nRmtFZ2F5RWhJQTRoQndOQUlBUkJPR29RRDBFRFJpQUlJQTlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ1pCRUhZaUkwSC9BWEVoQ2lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklnMUJFSFlpSUVIL0FYRWhFeUFFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRTWdRVUlnaUNCQVFpQ0lweUVMQWtBZ1FrSVFpS2NpREVIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSU1heUlSSUFJZ0FpQVJTeHNpRUNBTWFqWUNQQ0FESUFRb0FqZ2dESFJCQUNBUWEzWWdBaUFRYXlJTWRHb2hFQ0FFUVRocUVBOGFJQUlnRVUwTkFTQUVJQVFvQWp3aUFpQU1hallDUENBRUtBSTRJQUowUVFBZ0RHdDJJQkJxSVJBTUFRc2dCQ0FDSUFRb0Fqd2lFR28yQWp3Z0JDZ0NPQ0FRZEVFQUlBeHJkaUFEYWlFUUlBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlCQTJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FMQkVBZ0JDZ0NaQ0VRREFNTElBUW9BbWdoRUF3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBTWdDMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ05GSUFOcUlSQWdBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUJBMkFtUUxweUVNSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lCTnFOZ0k4SUFRb0FqZ2dBblJCQUNBZ2EzWWdER29oREFzZ0NpQVRha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQXBxTmdJOElBUW9BamdnQW5SQkFDQWphM1lnQzJvaEN3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUFrRUFJQVpCR0hZaUF5QUVLQUk4YWlJS2EzWWdBMEVDZEVHZ0hXb29BZ0J4SUFaQi8vOERjV28yQWt3Z0JDQUtJQTFCR0hZaUEyb2lCallDUENBRUlBTkJBblJCb0IxcUtBSUFJQUpCQUNBR2EzWnhJQTFCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnSkJHSFlpQXlBRUtBSThhaUlHTmdJOElBUWdBMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQVpyZG5FZ0FrSC8vd054YWpZQ1ZBSkFBa0FDUUNBRUtBTGNBU0lESUFSQjhBQnFJQWhCQjNGQkRHeHFJaE1vQWdBaUVXb2lJeUFYU3cwQUlBY2dFeWdDQkNJTklCRnFJZ3BxSUNGTERRQWdDa0VnYWlBV0lBZHJUUTBCQ3lBRUlCTW9BZ2cyQWhnZ0JDQVRLUUlBTndNUUlBY2dGaUFFUVJCcUlBUkIzQUZxSUJjZ0VpQVlJQm9RSHlFS0RBRUxJQWNnRVdvaEFpQVRLQUlJSVFZZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNBSkFJQkZCRVVrTkFDQUhJQU1wQUJBM0FCQWdCeUFES1FBWU53QVlJQkZCRUd0QkVVZ05BQ0FEUVJCcUlRTWdCMEVnYWlFUkEwQWdFU0FES1FBUU53QUFJQkVnQXlrQUdEY0FDQ0FSSUFNcEFDQTNBQkFnRVNBREtRQW9Od0FZSUFOQklHb2hBeUFSUVNCcUloRWdBa2tOQUFzTElBSWdCbXNoQXlBRUlDTTJBdHdCSUFJZ0Vtc2dCa2tFUUNBR0lBSWdHR3RMRFFjZ0dpQWFJQU1nRW1zaUEyb2lFU0FOYWs4RVFDQUNJQkVnRFJBS0dnd0NDeUFESUExcUlRMGdBaUFSUVFBZ0Eyc1FDaUFEYXlFQ0lCSWhBd3NnQmtFUVR3UkFJQUlnQXlrQUFEY0FBQ0FDSUFNcEFBZzNBQWdnRFVFUlNBMEJJQUlnRFdvaEJpQUNRUkJxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQUdTUTBBQ3d3QkN3SkFJQVpCQjAwRVFDQUNJQU10QUFBNkFBQWdBaUFETFFBQk9nQUJJQUlnQXkwQUFqb0FBaUFDSUFNdEFBTTZBQU1nQWlBRElBWkJBblFpQmtIQUhtb29BZ0JxSWdNb0FBQTJBQVFnQXlBR1FlQWVhaWdDQUdzaEF3d0JDeUFDSUFNcEFBQTNBQUFMSUExQkNVa05BQ0FDSUExcUlSRWdBa0VJYWlJR0lBTkJDR29pQTJ0QkQwd0VRQU5BSUFZZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQmtFSWFpSUdJQkZKRFFBTUFnc0FDeUFHSUFNcEFBQTNBQUFnQmlBREtRQUlOd0FJSUExQkdVZ05BQ0FDUVJocUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFSU1EwQUN3c2dDa0dJZjBzRVFDQUtJUWtNQmdVZ0V5QVFOZ0lJSUJNZ0REWUNCQ0FUSUFzMkFnQWdDRUVCYWlFSUlBY2dDbW9oQnlBTElCbHFJQXhxSVJrTUFnc0FDd3NnQ0NBUFNBMERJQWdnSDJzaEJnTkFBa0FnQmlBUFRnUkFRUUFoQXdOQUlBTkJBMFlOQWlBRklBTkJBblFpQW1wQnJOQUJhaUFDSUFScUtBSmtOZ0lBSUFOQkFXb2hBd3dBQ3dBTEFrQUNRQUpBSUFRb0F0d0JJZ01nQkVId0FHb2dCa0VIY1VFTWJHb2lDQ2dDQUNJTWFpSVFJQmRMRFFBZ0J5QUlLQUlFSWdzZ0RHb2lDbW9nSVVzTkFDQUtRU0JxSUJZZ0IydE5EUUVMSUFRZ0NDZ0NDRFlDS0NBRUlBZ3BBZ0EzQXlBZ0J5QVdJQVJCSUdvZ0JFSGNBV29nRnlBU0lCZ2dHaEFmSVFvTUFRc2dCeUFNYWlFQ0lBZ29BZ2doQ0NBSElBTXBBQUEzQUFBZ0J5QURLUUFJTndBSUFrQWdERUVSU1EwQUlBY2dBeWtBRURjQUVDQUhJQU1wQUJnM0FCZ2dERUVRYTBFUlNBMEFJQU5CRUdvaEF5QUhRU0JxSVF3RFFDQU1JQU1wQUJBM0FBQWdEQ0FES1FBWU53QUlJQXdnQXlrQUlEY0FFQ0FNSUFNcEFDZzNBQmdnQTBFZ2FpRURJQXhCSUdvaURDQUNTUTBBQ3dzZ0FpQUlheUVESUFRZ0VEWUMzQUVnQWlBU2F5QUlTUVJBSUFnZ0FpQVlhMHNOQnlBYUlCb2dBeUFTYXlJRGFpSU1JQXRxVHdSQUlBSWdEQ0FMRUFvYURBSUxJQU1nQzJvaEN5QUNJQXhCQUNBRGF4QUtJQU5ySVFJZ0VpRURDeUFJUVJCUEJFQWdBaUFES1FBQU53QUFJQUlnQXlrQUNEY0FDQ0FMUVJGSURRRWdBaUFMYWlFSUlBSkJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBSWdBeTBBQURvQUFDQUNJQU10QUFFNkFBRWdBaUFETFFBQ09nQUNJQUlnQXkwQUF6b0FBeUFDSUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQUlnQXlrQUFEY0FBQXNnQzBFSlNRMEFJQUlnQzJvaERDQUNRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dERWtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQzBFWlNBMEFJQUpCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXhKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdHQlNBR1FRRnFJUVlnQnlBS2FpRUhEQUlMQUFzTElBUW9BdHdCSVFNTFFicC9JUWtnRnlBRGF5SUNJQllnQjJ0TERRSWdCd1IvSUFjZ0F5QUNFQUlnQW1vRlFRQUxJQTVySVFrTUFnc2dCVUVBTmdLYzZ3RUxJQVFnQlNnQzhPb0JJZ00yQXR3QklBa2dEbW9oRENBRElBVW9Bb0RyQVdvaEVBSkFJQTlGQkVBZ0RpRUdEQUVMSUFVb0FyanBBU0VOSUFVb0FyVHBBU0VUSUFVb0FyRHBBU0VTSUFWQkFUWUNoT29CUVFBaEF3TkFJQU5CQTBjRVFDQUVJQU5CQW5RaUFtb2dBaUFGYWtHczBBRnFLQUlBTmdLY0FTQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFmQUFhaUlDSUFjZ0JoQU5RWWgvU3cwQklERWdBaUFGS0FJQUVCNGdNQ0FDSUFVb0FnZ1FIaUF2SUFJZ0JTZ0NCQkFlSUF4QklHc2hHQ0FPSVFZRFFDQUVLQUtJQVNBRUtBS0VBVUVEZEdvcEFnQWlRS2NpQ2tFUWRpSVpRZjhCY1NFTElBUW9BcGdCSUFRb0FwUUJRUU4wYWlrQ0FDSkJweUlXUVJCMkloOUIvd0Z4SVJvZ0JDZ0NrQUVnQkNnQ2pBRkJBM1JxS1FJQUlrSkNJSWluSVFjZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDRUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDZENJSWF5SVJJQUlnQWlBUlN4c2lGeUFJYWpZQ2RDQUhJQVFvQW5BZ0NIUkJBQ0FYYTNZZ0FpQVhheUlYZEdvaENDQUVRZkFBYWhBUEdpQUNJQkZORFFFZ0JDQUVLQUowSWdJZ0YybzJBblFnQkNnQ2NDQUNkRUVBSUJkcmRpQUlhaUVJREFFTElBUWdBaUFFS0FKMEloRnFOZ0owSUFRb0FuQWdFWFJCQUNBSWEzWWdCMm9oQ0NBRVFmQUFhaEFQR2dzZ0JDa0NuQUVoUkNBRUlBZzJBcHdCSUFRZ1JEY0NvQUVNQVFzQ1FDQUNSUVJBSUFNRVFDQUVLQUtjQVNFSURBTUxJQVFvQXFBQklRZ01BUXNnQkNBRUtBSjBJZ0pCQVdvMkFuUUNmeUFISUFORmFpQUVLQUp3SUFKMFFSOTJhaUlDUVFOR0JFQWdCQ2dDbkFGQkFXc01BUXNnQWtFQ2RDQUVhaWdDbkFFTElnZEZJQWRxSVFnZ0FrRUJSd1JBSUFRZ0JDZ0NvQUUyQXFRQkN3c2dCQ0FFS0FLY0FUWUNvQUVnQkNBSU5nS2NBUXVuSVFJZ1FVS0FnUHdIZzFCRkJFQWdCQ0FFS0FKMElnY2dHbW8yQW5RZ0JDZ0NjQ0FIZEVFQUlCOXJkaUFDYWlFQ0N5QUxJQnBxUVJSUEJFQWdCRUh3QUdvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NkQ0lISUF0cU5nSjBJQVFvQW5BZ0IzUkJBQ0FaYTNZZ0Eyb2hBd3NnQkVId0FHb1FEeG9nQkNBRUtBSndJZ2RCQUNBS1FSaDJJZ3NnQkNnQ2RHb2lHbXQySUF0QkFuUkJvQjFxS0FJQWNTQUtRZi8vQTNGcU5nS0VBU0FFSUJvZ0ZrRVlkaUlLYWlJTE5nSjBJQVFnQ2tFQ2RFR2dIV29vQWdBZ0IwRUFJQXRyZG5FZ0ZrSC8vd054YWpZQ2xBRWdCRUh3QUdvUUR4b2dCQ0JDcHlJSFFSaDJJZ29nQkNnQ2RHb2lDellDZENBRUlBcEJBblJCb0IxcUtBSUFJQVFvQW5CQkFDQUxhM1p4SUFkQi8vOERjV28yQW93QklBUWdBellDT0NBRUlBSTJBandnQkNBSU5nSkFBa0FDUUFKQUlBUW9BdHdCSWdzZ0Eyb2lGaUFRU3cwQUlBWWdBaUFEYWlJS2FpQVlTdzBBSUFwQklHb2dEQ0FHYTAwTkFRc2dCQ0FFUVVCcktBSUFOZ0lJSUFRZ0JDa0RPRGNEQUNBR0lBd2dCQ0FFUWR3QmFpQVFJQklnRXlBTkVCOGhDZ3dCQ3lBRElBWnFJUWNnQmlBTEtRQUFOd0FBSUFZZ0N5a0FDRGNBQ0FKQUlBTkJFVWtOQUNBR0lBc3BBQkEzQUJBZ0JpQUxLUUFZTndBWUlBTkJFR3RCRVVnTkFDQUxRUkJxSVFNZ0JrRWdhaUVMQTBBZ0N5QURLUUFRTndBQUlBc2dBeWtBR0RjQUNDQUxJQU1wQUNBM0FCQWdDeUFES1FBb053QVlJQU5CSUdvaEF5QUxRU0JxSWdzZ0Iwa05BQXNMSUFjZ0NHc2hBeUFFSUJZMkF0d0JJQWNnRW1zZ0NFa0VRQ0FJSUFjZ0UydExEUVFnRFNBTklBTWdFbXNpQTJvaUN5QUNhazhFUUNBSElBc2dBaEFLR2d3Q0N5QUhJQXRCQUNBRGF4QUtJQVFnQWlBRGFpSUNOZ0k4SUFOcklRY2dFaUVEQ3lBSVFSQlBCRUFnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0NBQ1FSRklEUUVnQWlBSGFpRUlJQWRCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQWNnQXkwQUFEb0FBQ0FISUFNdEFBRTZBQUVnQnlBRExRQUNPZ0FDSUFjZ0F5MEFBem9BQXlBSElBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFjZ0F5a0FBRGNBQUFzZ0FrRUpTUTBBSUFJZ0Iyb2hDeUFIUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnQzBrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0FrRVpTQTBBSUFkQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF0SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3REN5QUdJQXBxSVFZZ0JFSHdBR29RRHlFRElBOUJBV3NpRHcwQUMwRUFJUUlnQTBFQ1NRMEJBMEFnQWtFRFJ3UkFJQVVnQWtFQ2RDSURha0dzMEFGcUlBTWdCR29vQXB3Qk5nSUFJQUpCQVdvaEFnd0JDd3NnQkNnQzNBRWhBd3RCdW44aENTQVFJQU5ySWdJZ0RDQUdhMHNOQUNBR0JIOGdCaUFESUFJUUFpQUNhZ1ZCQUFzZ0Rtc2hDUXNnQ1VHSWYwc05CZ3NDUUNBRktBTHM2Z0ZGRFFBZ0JTQUZLUU9JNmdFZ0NhMThOd09JNmdFQ1FDQUZLQUxRNmdFaUFpQUphaUlJUVI5TkJFQWdEa1VOQVNBQ0lDSnFJQTRnQ1JBQ0dpQUZLQUxRNmdFZ0NXb2hDQXdCQ3lBT0lRTWdBZ1JBSUFJZ0ltb2dBMEVnSUFKckVBSWFJQVVvQXREcUFTRUNJQVZCQURZQzBPb0JJQVVnQlNrRGtPb0JJQVVwQUxEcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RrT29CSUFVZ0JTa0RtT29CSUFVcEFManFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEbU9vQklBVWdCU2tEb09vQklBVXBBTURxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG9Pb0JJQVVnQlNrRHFPb0JJQVVwQU1qcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RxT29CSUFNZ0FtdEJJR29oQXdzZ0NTQU9haUlDSUFOQklHcFBCRUFnQWtFZ2F5RUdJQVVwQTZqcUFTRS9JQVVwQTZEcUFTRkFJQVVwQTVqcUFTRkJJQVVwQTVEcUFTRkNBMEFnQXlrQUdFTFAxdE8rMHNlcjJVSitJRDk4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVDhnQXlrQUVFTFAxdE8rMHNlcjJVSitJRUI4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUFnQXlrQUNFTFAxdE8rMHNlcjJVSitJRUY4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUVnQXlrQUFFTFAxdE8rMHNlcjJVSitJRUo4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUlnQTBFZ2FpSURJQVpORFFBTElBVWdQemNEcU9vQklBVWdRRGNEb09vQklBVWdRVGNEbU9vQklBVWdRamNEa09vQkN5QUNJQU5ORFFFZ0lpQURJQUlnQTJzaUNCQUNHZ3NnQlNBSU5nTFE2Z0VMSURVZ0ZXc2hBeUFWSUJ0cUlRSWdDU0FPYWlFT0lBUW9BakJGRFFBTElDa3BBd0FpUDBKL1VTQS9JQTRnSFd1c1VYSkZCRUJCYkNFSkRBWUxJQVVvQXVEcEFRUkFRV29oQ1NBRFFRUkpEUVlnQlNnQzZPb0JSUVJBSUNJZ0JTZ0MwT29CYWlFS0FuNGdCU2tEaU9vQklqOUNJRm9FUUNBRktRT1k2Z0VpUUVJSGlTQUZLUU9RNmdFaVFVSUJpWHdnQlNrRG9Pb0JJa0pDRElsOElBVXBBNmpxQVNKRFFoS0pmQ0JCUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJRUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIMGdRa0xQMXRPKzBzZXIyVUorUWgrSlFvZVZyNitZdHQ2Ym5uOStoVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTQkRRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOURBRUxJQVVwQTZEcUFVTEZ6OW15OGVXNjZpZDhDeUEvZkNFL0lDSWhCZ05BSUFvZ0JrRUlhaUlIVHdSQUlBWXBBQUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9maUEvaFVJYmlVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNFL0lBY2hCZ3dCQ3dzQ1FDQUtJQVpCQkdvaUNFa0VRQ0FHSVFnTUFRc2dCalVBQUVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUlYaVVMUDF0Tyswc2VyMlVKK1F2bnozZkdaOXBtckZud2hQd3NEUUNBSUlBcEpCRUFnQ0RFQUFFTEZ6OW15OGVXNjZpZCtJRCtGUWd1SlFvZVZyNitZdHQ2Ym5uOStJVDhnQ0VFQmFpRUlEQUVMQ3lBQ0tBQUFJRDlDSVlnZ1A0VkN6OWJUdnRMSHE5bENmaUkvUWgySUlEK0ZRdm56M2ZHWjlwbXJGbjRpUDBJZ2lDQS9oYWRIRFFjTElBTkJCR3NoQXlBQ1FRUnFJUUlMSUE0Z0hXc2lDVUdKZjA4TkJDQUJJQWxySVFFZ0NTQWRhaUVkUVFFaFBnd0JDd3RCdUg4aEJ5QUREUVFnSFNBQWF5RUhEQVFMUVd3aENRd0JDMEc0ZnlFSkMwRzRmeUVISUFsQmRrWWdQbkVOQVFzZ0NTRUhDeWdDQUEwQUlBVkIvT29CYWlnQ0FDRUJJQVZCK09vQmFpZ0NBQ0VBSUFVUUdDQUZLQUt3NndFZ0FDQUJFQk1nQlVFQU5nS3c2d0VnQlNnQ3BPc0JJZ0lFUUFKQUFrQUNRQUpBSUFJb0FnQWlBd1JBSUFCRkRRSWdBU0FESUFBUkFnQU1BUXNnQUVVTkFnc2dBU0FDSUFBUkFnQU1BZ3NnQXhBR0N5QUNFQVlMSUFWQkFEWUNwT3NCQ3lBQUJFQWdBU0FGSUFBUkFnQU1BUXNnQlJBR0N5QUVRZUFCYWlRQUlBY0xDNmdWQ1FCQmlBZ0xEUUVBQUFBQkFBQUFBZ0FBQUFJQVFhQUlDN01HQVFBQUFBRUFBQUFDQUFBQUFnQUFBQ1lBQUFDQ0FBQUFJUVVBQUVvQUFBQm5DQUFBSmdBQUFNQUJBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFLUUFBQUN3Q0FBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUx3QUFBTW9DQUFDQUFBQUFpZ1VBQUVvQUFBQ0VDUUFBTlFBQUFITURBQUNBQUFBQW5RVUFBRW9BQUFDZ0NRQUFQUUFBQUlFREFBQ0FBQUFBNndVQUFFc0FBQUErQ2dBQVJBQUFBSjREQUFDQUFBQUFUUVlBQUVzQUFBQ3FDZ0FBU3dBQUFMTURBQUNBQUFBQXdRWUFBRTBBQUFBZkRRQUFUUUFBQUZNRUFBQ0FBQUFBSXdnQUFGRUFBQUNtRHdBQVZBQUFBSmtFQUFDQUFBQUFTd2tBQUZjQUFBQ3hFZ0FBV0FBQUFOb0VBQUNBQUFBQWJ3a0FBRjBBQUFBakZBQUFWQUFBQUVVRkFBQ0FBQUFBVkFvQUFHb0FBQUNNRkFBQWFnQUFBSzhGQUFDQUFBQUFkZ2tBQUh3QUFBQk9FQUFBZkFBQUFOSUNBQUNBQUFBQVl3Y0FBSkVBQUFDUUJ3QUFrZ0FBQUFBQUFBQUJBQUFBQVFBQUFBVUFBQUFOQUFBQUhRQUFBRDBBQUFCOUFBQUEvUUFBQVAwQkFBRDlBd0FBL1FjQUFQMFBBQUQ5SHdBQS9UOEFBUDEvQUFEOS93QUEvZjhCQVAzL0F3RDkvd2NBL2Y4UEFQMy9Id0Q5L3o4QS9mOS9BUDMvL3dEOS8vOEIvZi8vQS8zLy93ZjkvLzhQL2YvL0gvMy8vei85Ly85L0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQURBQUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBbEFBQUFKd0FBQUNrQUFBQXJBQUFBTHdBQUFETUFBQUE3QUFBQVF3QUFBRk1BQUFCakFBQUFnd0FBQUFNQkFBQURBZ0FBQXdRQUFBTUlBQUFERUFBQUF5QUFBQU5BQUFBRGdBQUFBd0FCQUVIZ0R3dFJBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCQUFBQUFVQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBRUhFRUF1TEFRRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVNBQUFBRkFBQUFCWUFBQUFZQUFBQUhBQUFBQ0FBQUFBb0FBQUFNQUFBQUVBQUFBQ0FBQUFBQUFFQUFBQUNBQUFBQkFBQUFBZ0FBQUFRQUFBQUlBQUFBRUFBQUFDQUFBQUFBQUVBUVpBU0MrWUVBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQUJBQUFBQkFBQUFBZ0FBQUFBQUFBQUFRQUJBUVlBQUFBQUFBQUVBQUFBQUJBQUFBUUFBQUFBSUFBQUJRRUFBQUFBQUFBRkF3QUFBQUFBQUFVRUFBQUFBQUFBQlFZQUFBQUFBQUFGQndBQUFBQUFBQVVKQUFBQUFBQUFCUW9BQUFBQUFBQUZEQUFBQUFBQUFBWU9BQUFBQUFBQkJSQUFBQUFBQUFFRkZBQUFBQUFBQVFVV0FBQUFBQUFDQlJ3QUFBQUFBQU1GSUFBQUFBQUFCQVV3QUFBQUlBQUdCVUFBQUFBQUFBY0ZnQUFBQUFBQUNBWUFBUUFBQUFBS0JnQUVBQUFBQUF3R0FCQUFBQ0FBQUFRQUFBQUFBQUFBQkFFQUFBQUFBQUFGQWdBQUFDQUFBQVVFQUFBQUFBQUFCUVVBQUFBZ0FBQUZCd0FBQUFBQUFBVUlBQUFBSUFBQUJRb0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFJQUFCQlJBQUFBQUFBQUVGRWdBQUFDQUFBUVVXQUFBQUFBQUNCUmdBQUFBZ0FBTUZJQUFBQUFBQUF3VW9BQUFBQUFBR0JFQUFBQUFRQUFZRVFBQUFBQ0FBQndXQUFBQUFBQUFKQmdBQ0FBQUFBQXNHQUFnQUFEQUFBQVFBQUFBQUVBQUFCQUVBQUFBZ0FBQUZBZ0FBQUNBQUFBVURBQUFBSUFBQUJRVUFBQUFnQUFBRkJnQUFBQ0FBQUFVSUFBQUFJQUFBQlFrQUFBQWdBQUFGQ3dBQUFDQUFBQVVNQUFBQUFBQUFCZzhBQUFBZ0FBRUZFZ0FBQUNBQUFRVVVBQUFBSUFBQ0JSZ0FBQUFnQUFJRkhBQUFBQ0FBQXdVb0FBQUFJQUFFQlRBQUFBQUFBQkFHQUFBQkFBQUFEd1lBZ0FBQUFBQU9CZ0JBQUFBQUFBMEdBQ0FBUVlBWEM0Y0NBUUFCQVFVQUFBQUFBQUFGQUFBQUFBQUFCZ1E5QUFBQUFBQUpCZjBCQUFBQUFBOEYvWDhBQUFBQUZRWDkveDhBQUFBREJRVUFBQUFBQUFjRWZRQUFBQUFBREFYOUR3QUFBQUFTQmYzL0F3QUFBQmNGL2Y5L0FBQUFCUVVkQUFBQUFBQUlCUDBBQUFBQUFBNEYvVDhBQUFBQUZBWDkvdzhBQUFBQ0JRRUFBQUFRQUFjRWZRQUFBQUFBQ3dYOUJ3QUFBQUFSQmYzL0FRQUFBQllGL2Y4L0FBQUFCQVVOQUFBQUVBQUlCUDBBQUFBQUFBMEYvUjhBQUFBQUV3WDkvd2NBQUFBQkJRRUFBQUFRQUFZRVBRQUFBQUFBQ2dYOUF3QUFBQUFRQmYzL0FBQUFBQndGL2YvL0R3QUFHd1g5Ly84SEFBQWFCZjMvL3dNQUFCa0YvZi8vQVFBQUdBWDkvLzhBUVpBWkM0WUVBUUFCQVFZQUFBQUFBQUFHQXdBQUFBQUFBQVFFQUFBQUlBQUFCUVVBQUFBQUFBQUZCZ0FBQUFBQUFBVUlBQUFBQUFBQUJRa0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFBQUFBQmhBQUFBQUFBQUFHRXdBQUFBQUFBQVlXQUFBQUFBQUFCaGtBQUFBQUFBQUdIQUFBQUFBQUFBWWZBQUFBQUFBQUJpSUFBQUFBQUFFR0pRQUFBQUFBQVFZcEFBQUFBQUFDQmk4QUFBQUFBQU1HT3dBQUFBQUFCQVpUQUFBQUFBQUhCb01BQUFBQUFBa0dBd0lBQUJBQUFBUUVBQUFBQUFBQUJBVUFBQUFnQUFBRkJnQUFBQUFBQUFVSEFBQUFJQUFBQlFrQUFBQUFBQUFGQ2dBQUFBQUFBQVlNQUFBQUFBQUFCZzhBQUFBQUFBQUdFZ0FBQUFBQUFBWVZBQUFBQUFBQUJoZ0FBQUFBQUFBR0d3QUFBQUFBQUFZZUFBQUFBQUFBQmlFQUFBQUFBQUVHSXdBQUFBQUFBUVluQUFBQUFBQUNCaXNBQUFBQUFBTUdNd0FBQUFBQUJBWkRBQUFBQUFBRkJtTUFBQUFBQUFnR0F3RUFBQ0FBQUFRRUFBQUFNQUFBQkFRQUFBQVFBQUFFQlFBQUFDQUFBQVVIQUFBQUlBQUFCUWdBQUFBZ0FBQUZDZ0FBQUNBQUFBVUxBQUFBQUFBQUJnNEFBQUFBQUFBR0VRQUFBQUFBQUFZVUFBQUFBQUFBQmhjQUFBQUFBQUFHR2dBQUFBQUFBQVlkQUFBQUFBQUFCaUFBQUFBQUFCQUdBd0FCQUFBQUR3WURnQUFBQUFBT0JnTkFBQUFBQUEwR0F5QUFBQUFBREFZREVBQUFBQUFMQmdNSUFBQUFBQW9HQXdRQVFhUWRDOWtCQVFBQUFBTUFBQUFIQUFBQUR3QUFBQjhBQUFBL0FBQUFmd0FBQVA4QUFBRC9BUUFBL3dNQUFQOEhBQUQvRHdBQS94OEFBUDgvQUFEL2Z3QUEvLzhBQVAvL0FRRC8vd01BLy84SEFQLy9Ed0QvL3g4QS8vOC9BUC8vZndELy8vOEEvLy8vQWYvLy93UC8vLzhILy8vL0QvLy8veC8vLy84Ly8vLy9md0FBQUFBQkFBQUFBZ0FBQUFRQUFBQUFBQUFBQWdBQUFBUUFBQUFJQUFBQUFBQUFBQUVBQUFBQ0FBQUFBUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dCQmdCOExBNEFSQVE9PSI7dmFyIEh0PW5ldyBWQSxxdD0hMTthc3luYyBmdW5jdGlvbiBZcihBLGUsdCl7bGV0IEk9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9JPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9JPUE6ST10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxJLmVuZHNXaXRoKCIuanMiKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC0zKSksSS5lbmRzV2l0aCgiLndhc20iKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC01KSksSS5lbmRzV2l0aCgiLndhc20uenN0IikmJihJPUkuc3Vic3RyaW5nKDAsSS5sZW5ndGgtOSkpO2xldCByPWAke0l9Lndhc21gLGk9YXdhaXQgbkEuZ2V0KGAke3J9LnpzdGAse3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSk7cXR8fChhd2FpdCBIdC5pbml0KCkscXQ9ITApO2xldCBzPUh0LmRlY29kZShuZXcgVWludDhBcnJheShpLmRhdGEpKS5idWZmZXI7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtJfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5OnN9KX12YXIgS3Q9WXI7dmFyIE90PWFzeW5jKCk9PldlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDUsMSw5NiwwLDEsMTIzLDMsMiwxLDAsMTAsMTAsMSw4LDAsNjUsMCwyNTMsMTUsMjUzLDk4LDExXSkpO3ZhciBQdD10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixUdD1uZXcgVGV4dEVuY29kZXIseHQ9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIE1yKEEsZSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sST1BLmZzX29wZW4oZSx0LmZsYWdzKSxpPUEuZnNfc3RhdChlKS5zaXplLGc9bnVsbDtQdD9nPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihpKTpnPW5ldyBBcnJheUJ1ZmZlcihpKTtsZXQgcz1uZXcgVWludDhBcnJheShnKTtyZXR1cm4gQS5mc19yZWFkKEkscywwLGksMCksQS5mc19jbG9zZShJKSxzfWZ1bmN0aW9uIFd0KEEsZSx0KXtsZXQgST1udWxsO1B0P0k9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOkk9bmV3IEFycmF5QnVmZmVyKHQpO2xldCByPW5ldyBVaW50OEFycmF5KEkpLGk9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGUsdCk7cmV0dXJuIHIuc2V0KGkpLHJ9ZnVuY3Rpb24gdyhBLGUsdCxJKXtsZXQgcj0wO3JldHVybiBlIT09bnVsbCYmKHI9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxJLGUuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpLHIpKSxyfWZ1bmN0aW9uIHYoQSxlLHQpe2xldCBJPUpTT04uc3RyaW5naWZ5KGUpLHI9QS5sZW5ndGhCeXRlc1VURjgoSSkrMSxpPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyXSk7QS5zdHJpbmdUb1VURjgoSSxpLHIpfWZ1bmN0aW9uIFMoQSxlLHQsSSl7bGV0IHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxnPVd0KEEscixpKTtyZXR1cm4gSChJLGcuYnVmZmVyKX1mdW5jdGlvbiBtQShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLEk9QS5VVEY4VG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2UoSSl9ZnVuY3Rpb24gSHIoQSxlLHQsSSl7SSE9bnVsbCYmSS5sZW5ndGg+MCYmSS5mb3JFYWNoKGZ1bmN0aW9uKEMsbyl7c3dpdGNoKEMudHlwZSl7Y2FzZSBkLlRleHRTdHJlYW06e2xldCBhPVR0LmVuY29kZShDLmRhdGEuZGF0YSksYz13KEEsYSxvLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTt2KEEsQixvKTticmVha31jYXNlIGQuSnNvbkNvbXBhdGlibGU6e2xldCBhPVR0LmVuY29kZShKU09OLnN0cmluZ2lmeShDLmRhdGEpKSxjPXcoQSxhLG8sMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O3YoQSxCLG8pO2JyZWFrfWNhc2UgZC5CaW5hcnlTdHJlYW06e2xldCBhPUMuZGF0YS5kYXRhLGM9dyhBLGEsbywwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07dihBLEIsbyk7YnJlYWt9Y2FzZSBkLlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShDLmRhdGEucGF0aCxDLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBkLkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKEMuZGF0YS5wYXRoLEMuZGF0YS5kYXRhKTticmVha31jYXNlIGQuSW1hZ2U6e2xldCBhPUMuZGF0YSxjPXcoQSxhLmRhdGEsbywwKSxCPXcoQSxhLmRpcmVjdGlvbixvLDEpLFE9dHlwZW9mIGEubWV0YWRhdGE/LmVudHJpZXM8InUiP0FycmF5LmZyb20oYS5tZXRhZGF0YS5lbnRyaWVzKCkpOltdLGY9e2ltYWdlVHlwZTphLmltYWdlVHlwZSxuYW1lOmEubmFtZSxvcmlnaW46YS5vcmlnaW4sc3BhY2luZzphLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLHNpemU6YS5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsbWV0YWRhdGE6UX07dihBLGYsbyk7YnJlYWt9Y2FzZSBkLk1lc2g6e2xldCBhPUMuZGF0YSxjPXcoQSxhLnBvaW50cyxvLDApLEI9dyhBLGEuY2VsbHMsbywxKSxRPXcoQSxhLnBvaW50RGF0YSxvLDIpLGY9dyhBLGEuY2VsbERhdGEsbywzKSxsPXttZXNoVHlwZTphLm1lc2hUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mQ2VsbHM6YS5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLGNlbGxCdWZmZXJTaXplOmEuY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczphLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLG51bWJlck9mQ2VsbFBpeGVsczphLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07dihBLGwsbyk7YnJlYWt9Y2FzZSBkLlBvaW50U2V0OntsZXQgYT1DLmRhdGEsYz13KEEsYS5wb2ludHMsbywwKSxCPXcoQSxhLnBvaW50RGF0YSxvLDEpLFE9e3BvaW50U2V0VHlwZTphLnBvaW50U2V0VHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWB9O3YoQSxRLG8pO2JyZWFrfWNhc2UgZC5UcmFuc2Zvcm1MaXN0OntsZXQgYT1DLmRhdGEsYz1bXSxCPTA7YS5mb3JFYWNoKFE9PntsZXQgZj0iIixsPSIiO1EudHJhbnNmb3JtVHlwZS50cmFuc2Zvcm1QYXJhbWV0ZXJpemF0aW9uIT09IkNvbXBvc2l0ZSImJihmPWBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dyhBLFEuZml4ZWRQYXJhbWV0ZXJzLG8sQil9YCxCKz0xLGw9YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt3KEEsUS5wYXJhbWV0ZXJzLG8sQil9YCxCKz0xKTtsZXQgcD17dHJhbnNmb3JtVHlwZTpRLnRyYW5zZm9ybVR5cGUsbnVtYmVyT2ZGaXhlZFBhcmFtZXRlcnM6US5udW1iZXJPZkZpeGVkUGFyYW1ldGVycyxudW1iZXJPZlBhcmFtZXRlcnM6US5udW1iZXJPZlBhcmFtZXRlcnMsbmFtZTpRLm5hbWUsaW5wdXRTcGFjZU5hbWU6US5pbnB1dFNwYWNlTmFtZSxvdXRwdXRTcGFjZU5hbWU6US5vdXRwdXRTcGFjZU5hbWUscGFyYW1ldGVyczpsLGZpeGVkUGFyYW1ldGVyczpmfTtjLnB1c2gocCl9KSx2KEEsYyxvKTticmVha31jYXNlIGQuUG9seURhdGE6e2xldCBhPUMuZGF0YSxjPXcoQSxhLnBvaW50cyxvLDApLEI9dyhBLGEudmVydGljZXMsbywxKSxRPXcoQSxhLmxpbmVzLG8sMiksZj13KEEsYS5wb2x5Z29ucyxvLDMpLGw9dyhBLGEudHJpYW5nbGVTdHJpcHMsbyw0KSxwPXcoQSxhLnBvaW50RGF0YSxvLDUpLEY9dyhBLGEucG9pbnREYXRhLG8sNiksRD17cG9seURhdGFUeXBlOmEucG9seURhdGFUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHZlcnRpY2VzQnVmZmVyU2l6ZTphLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxsaW5lc0J1ZmZlclNpemU6YS5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAscG9seWdvbnNCdWZmZXJTaXplOmEucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTphLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Rn1gfTt2KEEsRCxvKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgcj1BLnN0YWNrU2F2ZSgpLGk9MDt0cnl7aT1BLmNhbGxNYWluKGUuc2xpY2UoKSl9Y2F0Y2goQyl7dGhyb3cgdHlwZW9mIEM9PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UoQykpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksQ31maW5hbGx5e0Euc3RhY2tSZXN0b3JlKHIpfWxldCBnPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLEU9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJmk9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24oQyxvKXtsZXQgYT1udWxsO3N3aXRjaChDLnR5cGUpe2Nhc2UgZC5UZXh0U3RyZWFtOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxvLDBdKSxRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLG8sMF0pLGY9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsUSk7YT17ZGF0YTp4dC5kZWNvZGUoZil9O2JyZWFrfWNhc2UgZC5Kc29uQ29tcGF0aWJsZTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsbywwXSksUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxvLDBdKSxmPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixCLFEpO2E9SlNPTi5wYXJzZSh4dC5kZWNvZGUoZikpO2JyZWFrfWNhc2UgZC5CaW5hcnlTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLG8sMF0pLFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsbywwXSk7YT17ZGF0YTpXdChBLEIsUSl9O2JyZWFrfWNhc2UgZC5UZXh0RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUoQy5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIGQuQmluYXJ5RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOk1yKEEsQy5kYXRhLnBhdGgpfTticmVha31jYXNlIGQuSW1hZ2U6e2xldCBCPW1BKEEsbyk7Qi5kYXRhPVMoQSxvLDAsQi5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksQi5kaXJlY3Rpb249UyhBLG8sMSxYLkZsb2F0NjQpLEIubWV0YWRhdGE9bmV3IE1hcChCLm1ldGFkYXRhKSxhPUI7YnJlYWt9Y2FzZSBkLk1lc2g6e2xldCBCPW1BKEEsbyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxvLDAsQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOkIucG9pbnRzPUgoQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbHM+MD9CLmNlbGxzPVMoQSxvLDEsQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6Qi5jZWxscz1IKEIubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1TKEEsbywyLEIubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUgoQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1TKEEsbywzLEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1IKEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31jYXNlIGQuUG9pbnRTZXQ6e2xldCBCPW1BKEEsbyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxvLDAsQi5wb2ludFNldFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpCLnBvaW50cz1IKEIucG9pbnRTZXRUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVMoQSxvLDEsQi5wb2ludFNldFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUgoQi5wb2ludFNldFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxhPUI7YnJlYWt9Y2FzZSBkLlRyYW5zZm9ybUxpc3Q6e2xldCBCPW1BKEEsbyksUT0wO0IuZm9yRWFjaCgoZixsKT0+e2YudHJhbnNmb3JtVHlwZS50cmFuc2Zvcm1QYXJhbWV0ZXJpemF0aW9uIT09IkNvbXBvc2l0ZSImJihmLm51bWJlck9mRml4ZWRQYXJhbWV0ZXJzPjAmJihCW2xdLmZpeGVkUGFyYW1ldGVycz1TKEEsbyxRLFguRmxvYXQ2NCkpLFErPTEsZi5udW1iZXJPZlBhcmFtZXRlcnM+MCYmKEJbbF0ucGFyYW1ldGVycz1TKEEsbyxRLGYudHJhbnNmb3JtVHlwZS5wYXJhbWV0ZXJzVmFsdWVUeXBlKSksUSs9MSl9KSxhPUI7YnJlYWt9Y2FzZSBkLlBvbHlEYXRhOntsZXQgQj1tQShBLG8pO0IubnVtYmVyT2ZQb2ludHM+MD9CLnBvaW50cz1TKEEsbywwLFguRmxvYXQzMik6Qi5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxCLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP0IudmVydGljZXM9UyhBLG8sMSxrLlVJbnQzMik6Qi52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksQi5saW5lc0J1ZmZlclNpemU+MD9CLmxpbmVzPVMoQSxvLDIsay5VSW50MzIpOkIubGluZXM9bmV3IFVpbnQzMkFycmF5LEIucG9seWdvbnNCdWZmZXJTaXplPjA/Qi5wb2x5Z29ucz1TKEEsbywzLGsuVUludDMyKTpCLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxCLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP0IudHJpYW5nbGVTdHJpcHM9UyhBLG8sNCxrLlVJbnQzMik6Qi50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksQi5udW1iZXJPZlBvaW50UGl4ZWxzPjA/Qi5wb2ludERhdGE9UyhBLG8sNSxCLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5wb2ludERhdGE9SChCLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1TKEEsbyw2LEIucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkIuY2VsbERhdGE9SChCLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1CO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGM9e3R5cGU6Qy50eXBlLGRhdGE6YX07RS5wdXNoKGMpfSkse3JldHVyblZhbHVlOmksc3Rkb3V0Omcsc3RkZXJyOnMsb3V0cHV0czpFfX12YXIganQ9SHI7dmFyIHFyPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBLcihBLGUpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCBJPTA7STxBLmxlbmd0aDtJKyspe2xldCByPU9yKEFbSV0sZSk7ciE9PW51bGwmJnQucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBPcihBLGUpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHFyJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDplP3Q6dC5zbGljZSgwKX12YXIgdnQ9S3I7ZnVuY3Rpb24gVHIoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIFp0PVRyO2Z1bmN0aW9uIHhyKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciBWdD14cjtmdW5jdGlvbiBQcihBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgWHQ9UHI7dmFyIFdyO2Z1bmN0aW9uIFhBKCl7cmV0dXJuIFdyfXZhciBqcjtmdW5jdGlvbiB6dCgpe3JldHVybiBqcn12YXIgdnI7ZnVuY3Rpb24gekEoKXtyZXR1cm4gdnJ9dmFyIExlPW5ldyBNYXA7ZnVuY3Rpb24gWnIoKXtsZXQgQT16QSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW51bGwpLEF9ZnVuY3Rpb24gX3QoKXtsZXQgQT1YQSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW5ldyBVUkwoIi9waXBlbGluZXMiLGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbikuaHJlZiksQX1mdW5jdGlvbiBfQSgpe2xldCBBPXp0KCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9e30pLEF9YXN5bmMgZnVuY3Rpb24gVnIoQSxlLHQpe2xldCBJPUEscj1BO2lmKHR5cGVvZiBBIT0ic3RyaW5nIiYmKEk9bmV3IFVSTChBLmhyZWYpLHI9SS5ocmVmKSxMZS5oYXMocikpcmV0dXJuIExlLmdldChyKTt7bGV0IGk9YXdhaXQgS3QoQSxlPy50b1N0cmluZygpPz9fdCgpLHQ/P19BKCkpO3JldHVybiBMZS5zZXQocixpKSxpfX1hc3luYyBmdW5jdGlvbiBYcihBLGUsdCxJLHIpe2lmKCFhd2FpdCBPdCgpKXtsZXQgbD0iV2ViQXNzZW1ibHkgU0lNRCBzdXBwb3J0IGlzIHJlcXVpcmVkIC0tIHBsZWFzZSB1cGRhdGUgeW91ciBicm93c2VyLiI7dGhyb3cgYWxlcnQobCksbmV3IEVycm9yKGwpfWxldCBpPXI/LndlYldvcmtlcj8/bnVsbDtpZihpPT09ITEpe2xldCBsPWF3YWl0IFZyKEEudG9TdHJpbmcoKSxyPy5waXBlbGluZUJhc2VVcmwscj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/X0EoKSk7cmV0dXJuIGp0KGwsZSx0LEkpfWxldCBnPWkscz1yPy5waXBlbGluZVdvcmtlclVybD8/WnIoKSxFPXR5cGVvZiBzIT0ic3RyaW5nIiYmdHlwZW9mIHM/LmhyZWY8InUiP3MuaHJlZjpzLHt3b3JrZXJQcm94eTpDLHdvcmtlcjpvfT1hd2FpdCBZdChnLEUscj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/X0EoKSk7Zz1vO2xldCBhPVtdO0khPW51bGwmJkkubGVuZ3RoPjAmJkkuZm9yRWFjaChmdW5jdGlvbihsKXtpZihsLnR5cGU9PT1kLkJpbmFyeVN0cmVhbSl7bGV0IHA9bC5kYXRhLmRhdGE7YS5wdXNoKHApfWVsc2UgaWYobC50eXBlPT09ZC5CaW5hcnlGaWxlKXtsZXQgcD1sLmRhdGEuZGF0YTthLnB1c2gocCl9ZWxzZSBpZihsLnR5cGU9PT1kLkltYWdlKXtsZXQgcD1sLmRhdGE7cC5kYXRhIT09bnVsbCYmYS5wdXNoKC4uLlp0KHApKX1lbHNlIGlmKGwudHlwZT09PWQuTWVzaCl7bGV0IHA9bC5kYXRhO2EucHVzaCguLi5WdChwKSl9ZWxzZSBpZihsLnR5cGU9PT1kLlBvbHlEYXRhKXtsZXQgcD1sLmRhdGE7YS5wdXNoKC4uLlh0KHApKX19KTtsZXQgYz1yPy5waXBlbGluZUJhc2VVcmw/P190KCksQj10eXBlb2YgYyE9InN0cmluZyImJnR5cGVvZiBjPy5ocmVmPCJ1Ij9jLmhyZWY6YyxRPUkhPW51bGw/aWUoSSx2dChhLHI/Lm5vQ29weSkpOm51bGwsZj1hd2FpdCBDLnJ1blBpcGVsaW5lKEEudG9TdHJpbmcoKSxCLGUsdCxRLHI/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P19BKCkpO3JldHVybntyZXR1cm5WYWx1ZTpmLnJldHVyblZhbHVlLHN0ZG91dDpmLnN0ZG91dCxzdGRlcnI6Zi5zdGRlcnIsb3V0cHV0czpmLm91dHB1dHMsd2ViV29ya2VyOmd9fXZhciBZPVhyO3ZhciB6cj1udWxsO2Z1bmN0aW9uICR0KCl7cmV0dXJuIHpyfXZhciBiZSxfcj1gaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaXRrLXdhc20vZG93bnNhbXBsZUAke2VlfS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gR2EoQSl7YmU9QX1mdW5jdGlvbiBPKCl7aWYodHlwZW9mIGJlPCJ1IilyZXR1cm4gYmU7bGV0IEE9WEEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6X3J9dmFyIEplLCRyPW51bGw7ZnVuY3Rpb24gQUkoQSl7SmU9QX1mdW5jdGlvbiBHKCl7aWYodHlwZW9mIEplPCJ1IilyZXR1cm4gSmU7bGV0IEE9ekEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6JHJ9dmFyIGFBPW51bGw7YXN5bmMgZnVuY3Rpb24gZUkoKXtsZXQgQT1HKCksZT10eXBlb2YgQSE9InN0cmluZyImJnR5cGVvZiBBPy5ocmVmPCJ1Ij9BLmhyZWY6QTthQT1hd2FpdCB5QShlKX1mdW5jdGlvbiBxYShBKXthQT1BfWFzeW5jIGZ1bmN0aW9uIFQoKXtpZihhQSE9PW51bGwpcmV0dXJuIGFBLnRlcm1pbmF0ZWQmJmF3YWl0IGVJKCksYUE7bGV0IEE9JHQoKTtyZXR1cm4gQSE9PW51bGw/QTooYXdhaXQgZUkoKSxhQSl9YXN5bmMgZnVuY3Rpb24gQWcoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmQuSW1hZ2V9XSxJPVt7dHlwZTpkLkltYWdlLGRhdGE6QX1dLHI9W107aWYoci5wdXNoKCIwIiksci5wdXNoKCIwIiksci5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmci5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgcz0iZG93bnNhbXBsZS1iaW4tc2hyaW5rIixFPWU/LndlYldvcmtlcjtFPT09dm9pZCAwJiYoRT1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpvLHN0ZGVycjphLG91dHB1dHM6Y309YXdhaXQgWShzLHIsdCxJLHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6RSxub0NvcHk6ZT8ubm9Db3B5fSk7aWYobyE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOmNbMF0/LmRhdGF9fXZhciBlZz1BZzthc3luYyBmdW5jdGlvbiB0ZyhBLGU9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgdD1be3R5cGU6ZC5JbWFnZX1dLEk9W3t0eXBlOmQuSW1hZ2UsZGF0YTpBfV0scj1bXTtpZihyLnB1c2goIjAiKSxyLnB1c2goIjAiKSxyLnB1c2goIi0tbWVtb3J5LWlvIiksZS5zaHJpbmtGYWN0b3JzKXtpZihlLnNocmlua0ZhY3RvcnMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCcic2hyaW5rLWZhY3RvcnMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7ci5wdXNoKCItLXNocmluay1mYWN0b3JzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5zaHJpbmtGYWN0b3JzLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9aWYoZS5jcm9wUmFkaXVzKXtpZihlLmNyb3BSYWRpdXMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCciY3JvcC1yYWRpdXMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7ci5wdXNoKCItLWNyb3AtcmFkaXVzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5jcm9wUmFkaXVzLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9bGV0IHM9ImRvd25zYW1wbGUtbGFiZWwtaW1hZ2UiLEU9ZT8ud2ViV29ya2VyO0U9PT12b2lkIDAmJihFPWF3YWl0IFQoKSk7bGV0e3dlYldvcmtlcjpDLHJldHVyblZhbHVlOm8sc3RkZXJyOmEsb3V0cHV0czpjfT1hd2FpdCBZKHMscix0LEkse3BpcGVsaW5lQmFzZVVybDpPKCkscGlwZWxpbmVXb3JrZXJVcmw6RygpLHdlYldvcmtlcjpFLG5vQ29weTplPy5ub0NvcHl9KTtpZihvIT09MCYmYSE9PSIiKXRocm93IG5ldyBFcnJvcihhKTtyZXR1cm57d2ViV29ya2VyOkMsZG93bnNhbXBsZWQ6Y1swXT8uZGF0YX19dmFyIElnPXRnO2FzeW5jIGZ1bmN0aW9uIHJnKEE9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgZT1be3R5cGU6ZC5Kc29uQ29tcGF0aWJsZX1dLHQ9W10sST1bXTtpZihJLnB1c2goIjAiKSxJLnB1c2goIi0tbWVtb3J5LWlvIiksdHlwZW9mIEEuc2hyaW5rRmFjdG9yczwidSIpe2lmKEEuc2hyaW5rRmFjdG9ycy5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaHJpbmstZmFjdG9ycyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2hyaW5rLWZhY3RvcnMiKSxhd2FpdCBQcm9taXNlLmFsbChBLnNocmlua0ZhY3RvcnMubWFwKGFzeW5jIGM9PntJLnB1c2goYy50b1N0cmluZygpKX0pKX1sZXQgaT0iZG93bnNhbXBsZS1zaWdtYSIsZz1BPy53ZWJXb3JrZXI7Zz09PXZvaWQgMCYmKGc9YXdhaXQgVCgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6RSxzdGRlcnI6QyxvdXRwdXRzOm99PWF3YWl0IFkoaSxJLGUsdCx7cGlwZWxpbmVCYXNlVXJsOk8oKSxwaXBlbGluZVdvcmtlclVybDpHKCksd2ViV29ya2VyOmcsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKEUhPT0wJiZDIT09IiIpdGhyb3cgbmV3IEVycm9yKEMpO3JldHVybnt3ZWJXb3JrZXI6cyxzaWdtYTpvWzBdPy5kYXRhfX12YXIgZ2c9cmc7YXN5bmMgZnVuY3Rpb24gaWcoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmQuSW1hZ2V9XSxJPVt7dHlwZTpkLkltYWdlLGRhdGE6QX1dLHI9W107aWYoci5wdXNoKCIwIiksci5wdXNoKCIwIiksci5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWlmKGUuY3JvcFJhZGl1cyl7aWYoZS5jcm9wUmFkaXVzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignImNyb3AtcmFkaXVzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1jcm9wLXJhZGl1cyIpLGF3YWl0IFByb21pc2UuYWxsKGUuY3JvcFJhZGl1cy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWxldCBzPSJkb3duc2FtcGxlIixFPWU/LndlYldvcmtlcjtFPT09dm9pZCAwJiYoRT1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpvLHN0ZGVycjphLG91dHB1dHM6Y309YXdhaXQgWShzLHIsdCxJLHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6RSxub0NvcHk6ZT8ubm9Db3B5fSk7aWYobyE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOmNbMF0/LmRhdGF9fXZhciBvZz1pZzthc3luYyBmdW5jdGlvbiBuZyhBPXtzaXplOlsxLDFdLHNpZ21hOlsxLDFdfSl7bGV0IGU9W3t0eXBlOmQuSnNvbkNvbXBhdGlibGV9XSx0PVtdLEk9W107aWYoSS5wdXNoKCIwIiksSS5wdXNoKCItLW1lbW9yeS1pbyIpLHR5cGVvZiBBLnNpemU8InUiKXtpZihBLnNpemUubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKCcic2l6ZSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2l6ZSIpLGF3YWl0IFByb21pc2UuYWxsKEEuc2l6ZS5tYXAoYXN5bmMgYz0+e0kucHVzaChjLnRvU3RyaW5nKCkpfSkpfWlmKHR5cGVvZiBBLnNpZ21hPCJ1Iil7aWYoQS5zaWdtYS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaWdtYSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2lnbWEiKSxhd2FpdCBQcm9taXNlLmFsbChBLnNpZ21hLm1hcChhc3luYyBjPT57SS5wdXNoKGMudG9TdHJpbmcoKSl9KSl9dHlwZW9mIEEubWF4S2VybmVsV2lkdGg8InUiJiZJLnB1c2goIi0tbWF4LWtlcm5lbC13aWR0aCIsQS5tYXhLZXJuZWxXaWR0aC50b1N0cmluZygpKSx0eXBlb2YgQS5tYXhLZXJuZWxFcnJvcjwidSImJkkucHVzaCgiLS1tYXgta2VybmVsLWVycm9yIixBLm1heEtlcm5lbEVycm9yLnRvU3RyaW5nKCkpO2xldCBpPSJnYXVzc2lhbi1rZXJuZWwtcmFkaXVzIixnPUE/LndlYldvcmtlcjtnPT09dm9pZCAwJiYoZz1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTpFLHN0ZGVycjpDLG91dHB1dHM6b309YXdhaXQgWShpLEksZSx0LHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6Zyxub0NvcHk6QT8ubm9Db3B5fSk7aWYoRSE9PTAmJkMhPT0iIil0aHJvdyBuZXcgRXJyb3IoQyk7cmV0dXJue3dlYldvcmtlcjpzLHJhZGl1czpvWzBdPy5kYXRhfX12YXIgYWc9bmc7dmFyIHRJPSdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LHZhciBZZT1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIHFlPShBLHQpPT57Zm9yKHZhciBlIGluIHQpWWUoQSxlLHtnZXQ6dFtlXSxlbnVtZXJhYmxlOiEwfSl9O3ZhciBOdD1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxNZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxLZT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksVkE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLG1BPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxVdD1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixPZT17Y2FuSGFuZGxlOkE9PlV0KEEpJiZBW050XSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOnQscG9ydDI6ZX09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBGQShBLHQpLFtlLFtlXV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksamUoQSl9fSxUZT17Y2FuSGFuZGxlOkE9PlV0KEEpJiZtQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCB0O3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/dD17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OnQ9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW3QsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sR3Q9bmV3IE1hcChbWyJwcm94eSIsT2VdLFsidGhyb3ciLFRlXV0pO2Z1bmN0aW9uIHhlKEEsdCl7Zm9yKGxldCBlIG9mIEEpaWYodD09PWV8fGU9PT0iKiJ8fGUgaW5zdGFuY2VvZiBSZWdFeHAmJmUudGVzdCh0KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBGQShBLHQ9Z2xvYmFsVGhpcyxlPVsiKiJdKXt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIEkocil7aWYoIXJ8fCFyLmRhdGEpcmV0dXJuO2lmKCF4ZShlLHIub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiBcJyR7ci5vcmlnaW59XCcgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOmcsdHlwZTpvLHBhdGg6bn09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sci5kYXRhKSxFPShyLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKFcpLEI7dHJ5e2xldCBzPW4uc2xpY2UoMCwtMSkucmVkdWNlKChsLGEpPT5sW2FdLEEpLEM9bi5yZWR1Y2UoKGwsYSk9PmxbYV0sQSk7c3dpdGNoKG8pe2Nhc2UiR0VUIjpCPUM7YnJlYWs7Y2FzZSJTRVQiOnNbbi5zbGljZSgtMSlbMF1dPVcoci5kYXRhLnZhbHVlKSxCPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOkI9Qy5hcHBseShzLEUpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IGw9bmV3IEMoLi4uRSk7Qj1YZShsKX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOmwscG9ydDI6YX09bmV3IE1lc3NhZ2VDaGFubmVsO0ZBKEEsYSksQj1fQShsLFtsXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpCPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gocyl7Qj17dmFsdWU6cyxbbUFdOjB9fVByb21pc2UucmVzb2x2ZShCKS5jYXRjaChzPT4oe3ZhbHVlOnMsW21BXTowfSkpLnRoZW4ocz0+e2xldFtDLGxdPVNBKHMpO3QucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEMpLHtpZDpnfSksbCksbz09PSJSRUxFQVNFIiYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsSSksa3QodCksVkEgaW4gQSYmdHlwZW9mIEFbVkFdPT0iZnVuY3Rpb24iJiZBW1ZBXSgpKX0pLmNhdGNoKHM9PntsZXRbQyxsXT1TQSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW21BXTowfSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sQykse2lkOmd9KSxsKX0pfSksdC5zdGFydCYmdC5zdGFydCgpfWZ1bmN0aW9uIFBlKEEpe3JldHVybiBBLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIGt0KEEpe1BlKEEpJiZBLmNsb3NlKCl9ZnVuY3Rpb24gamUoQSx0KXtyZXR1cm4gWEEoQSxbXSx0KX1mdW5jdGlvbiB5QShBKXtpZihBKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gTHQoQSl7cmV0dXJuIF8oQSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57a3QoQSl9KX12YXIgd0E9bmV3IFdlYWtNYXAscEE9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShBPT57bGV0IHQ9KHdBLmdldChBKXx8MCktMTt3QS5zZXQoQSx0KSx0PT09MCYmTHQoQSl9KTtmdW5jdGlvbiBXZShBLHQpe2xldCBlPSh3QS5nZXQodCl8fDApKzE7d0Euc2V0KHQsZSkscEEmJnBBLnJlZ2lzdGVyKEEsdCxBKX1mdW5jdGlvbiBaZShBKXtwQSYmcEEudW5yZWdpc3RlcihBKX1mdW5jdGlvbiBYQShBLHQ9W10sZT1mdW5jdGlvbigpe30pe2xldCBJPSExLHI9bmV3IFByb3h5KGUse2dldChnLG8pe2lmKHlBKEkpLG89PT1LZSlyZXR1cm4oKT0+e1plKHIpLEx0KEEpLEk9ITB9O2lmKG89PT0idGhlbiIpe2lmKHQubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+cn07bGV0IG49XyhBLHt0eXBlOiJHRVQiLHBhdGg6dC5tYXAoRT0+RS50b1N0cmluZygpKX0pLnRoZW4oVyk7cmV0dXJuIG4udGhlbi5iaW5kKG4pfXJldHVybiBYQShBLFsuLi50LG9dKX0sc2V0KGcsbyxuKXt5QShJKTtsZXRbRSxCXT1TQShuKTtyZXR1cm4gXyhBLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLnQsb10ubWFwKHM9PnMudG9TdHJpbmcoKSksdmFsdWU6RX0sQikudGhlbihXKX0sYXBwbHkoZyxvLG4pe3lBKEkpO2xldCBFPXRbdC5sZW5ndGgtMV07aWYoRT09PU1lKXJldHVybiBfKEEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oVyk7aWYoRT09PSJiaW5kIilyZXR1cm4gWEEoQSx0LnNsaWNlKDAsLTEpKTtsZXRbQixzXT1SdChuKTtyZXR1cm4gXyhBLHt0eXBlOiJBUFBMWSIscGF0aDp0Lm1hcChDPT5DLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpCfSxzKS50aGVuKFcpfSxjb25zdHJ1Y3QoZyxvKXt5QShJKTtsZXRbbixFXT1SdChvKTtyZXR1cm4gXyhBLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6dC5tYXAoQj0+Qi50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6bn0sRSkudGhlbihXKX19KTtyZXR1cm4gV2UocixBKSxyfWZ1bmN0aW9uIFZlKEEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLEEpfWZ1bmN0aW9uIFJ0KEEpe2xldCB0PUEubWFwKFNBKTtyZXR1cm5bdC5tYXAoZT0+ZVswXSksVmUodC5tYXAoZT0+ZVsxXSkpXX12YXIgYnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gX0EoQSx0KXtyZXR1cm4gYnQuc2V0KEEsdCksQX1mdW5jdGlvbiBYZShBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihBLHtbTnRdOiEwfSl9ZnVuY3Rpb24gU0EoQSl7Zm9yKGxldFt0LGVdb2YgR3QpaWYoZS5jYW5IYW5kbGUoQSkpe2xldFtJLHJdPWUuc2VyaWFsaXplKEEpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTp0LHZhbHVlOkl9LHJdfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTpBfSxidC5nZXQoQSl8fFtdXX1mdW5jdGlvbiBXKEEpe3N3aXRjaChBLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIEd0LmdldChBLm5hbWUpLmRlc2VyaWFsaXplKEEudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gQS52YWx1ZX19ZnVuY3Rpb24gXyhBLHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKEk9PntsZXQgcj1fZSgpO0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZyhvKXshby5kYXRhfHwhby5kYXRhLmlkfHxvLmRhdGEuaWQhPT1yfHwoQS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixnKSxJKG8uZGF0YSkpfSksQS5zdGFydCYmQS5zdGFydCgpLEEucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6cn0sdCksZSl9KX1mdW5jdGlvbiBfZSgpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gb0EoQSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5hcHBseSh0LGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzp6ZX09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6dkF9PU9iamVjdCx7aXRlcmF0b3I6TkEsdG9TdHJpbmdUYWc6WXR9PVN5bWJvbCxVQT0oQT0+dD0+e2xldCBlPXplLmNhbGwodCk7cmV0dXJuIEFbZV18fChBW2VdPWUuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxMPUE9PihBPUEudG9Mb3dlckNhc2UoKSx0PT5VQSh0KT09PUEpLEdBPUE9PnQ9PnR5cGVvZiB0PT09QSx7aXNBcnJheTp2fT1BcnJheSx6PUdBKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiBnQShBKXtyZXR1cm4gQSE9PW51bGwmJiF6KEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIXooQS5jb25zdHJ1Y3RvcikmJk4oQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIHF0PUwoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gdmUoQSl7bGV0IHQ7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz90PUFycmF5QnVmZmVyLmlzVmlldyhBKTp0PUEmJkEuYnVmZmVyJiZxdChBLmJ1ZmZlciksdH12YXIgJGU9R0EoInN0cmluZyIpLE49R0EoImZ1bmN0aW9uIiksTXQ9R0EoIm51bWJlciIpLGlBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsQUk9QT0+QT09PSEwfHxBPT09ITEsUkE9QT0+e2lmKFVBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IHQ9dkEoQSk7cmV0dXJuKHQ9PT1udWxsfHx0PT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpPT09bnVsbCkmJiEoWXQgaW4gQSkmJiEoTkEgaW4gQSl9LHRJPUE9PntpZighaUEoQSl8fGdBKEEpKXJldHVybiExO3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoQSkubGVuZ3RoPT09MCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09T2JqZWN0LnByb3RvdHlwZX1jYXRjaHtyZXR1cm4hMX19LGVJPUwoIkRhdGUiKSxJST1MKCJGaWxlIiksckk9TCgiQmxvYiIpLG9JPUwoIkZpbGVMaXN0IiksZ0k9QT0+aUEoQSkmJk4oQS5waXBlKSxpST1BPT57bGV0IHQ7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8TihBLmFwcGVuZCkmJigodD1VQShBKSk9PT0iZm9ybWRhdGEifHx0PT09Im9iamVjdCImJk4oQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sc0k9TCgiVVJMU2VhcmNoUGFyYW1zIiksW25JLENJLEJJLGFJXT1bIlJlYWRhYmxlU3RyZWFtIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiSGVhZGVycyJdLm1hcChMKSxRST1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywiIik7ZnVuY3Rpb24gc0EoQSx0LHthbGxPd25LZXlzOmU9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgSSxyO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSx2KEEpKWZvcihJPTAscj1BLmxlbmd0aDtJPHI7SSsrKXQuY2FsbChudWxsLEFbSV0sSSxBKTtlbHNle2lmKGdBKEEpKXJldHVybjtsZXQgZz1lP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLG89Zy5sZW5ndGgsbjtmb3IoST0wO0k8bztJKyspbj1nW0ldLHQuY2FsbChudWxsLEFbbl0sbixBKX19ZnVuY3Rpb24gS3QoQSx0KXtpZihnQShBKSlyZXR1cm4gbnVsbDt0PXQudG9Mb3dlckNhc2UoKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxJPWUubGVuZ3RoLHI7Zm9yKDtJLS0gPjA7KWlmKHI9ZVtJXSx0PT09ci50b0xvd2VyQ2FzZSgpKXJldHVybiByO3JldHVybiBudWxsfXZhciBaPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsT3Q9QT0+IXooQSkmJkEhPT1aO2Z1bmN0aW9uIHpBKCl7bGV0e2Nhc2VsZXNzOkEsc2tpcFVuZGVmaW5lZDp0fT1PdCh0aGlzKSYmdGhpc3x8e30sZT17fSxJPShyLGcpPT57bGV0IG89QSYmS3QoZSxnKXx8ZztSQShlW29dKSYmUkEocik/ZVtvXT16QShlW29dLHIpOlJBKHIpP2Vbb109ekEoe30scik6dihyKT9lW29dPXIuc2xpY2UoKTooIXR8fCF6KHIpKSYmKGVbb109cil9O2ZvcihsZXQgcj0wLGc9YXJndW1lbnRzLmxlbmd0aDtyPGc7cisrKWFyZ3VtZW50c1tyXSYmc0EoYXJndW1lbnRzW3JdLEkpO3JldHVybiBlfXZhciBFST0oQSx0LGUse2FsbE93bktleXM6SX09e30pPT4oc0EodCwocixnKT0+e2UmJk4ocik/QVtnXT1vQShyLGUpOkFbZ109cn0se2FsbE93bktleXM6SX0pLEEpLGNJPUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksZkk9KEEsdCxlLEkpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSxJKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOnQucHJvdG90eXBlfSksZSYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSxlKX0sbEk9KEEsdCxlLEkpPT57bGV0IHIsZyxvLG49e307aWYodD10fHx7fSxBPT1udWxsKXJldHVybiB0O2Rve2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGc9ci5sZW5ndGg7Zy0tID4wOylvPXJbZ10sKCFJfHxJKG8sQSx0KSkmJiFuW29dJiYodFtvXT1BW29dLG5bb109ITApO0E9ZSE9PSExJiZ2QShBKX13aGlsZShBJiYoIWV8fGUoQSx0KSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gdH0sdUk9KEEsdCxlKT0+e0E9U3RyaW5nKEEpLChlPT09dm9pZCAwfHxlPkEubGVuZ3RoKSYmKGU9QS5sZW5ndGgpLGUtPXQubGVuZ3RoO2xldCBJPUEuaW5kZXhPZih0LGUpO3JldHVybiBJIT09LTEmJkk9PT1lfSxkST1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYodihBKSlyZXR1cm4gQTtsZXQgdD1BLmxlbmd0aDtpZighTXQodCkpcmV0dXJuIG51bGw7bGV0IGU9bmV3IEFycmF5KHQpO2Zvcig7dC0tID4wOyllW3RdPUFbdF07cmV0dXJuIGV9LERJPShBPT50PT5BJiZ0IGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ2QShVaW50OEFycmF5KSksaEk9KEEsdCk9PntsZXQgST0oQSYmQVtOQV0pLmNhbGwoQSkscjtmb3IoOyhyPUkubmV4dCgpKSYmIXIuZG9uZTspe2xldCBnPXIudmFsdWU7dC5jYWxsKEEsZ1swXSxnWzFdKX19LHlJPShBLHQpPT57bGV0IGUsST1bXTtmb3IoOyhlPUEuZXhlYyh0KSkhPT1udWxsOylJLnB1c2goZSk7cmV0dXJuIEl9LG1JPUwoIkhUTUxGb3JtRWxlbWVudCIpLHdJPUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLGZ1bmN0aW9uKGUsSSxyKXtyZXR1cm4gSS50b1VwcGVyQ2FzZSgpK3J9KSxIdD0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9Pih0LGUpPT5BLmNhbGwodCxlKSkoT2JqZWN0LnByb3RvdHlwZSkscEk9TCgiUmVnRXhwIiksVHQ9KEEsdCk9PntsZXQgZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxJPXt9O3NBKGUsKHIsZyk9PntsZXQgbzsobz10KHIsZyxBKSkhPT0hMSYmKElbZ109b3x8cil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLEkpfSxTST1BPT57VHQoQSwodCxlKT0+e2lmKE4oQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZihlKSE9PS0xKXJldHVybiExO2xldCBJPUFbZV07aWYoTihJKSl7aWYodC5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiB0KXt0LndyaXRhYmxlPSExO3JldHVybn10LnNldHx8KHQuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIitlKyJcJyIpfSl9fSl9LEZJPShBLHQpPT57bGV0IGU9e30sST1yPT57ci5mb3JFYWNoKGc9PntlW2ddPSEwfSl9O3JldHVybiB2KEEpP0koQSk6SShTdHJpbmcoQSkuc3BsaXQodCkpLGV9LFJJPSgpPT57fSxOST0oQSx0KT0+QSE9bnVsbCYmTnVtYmVyLmlzRmluaXRlKEE9K0EpP0E6dDtmdW5jdGlvbiBVSShBKXtyZXR1cm4hIShBJiZOKEEuYXBwZW5kKSYmQVtZdF09PT0iRm9ybURhdGEiJiZBW05BXSl9dmFyIEdJPUE9PntsZXQgdD1uZXcgQXJyYXkoMTApLGU9KEkscik9PntpZihpQShJKSl7aWYodC5pbmRleE9mKEkpPj0wKXJldHVybjtpZihnQShJKSlyZXR1cm4gSTtpZighKCJ0b0pTT04iaW4gSSkpe3Rbcl09STtsZXQgZz12KEkpP1tdOnt9O3JldHVybiBzQShJLChvLG4pPT57bGV0IEU9ZShvLHIrMSk7IXooRSkmJihnW25dPUUpfSksdFtyXT12b2lkIDAsZ319cmV0dXJuIEl9O3JldHVybiBlKEEsMCl9LGtJPUwoIkFzeW5jRnVuY3Rpb24iKSxMST1BPT5BJiYoaUEoQSl8fE4oQSkpJiZOKEEudGhlbikmJk4oQS5jYXRjaCkseHQ9KChBLHQpPT5BP3NldEltbWVkaWF0ZTp0PygoZSxJKT0+KFouYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtzb3VyY2U6cixkYXRhOmd9KT0+e3I9PT1aJiZnPT09ZSYmSS5sZW5ndGgmJkkuc2hpZnQoKSgpfSwhMSkscj0+e0kucHVzaChyKSxaLnBvc3RNZXNzYWdlKGUsIioiKX0pKShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsW10pOmU9PnNldFRpbWVvdXQoZSkpKHR5cGVvZiBzZXRJbW1lZGlhdGU9PSJmdW5jdGlvbiIsTihaLnBvc3RNZXNzYWdlKSksYkk9dHlwZW9mIHF1ZXVlTWljcm90YXNrPCJ1Ij9xdWV1ZU1pY3JvdGFzay5iaW5kKFopOnR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5uZXh0VGlja3x8eHQsSkk9QT0+QSE9bnVsbCYmTihBW05BXSksaT17aXNBcnJheTp2LGlzQXJyYXlCdWZmZXI6cXQsaXNCdWZmZXI6Z0EsaXNGb3JtRGF0YTppSSxpc0FycmF5QnVmZmVyVmlldzp2ZSxpc1N0cmluZzokZSxpc051bWJlcjpNdCxpc0Jvb2xlYW46QUksaXNPYmplY3Q6aUEsaXNQbGFpbk9iamVjdDpSQSxpc0VtcHR5T2JqZWN0OnRJLGlzUmVhZGFibGVTdHJlYW06bkksaXNSZXF1ZXN0OkNJLGlzUmVzcG9uc2U6QkksaXNIZWFkZXJzOmFJLGlzVW5kZWZpbmVkOnosaXNEYXRlOmVJLGlzRmlsZTpJSSxpc0Jsb2I6ckksaXNSZWdFeHA6cEksaXNGdW5jdGlvbjpOLGlzU3RyZWFtOmdJLGlzVVJMU2VhcmNoUGFyYW1zOnNJLGlzVHlwZWRBcnJheTpESSxpc0ZpbGVMaXN0Om9JLGZvckVhY2g6c0EsbWVyZ2U6ekEsZXh0ZW5kOkVJLHRyaW06UUksc3RyaXBCT006Y0ksaW5oZXJpdHM6ZkksdG9GbGF0T2JqZWN0OmxJLGtpbmRPZjpVQSxraW5kT2ZUZXN0OkwsZW5kc1dpdGg6dUksdG9BcnJheTpkSSxmb3JFYWNoRW50cnk6aEksbWF0Y2hBbGw6eUksaXNIVE1MRm9ybTptSSxoYXNPd25Qcm9wZXJ0eTpIdCxoYXNPd25Qcm9wOkh0LHJlZHVjZURlc2NyaXB0b3JzOlR0LGZyZWV6ZU1ldGhvZHM6U0ksdG9PYmplY3RTZXQ6RkksdG9DYW1lbENhc2U6d0ksbm9vcDpSSSx0b0Zpbml0ZU51bWJlcjpOSSxmaW5kS2V5Okt0LGdsb2JhbDpaLGlzQ29udGV4dERlZmluZWQ6T3QsaXNTcGVjQ29tcGxpYW50Rm9ybTpVSSx0b0pTT05PYmplY3Q6R0ksaXNBc3luY0ZuOmtJLGlzVGhlbmFibGU6TEksc2V0SW1tZWRpYXRlOnh0LGFzYXA6YkksaXNJdGVyYWJsZTpKSX07ZnVuY3Rpb24gJChBLHQsZSxJLHIpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsdCYmKHRoaXMuY29kZT10KSxlJiYodGhpcy5jb25maWc9ZSksSSYmKHRoaXMucmVxdWVzdD1JKSxyJiYodGhpcy5yZXNwb25zZT1yLHRoaXMuc3RhdHVzPXIuc3RhdHVzP3Iuc3RhdHVzOm51bGwpfWkuaW5oZXJpdHMoJCxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmkudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5zdGF0dXN9fX0pO3ZhciBQdD0kLnByb3RvdHlwZSxqdD17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9PntqdFtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcygkLGp0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUHQsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7JC5mcm9tPShBLHQsZSxJLHIsZyk9PntsZXQgbz1PYmplY3QuY3JlYXRlKFB0KTtpLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24ocyl7cmV0dXJuIHMhPT1FcnJvci5wcm90b3R5cGV9LEI9PkIhPT0iaXNBeGlvc0Vycm9yIik7bGV0IG49QSYmQS5tZXNzYWdlP0EubWVzc2FnZToiRXJyb3IiLEU9dD09bnVsbCYmQT9BLmNvZGU6dDtyZXR1cm4gJC5jYWxsKG8sbixFLGUsSSxyKSxBJiZvLmNhdXNlPT1udWxsJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobywiY2F1c2UiLHt2YWx1ZTpBLGNvbmZpZ3VyYWJsZTohMH0pLG8ubmFtZT1BJiZBLm5hbWV8fCJFcnJvciIsZyYmT2JqZWN0LmFzc2lnbihvLGcpLG99O3ZhciB1PSQ7dmFyIGtBPW51bGw7ZnVuY3Rpb24gJEEoQSl7cmV0dXJuIGkuaXNQbGFpbk9iamVjdChBKXx8aS5pc0FycmF5KEEpfWZ1bmN0aW9uIFp0KEEpe3JldHVybiBpLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIFd0KEEsdCxlKXtyZXR1cm4gQT9BLmNvbmNhdCh0KS5tYXAoZnVuY3Rpb24ocixnKXtyZXR1cm4gcj1adChyKSwhZSYmZz8iWyIrcisiXSI6cn0pLmpvaW4oZT8iLiI6IiIpOnR9ZnVuY3Rpb24gSEkoQSl7cmV0dXJuIGkuaXNBcnJheShBKSYmIUEuc29tZSgkQSl9dmFyIFlJPWkudG9GbGF0T2JqZWN0KGkse30sbnVsbCxmdW5jdGlvbih0KXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QodCl9KTtmdW5jdGlvbiBxSShBLHQsZSl7aWYoIWkuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7dD10fHxuZXcoa0F8fEZvcm1EYXRhKSxlPWkudG9GbGF0T2JqZWN0KGUse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihmLGMpe3JldHVybiFpLmlzVW5kZWZpbmVkKGNbZl0pfSk7bGV0IEk9ZS5tZXRhVG9rZW5zLHI9ZS52aXNpdG9yfHxzLGc9ZS5kb3RzLG89ZS5pbmRleGVzLEU9KGUuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmaS5pc1NwZWNDb21wbGlhbnRGb3JtKHQpO2lmKCFpLmlzRnVuY3Rpb24ocikpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBCKFEpe2lmKFE9PT1udWxsKXJldHVybiIiO2lmKGkuaXNEYXRlKFEpKXJldHVybiBRLnRvSVNPU3RyaW5nKCk7aWYoaS5pc0Jvb2xlYW4oUSkpcmV0dXJuIFEudG9TdHJpbmcoKTtpZighRSYmaS5pc0Jsb2IoUSkpdGhyb3cgbmV3IHUoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIGkuaXNBcnJheUJ1ZmZlcihRKXx8aS5pc1R5cGVkQXJyYXkoUSk/RSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW1FdKTpCdWZmZXIuZnJvbShRKTpRfWZ1bmN0aW9uIHMoUSxmLGMpe2xldCBEPVE7aWYoUSYmIWMmJnR5cGVvZiBRPT0ib2JqZWN0Iil7aWYoaS5lbmRzV2l0aChmLCJ7fSIpKWY9ST9mOmYuc2xpY2UoMCwtMiksUT1KU09OLnN0cmluZ2lmeShRKTtlbHNlIGlmKGkuaXNBcnJheShRKSYmSEkoUSl8fChpLmlzRmlsZUxpc3QoUSl8fGkuZW5kc1dpdGgoZiwiW10iKSkmJihEPWkudG9BcnJheShRKSkpcmV0dXJuIGY9WnQoZiksRC5mb3JFYWNoKGZ1bmN0aW9uKHksUil7IShpLmlzVW5kZWZpbmVkKHkpfHx5PT09bnVsbCkmJnQuYXBwZW5kKG89PT0hMD9XdChbZl0sUixnKTpvPT09bnVsbD9mOmYrIltdIixCKHkpKX0pLCExfXJldHVybiAkQShRKT8hMDoodC5hcHBlbmQoV3QoYyxmLGcpLEIoUSkpLCExKX1sZXQgQz1bXSxsPU9iamVjdC5hc3NpZ24oWUkse2RlZmF1bHRWaXNpdG9yOnMsY29udmVydFZhbHVlOkIsaXNWaXNpdGFibGU6JEF9KTtmdW5jdGlvbiBhKFEsZil7aWYoIWkuaXNVbmRlZmluZWQoUSkpe2lmKEMuaW5kZXhPZihRKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitmLmpvaW4oIi4iKSk7Qy5wdXNoKFEpLGkuZm9yRWFjaChRLGZ1bmN0aW9uKEQsRil7KCEoaS5pc1VuZGVmaW5lZChEKXx8RD09PW51bGwpJiZyLmNhbGwodCxELGkuaXNTdHJpbmcoRik/Ri50cmltKCk6RixmLGwpKT09PSEwJiZhKEQsZj9mLmNvbmNhdChGKTpbRl0pfSksQy5wb3AoKX19aWYoIWkuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBhKEEpLHR9dmFyIFQ9cUk7ZnVuY3Rpb24gVnQoQSl7bGV0IHQ9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oSSl7cmV0dXJuIHRbSV19KX1mdW5jdGlvbiBYdChBLHQpe3RoaXMuX3BhaXJzPVtdLEEmJlQoQSx0aGlzLHQpfXZhciBfdD1YdC5wcm90b3R5cGU7X3QuYXBwZW5kPWZ1bmN0aW9uKHQsZSl7dGhpcy5fcGFpcnMucHVzaChbdCxlXSl9O190LnRvU3RyaW5nPWZ1bmN0aW9uKHQpe2xldCBlPXQ/ZnVuY3Rpb24oSSl7cmV0dXJuIHQuY2FsbCh0aGlzLEksVnQpfTpWdDtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBlKHJbMF0pKyI9IitlKHJbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgTEE9WHQ7ZnVuY3Rpb24gTUkoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKX1mdW5jdGlvbiBuQShBLHQsZSl7aWYoIXQpcmV0dXJuIEE7bGV0IEk9ZSYmZS5lbmNvZGV8fE1JO2kuaXNGdW5jdGlvbihlKSYmKGU9e3NlcmlhbGl6ZTplfSk7bGV0IHI9ZSYmZS5zZXJpYWxpemUsZztpZihyP2c9cih0LGUpOmc9aS5pc1VSTFNlYXJjaFBhcmFtcyh0KT90LnRvU3RyaW5nKCk6bmV3IExBKHQsZSkudG9TdHJpbmcoSSksZyl7bGV0IG89QS5pbmRleE9mKCIlMjMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrZ31yZXR1cm4gQX12YXIgQXQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZSh0LGUsSSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOnQscmVqZWN0ZWQ6ZSxzeW5jaHJvbm91czpJP0kuc3luY2hyb25vdXM6ITEscnVuV2hlbjpJP0kucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdCh0KXt0aGlzLmhhbmRsZXJzW3RdJiYodGhpcy5oYW5kbGVyc1t0XT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKHQpe2kuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKEkpe0khPT1udWxsJiZ0KEkpfSl9fSx0dD1BdDt2YXIgYkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciB6dD10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6TEE7dmFyIHZ0PXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgJHQ9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgQWU9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6enQsRm9ybURhdGE6dnQsQmxvYjokdH0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBydD17fTtxZShydCx7aGFzQnJvd3NlckVudjooKT0+SXQsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5LSSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9Pk9JLG5hdmlnYXRvcjooKT0+ZXQsb3JpZ2luOigpPT5USX0pO3ZhciBJdD10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixldD10eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmbmF2aWdhdG9yfHx2b2lkIDAsS0k9SXQmJighZXR8fFsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoZXQucHJvZHVjdCk8MCksT0k9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iLFRJPUl0JiZ3aW5kb3cubG9jYXRpb24uaHJlZnx8Imh0dHA6Ly9sb2NhbGhvc3QiO3ZhciBoPXsuLi5ydCwuLi5BZX07ZnVuY3Rpb24gb3QoQSx0KXtyZXR1cm4gVChBLG5ldyBoLmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLHt2aXNpdG9yOmZ1bmN0aW9uKGUsSSxyLGcpe3JldHVybiBoLmlzTm9kZSYmaS5pc0J1ZmZlcihlKT8odGhpcy5hcHBlbmQoSSxlLnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmcuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwuLi50fSl9ZnVuY3Rpb24geEkoQSl7cmV0dXJuIGkubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLEEpLm1hcCh0PT50WzBdPT09IltdIj8iIjp0WzFdfHx0WzBdKX1mdW5jdGlvbiBQSShBKXtsZXQgdD17fSxlPU9iamVjdC5rZXlzKEEpLEkscj1lLmxlbmd0aCxnO2ZvcihJPTA7STxyO0krKylnPWVbSV0sdFtnXT1BW2ddO3JldHVybiB0fWZ1bmN0aW9uIGpJKEEpe2Z1bmN0aW9uIHQoZSxJLHIsZyl7bGV0IG89ZVtnKytdO2lmKG89PT0iX19wcm90b19fIilyZXR1cm4hMDtsZXQgbj1OdW1iZXIuaXNGaW5pdGUoK28pLEU9Zz49ZS5sZW5ndGg7cmV0dXJuIG89IW8mJmkuaXNBcnJheShyKT9yLmxlbmd0aDpvLEU/KGkuaGFzT3duUHJvcChyLG8pP3Jbb109W3Jbb10sSV06cltvXT1JLCFuKTooKCFyW29dfHwhaS5pc09iamVjdChyW29dKSkmJihyW29dPVtdKSx0KGUsSSxyW29dLGcpJiZpLmlzQXJyYXkocltvXSkmJihyW29dPVBJKHJbb10pKSwhbil9aWYoaS5pc0Zvcm1EYXRhKEEpJiZpLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IGU9e307cmV0dXJuIGkuZm9yRWFjaEVudHJ5KEEsKEkscik9Pnt0KHhJKEkpLHIsZSwwKX0pLGV9cmV0dXJuIG51bGx9dmFyIEpBPWpJO2Z1bmN0aW9uIFdJKEEsdCxlKXtpZihpLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoQSksaS50cmltKEEpfWNhdGNoKEkpe2lmKEkubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgSX1yZXR1cm4oZXx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBndD17dHJhbnNpdGlvbmFsOmJBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIiwiZmV0Y2giXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbih0LGUpe2xldCBJPWUuZ2V0Q29udGVudFR5cGUoKXx8IiIscj1JLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxnPWkuaXNPYmplY3QodCk7aWYoZyYmaS5pc0hUTUxGb3JtKHQpJiYodD1uZXcgRm9ybURhdGEodCkpLGkuaXNGb3JtRGF0YSh0KSlyZXR1cm4gcj9KU09OLnN0cmluZ2lmeShKQSh0KSk6dDtpZihpLmlzQXJyYXlCdWZmZXIodCl8fGkuaXNCdWZmZXIodCl8fGkuaXNTdHJlYW0odCl8fGkuaXNGaWxlKHQpfHxpLmlzQmxvYih0KXx8aS5pc1JlYWRhYmxlU3RyZWFtKHQpKXJldHVybiB0O2lmKGkuaXNBcnJheUJ1ZmZlclZpZXcodCkpcmV0dXJuIHQuYnVmZmVyO2lmKGkuaXNVUkxTZWFyY2hQYXJhbXModCkpcmV0dXJuIGUuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksdC50b1N0cmluZygpO2xldCBuO2lmKGcpe2lmKEkuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIG90KHQsdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigobj1pLmlzRmlsZUxpc3QodCkpfHxJLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IEU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBUKG4/eyJmaWxlc1tdIjp0fTp0LEUmJm5ldyBFLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gZ3x8cj8oZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLFdJKHQpKTp0fV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKHQpe2xldCBlPXRoaXMudHJhbnNpdGlvbmFsfHxndC50cmFuc2l0aW9uYWwsST1lJiZlLmZvcmNlZEpTT05QYXJzaW5nLHI9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoaS5pc1Jlc3BvbnNlKHQpfHxpLmlzUmVhZGFibGVTdHJlYW0odCkpcmV0dXJuIHQ7aWYodCYmaS5pc1N0cmluZyh0KSYmKEkmJiF0aGlzLnJlc3BvbnNlVHlwZXx8cikpe2xldCBvPSEoZSYmZS5zaWxlbnRKU09OUGFyc2luZykmJnI7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQsdGhpcy5wYXJzZVJldml2ZXIpfWNhdGNoKG4pe2lmKG8pdGhyb3cgbi5uYW1lPT09IlN5bnRheEVycm9yIj91LmZyb20obix1LkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOm59fXJldHVybiB0fV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTpoLmNsYXNzZXMuRm9ybURhdGEsQmxvYjpoLmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTIwMCYmdDwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtpLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e2d0LmhlYWRlcnNbQV09e319KTt2YXIgQUE9Z3Q7dmFyIFpJPWkudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksdGU9QT0+e2xldCB0PXt9LGUsSSxyO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3I9by5pbmRleE9mKCI6IiksZT1vLnN1YnN0cmluZygwLHIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLEk9by5zdWJzdHJpbmcocisxKS50cmltKCksISghZXx8dFtlXSYmWklbZV0pJiYoZT09PSJzZXQtY29va2llIj90W2VdP3RbZV0ucHVzaChJKTp0W2VdPVtJXTp0W2VdPXRbZV0/dFtlXSsiLCAiK0k6SSl9KSx0fTt2YXIgZWU9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBDQShBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEhBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTppLmlzQXJyYXkoQSk/QS5tYXAoSEEpOlN0cmluZyhBKX1mdW5jdGlvbiBWSShBKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLGU9LyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZyxJO2Zvcig7ST1lLmV4ZWMoQSk7KXRbSVsxXV09SVsyXTtyZXR1cm4gdH12YXIgWEk9QT0+L15bLV9hLXpBLVowLTleYHx+LCElMjMkJSZcJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gaXQoQSx0LGUsSSxyKXtpZihpLmlzRnVuY3Rpb24oSSkpcmV0dXJuIEkuY2FsbCh0aGlzLHQsZSk7aWYociYmKHQ9ZSksISFpLmlzU3RyaW5nKHQpKXtpZihpLmlzU3RyaW5nKEkpKXJldHVybiB0LmluZGV4T2YoSSkhPT0tMTtpZihpLmlzUmVnRXhwKEkpKXJldHVybiBJLnRlc3QodCl9fWZ1bmN0aW9uIF9JKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywodCxlLEkpPT5lLnRvVXBwZXJDYXNlKCkrSSl9ZnVuY3Rpb24gekkoQSx0KXtsZXQgZT1pLnRvQ2FtZWxDYXNlKCIgIit0KTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2goST0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLEkrZSx7dmFsdWU6ZnVuY3Rpb24ocixnLG8pe3JldHVybiB0aGlzW0ldLmNhbGwodGhpcyx0LHIsZyxvKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgdEE9Y2xhc3N7Y29uc3RydWN0b3IodCl7dCYmdGhpcy5zZXQodCl9c2V0KHQsZSxJKXtsZXQgcj10aGlzO2Z1bmN0aW9uIGcobixFLEIpe2xldCBzPUNBKEUpO2lmKCFzKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgQz1pLmZpbmRLZXkocixzKTsoIUN8fHJbQ109PT12b2lkIDB8fEI9PT0hMHx8Qj09PXZvaWQgMCYmcltDXSE9PSExKSYmKHJbQ3x8RV09SEEobikpfWxldCBvPShuLEUpPT5pLmZvckVhY2gobiwoQixzKT0+ZyhCLHMsRSkpO2lmKGkuaXNQbGFpbk9iamVjdCh0KXx8dCBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3Ipbyh0LGUpO2Vsc2UgaWYoaS5pc1N0cmluZyh0KSYmKHQ9dC50cmltKCkpJiYhWEkodCkpbyh0ZSh0KSxlKTtlbHNlIGlmKGkuaXNPYmplY3QodCkmJmkuaXNJdGVyYWJsZSh0KSl7bGV0IG49e30sRSxCO2ZvcihsZXQgcyBvZiB0KXtpZighaS5pc0FycmF5KHMpKXRocm93IFR5cGVFcnJvcigiT2JqZWN0IGl0ZXJhdG9yIG11c3QgcmV0dXJuIGEga2V5LXZhbHVlIHBhaXIiKTtuW0I9c1swXV09KEU9bltCXSk/aS5pc0FycmF5KEUpP1suLi5FLHNbMV1dOltFLHNbMV1dOnNbMV19byhuLGUpfWVsc2UgdCE9bnVsbCYmZyhlLHQsSSk7cmV0dXJuIHRoaXN9Z2V0KHQsZSl7aWYodD1DQSh0KSx0KXtsZXQgST1pLmZpbmRLZXkodGhpcyx0KTtpZihJKXtsZXQgcj10aGlzW0ldO2lmKCFlKXJldHVybiByO2lmKGU9PT0hMClyZXR1cm4gVkkocik7aWYoaS5pc0Z1bmN0aW9uKGUpKXJldHVybiBlLmNhbGwodGhpcyxyLEkpO2lmKGkuaXNSZWdFeHAoZSkpcmV0dXJuIGUuZXhlYyhyKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKHQsZSl7aWYodD1DQSh0KSx0KXtsZXQgST1pLmZpbmRLZXkodGhpcyx0KTtyZXR1cm4hIShJJiZ0aGlzW0ldIT09dm9pZCAwJiYoIWV8fGl0KHRoaXMsdGhpc1tJXSxJLGUpKSl9cmV0dXJuITF9ZGVsZXRlKHQsZSl7bGV0IEk9dGhpcyxyPSExO2Z1bmN0aW9uIGcobyl7aWYobz1DQShvKSxvKXtsZXQgbj1pLmZpbmRLZXkoSSxvKTtuJiYoIWV8fGl0KEksSVtuXSxuLGUpKSYmKGRlbGV0ZSBJW25dLHI9ITApfX1yZXR1cm4gaS5pc0FycmF5KHQpP3QuZm9yRWFjaChnKTpnKHQpLHJ9Y2xlYXIodCl7bGV0IGU9T2JqZWN0LmtleXModGhpcyksST1lLmxlbmd0aCxyPSExO2Zvcig7SS0tOyl7bGV0IGc9ZVtJXTsoIXR8fGl0KHRoaXMsdGhpc1tnXSxnLHQsITApKSYmKGRlbGV0ZSB0aGlzW2ddLHI9ITApfXJldHVybiByfW5vcm1hbGl6ZSh0KXtsZXQgZT10aGlzLEk9e307cmV0dXJuIGkuZm9yRWFjaCh0aGlzLChyLGcpPT57bGV0IG89aS5maW5kS2V5KEksZyk7aWYobyl7ZVtvXT1IQShyKSxkZWxldGUgZVtnXTtyZXR1cm59bGV0IG49dD9fSShnKTpTdHJpbmcoZykudHJpbSgpO24hPT1nJiZkZWxldGUgZVtnXSxlW25dPUhBKHIpLElbbl09ITB9KSx0aGlzfWNvbmNhdCguLi50KXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi50KX10b0pTT04odCl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gaS5mb3JFYWNoKHRoaXMsKEkscik9PntJIT1udWxsJiZJIT09ITEmJihlW3JdPXQmJmkuaXNBcnJheShJKT9JLmpvaW4oIiwgIik6SSl9KSxlfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFt0LGVdKT0+dCsiOiAiK2UpLmpvaW4oYCUwQWApfWdldFNldENvb2tpZSgpe3JldHVybiB0aGlzLmdldCgic2V0LWNvb2tpZSIpfHxbXX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJBeGlvc0hlYWRlcnMifXN0YXRpYyBmcm9tKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpcz90Om5ldyB0aGlzKHQpfXN0YXRpYyBjb25jYXQodCwuLi5lKXtsZXQgST1uZXcgdGhpcyh0KTtyZXR1cm4gZS5mb3JFYWNoKHI9Pkkuc2V0KHIpKSxJfXN0YXRpYyBhY2Nlc3Nvcih0KXtsZXQgST0odGhpc1tlZV09dGhpc1tlZV09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxyPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIGcobyl7bGV0IG49Q0Eobyk7SVtuXXx8KHpJKHIsbyksSVtuXT0hMCl9cmV0dXJuIGkuaXNBcnJheSh0KT90LmZvckVhY2goZyk6Zyh0KSx0aGlzfX07dEEuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO2kucmVkdWNlRGVzY3JpcHRvcnModEEucHJvdG90eXBlLCh7dmFsdWU6QX0sdCk9PntsZXQgZT10WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChJKXt0aGlzW2VdPUl9fX0pO2kuZnJlZXplTWV0aG9kcyh0QSk7dmFyIHA9dEE7ZnVuY3Rpb24gQkEoQSx0KXtsZXQgZT10aGlzfHxBQSxJPXR8fGUscj1wLmZyb20oSS5oZWFkZXJzKSxnPUkuZGF0YTtyZXR1cm4gaS5mb3JFYWNoKEEsZnVuY3Rpb24obil7Zz1uLmNhbGwoZSxnLHIubm9ybWFsaXplKCksdD90LnN0YXR1czp2b2lkIDApfSksci5ub3JtYWxpemUoKSxnfWZ1bmN0aW9uIGFBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gSWUoQSx0LGUpe3UuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsdS5FUlJfQ0FOQ0VMRUQsdCxlKSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWkuaW5oZXJpdHMoSWUsdSx7X19DQU5DRUxfXzohMH0pO3ZhciBIPUllO2Z1bmN0aW9uIFFBKEEsdCxlKXtsZXQgST1lLmNvbmZpZy52YWxpZGF0ZVN0YXR1czshZS5zdGF0dXN8fCFJfHxJKGUuc3RhdHVzKT9BKGUpOnQobmV3IHUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitlLnN0YXR1cyxbdS5FUlJfQkFEX1JFUVVFU1QsdS5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKGUuc3RhdHVzLzEwMCktNF0sZS5jb25maWcsZS5yZXF1ZXN0LGUpKX1mdW5jdGlvbiBzdChBKXtsZXQgdD0vXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyhBKTtyZXR1cm4gdCYmdFsxXXx8IiJ9ZnVuY3Rpb24gdkkoQSx0KXtBPUF8fDEwO2xldCBlPW5ldyBBcnJheShBKSxJPW5ldyBBcnJheShBKSxyPTAsZz0wLG87cmV0dXJuIHQ9dCE9PXZvaWQgMD90OjFlMyxmdW5jdGlvbihFKXtsZXQgQj1EYXRlLm5vdygpLHM9SVtnXTtvfHwobz1CKSxlW3JdPUUsSVtyXT1CO2xldCBDPWcsbD0wO2Zvcig7QyE9PXI7KWwrPWVbQysrXSxDPUMlQTtpZihyPShyKzEpJUEscj09PWcmJihnPShnKzEpJUEpLEItbzx0KXJldHVybjtsZXQgYT1zJiZCLXM7cmV0dXJuIGE/TWF0aC5yb3VuZChsKjFlMy9hKTp2b2lkIDB9fXZhciByZT12STtmdW5jdGlvbiAkSShBLHQpe2xldCBlPTAsST0xZTMvdCxyLGcsbz0oQixzPURhdGUubm93KCkpPT57ZT1zLHI9bnVsbCxnJiYoY2xlYXJUaW1lb3V0KGcpLGc9bnVsbCksQSguLi5CKX07cmV0dXJuWyguLi5CKT0+e2xldCBzPURhdGUubm93KCksQz1zLWU7Qz49ST9vKEIscyk6KHI9QixnfHwoZz1zZXRUaW1lb3V0KCgpPT57Zz1udWxsLG8ocil9LEktQykpKX0sKCk9PnImJm8ocildfXZhciBvZT0kSTt2YXIgZUE9KEEsdCxlPTMpPT57bGV0IEk9MCxyPXJlKDUwLDI1MCk7cmV0dXJuIG9lKGc9PntsZXQgbz1nLmxvYWRlZCxuPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxFPW8tSSxCPXIoRSkscz1vPD1uO0k9bztsZXQgQz17bG9hZGVkOm8sdG90YWw6bixwcm9ncmVzczpuP28vbjp2b2lkIDAsYnl0ZXM6RSxyYXRlOkJ8fHZvaWQgMCxlc3RpbWF0ZWQ6QiYmbiYmcz8obi1vKS9COnZvaWQgMCxldmVudDpnLGxlbmd0aENvbXB1dGFibGU6biE9bnVsbCxbdD8iZG93bmxvYWQiOiJ1cGxvYWQiXTohMH07QShDKX0sZSl9LG50PShBLHQpPT57bGV0IGU9QSE9bnVsbDtyZXR1cm5bST0+dFswXSh7bGVuZ3RoQ29tcHV0YWJsZTplLHRvdGFsOkEsbG9hZGVkOkl9KSx0WzFdXX0sQ3Q9QT0+KC4uLnQpPT5pLmFzYXAoKCk9PkEoLi4udCkpO3ZhciBnZT1oLmhhc1N0YW5kYXJkQnJvd3NlckVudj8oKEEsdCk9PmU9PihlPW5ldyBVUkwoZSxoLm9yaWdpbiksQS5wcm90b2NvbD09PWUucHJvdG9jb2wmJkEuaG9zdD09PWUuaG9zdCYmKHR8fEEucG9ydD09PWUucG9ydCkpKShuZXcgVVJMKGgub3JpZ2luKSxoLm5hdmlnYXRvciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChoLm5hdmlnYXRvci51c2VyQWdlbnQpKTooKT0+ITA7dmFyIGllPWguaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShBLHQsZSxJLHIsZyl7bGV0IG89W0ErIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KV07aS5pc051bWJlcihlKSYmby5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUoZSkudG9HTVRTdHJpbmcoKSksaS5pc1N0cmluZyhJKSYmby5wdXNoKCJwYXRoPSIrSSksaS5pc1N0cmluZyhyKSYmby5wdXNoKCJkb21haW49IityKSxnPT09ITAmJm8ucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPW8uam9pbigiOyAiKX0scmVhZChBKXtsZXQgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xcXFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gQnQoQSl7cmV0dXJuL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QoQSl9ZnVuY3Rpb24gYXQoQSx0KXtyZXR1cm4gdD9BLnJlcGxhY2UoL1xcLz9cXC8kLywiIikrIi8iK3QucmVwbGFjZSgvXlxcLysvLCIiKTpBfWZ1bmN0aW9uIEVBKEEsdCxlKXtsZXQgST0hQnQodCk7cmV0dXJuIEEmJihJfHxlPT0hMSk/YXQoQSx0KTp0fXZhciBzZT1BPT5BIGluc3RhbmNlb2YgcD97Li4uQX06QTtmdW5jdGlvbiBiKEEsdCl7dD10fHx7fTtsZXQgZT17fTtmdW5jdGlvbiBJKEIscyxDLGwpe3JldHVybiBpLmlzUGxhaW5PYmplY3QoQikmJmkuaXNQbGFpbk9iamVjdChzKT9pLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmx9LEIscyk6aS5pc1BsYWluT2JqZWN0KHMpP2kubWVyZ2Uoe30scyk6aS5pc0FycmF5KHMpP3Muc2xpY2UoKTpzfWZ1bmN0aW9uIHIoQixzLEMsbCl7aWYoaS5pc1VuZGVmaW5lZChzKSl7aWYoIWkuaXNVbmRlZmluZWQoQikpcmV0dXJuIEkodm9pZCAwLEIsQyxsKX1lbHNlIHJldHVybiBJKEIscyxDLGwpfWZ1bmN0aW9uIGcoQixzKXtpZighaS5pc1VuZGVmaW5lZChzKSlyZXR1cm4gSSh2b2lkIDAscyl9ZnVuY3Rpb24gbyhCLHMpe2lmKGkuaXNVbmRlZmluZWQocykpe2lmKCFpLmlzVW5kZWZpbmVkKEIpKXJldHVybiBJKHZvaWQgMCxCKX1lbHNlIHJldHVybiBJKHZvaWQgMCxzKX1mdW5jdGlvbiBuKEIscyxDKXtpZihDIGluIHQpcmV0dXJuIEkoQixzKTtpZihDIGluIEEpcmV0dXJuIEkodm9pZCAwLEIpfWxldCBFPXt1cmw6ZyxtZXRob2Q6ZyxkYXRhOmcsYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOm4saGVhZGVyczooQixzLEMpPT5yKHNlKEIpLHNlKHMpLEMsITApfTtyZXR1cm4gaS5mb3JFYWNoKE9iamVjdC5rZXlzKHsuLi5BLC4uLnR9KSxmdW5jdGlvbihzKXtsZXQgQz1FW3NdfHxyLGw9QyhBW3NdLHRbc10scyk7aS5pc1VuZGVmaW5lZChsKSYmQyE9PW58fChlW3NdPWwpfSksZX12YXIgWUE9QT0+e2xldCB0PWIoe30sQSkse2RhdGE6ZSx3aXRoWFNSRlRva2VuOkkseHNyZkhlYWRlck5hbWU6cix4c3JmQ29va2llTmFtZTpnLGhlYWRlcnM6byxhdXRoOm59PXQ7aWYodC5oZWFkZXJzPW89cC5mcm9tKG8pLHQudXJsPW5BKEVBKHQuYmFzZVVSTCx0LnVybCx0LmFsbG93QWJzb2x1dGVVcmxzKSxBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLG4mJm8uc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKChuLnVzZXJuYW1lfHwiIikrIjoiKyhuLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChuLnBhc3N3b3JkKSk6IiIpKSksaS5pc0Zvcm1EYXRhKGUpKXtpZihoLmhhc1N0YW5kYXJkQnJvd3NlckVudnx8aC5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpby5zZXRDb250ZW50VHlwZSh2b2lkIDApO2Vsc2UgaWYoaS5pc0Z1bmN0aW9uKGUuZ2V0SGVhZGVycykpe2xldCBFPWUuZ2V0SGVhZGVycygpLEI9WyJjb250ZW50LXR5cGUiLCJjb250ZW50LWxlbmd0aCJdO09iamVjdC5lbnRyaWVzKEUpLmZvckVhY2goKFtzLENdKT0+e0IuaW5jbHVkZXMocy50b0xvd2VyQ2FzZSgpKSYmby5zZXQocyxDKX0pfX1pZihoLmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKEkmJmkuaXNGdW5jdGlvbihJKSYmKEk9SSh0KSksSXx8SSE9PSExJiZnZSh0LnVybCkpKXtsZXQgRT1yJiZnJiZpZS5yZWFkKGcpO0UmJm8uc2V0KHIsRSl9cmV0dXJuIHR9O3ZhciBBcj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLG5lPUFyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxJKXtsZXQgcj1ZQShBKSxnPXIuZGF0YSxvPXAuZnJvbShyLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6bixvblVwbG9hZFByb2dyZXNzOkUsb25Eb3dubG9hZFByb2dyZXNzOkJ9PXIscyxDLGwsYSxRO2Z1bmN0aW9uIGYoKXthJiZhKCksUSYmUSgpLHIuY2FuY2VsVG9rZW4mJnIuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUocyksci5zaWduYWwmJnIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixzKX1sZXQgYz1uZXcgWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKHIubWV0aG9kLnRvVXBwZXJDYXNlKCksci51cmwsITApLGMudGltZW91dD1yLnRpbWVvdXQ7ZnVuY3Rpb24gRCgpe2lmKCFjKXJldHVybjtsZXQgeT1wLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBjJiZjLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxrPXtkYXRhOiFufHxuPT09InRleHQifHxuPT09Impzb24iP2MucmVzcG9uc2VUZXh0OmMucmVzcG9uc2Usc3RhdHVzOmMuc3RhdHVzLHN0YXR1c1RleHQ6Yy5zdGF0dXNUZXh0LGhlYWRlcnM6eSxjb25maWc6QSxyZXF1ZXN0OmN9O1FBKGZ1bmN0aW9uKEcpe2UoRyksZigpfSxmdW5jdGlvbihHKXtJKEcpLGYoKX0sayksYz1udWxsfSJvbmxvYWRlbmQiaW4gYz9jLm9ubG9hZGVuZD1EOmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWN8fGMucmVhZHlTdGF0ZSE9PTR8fGMuc3RhdHVzPT09MCYmIShjLnJlc3BvbnNlVVJMJiZjLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChEKX0sYy5vbmFib3J0PWZ1bmN0aW9uKCl7YyYmKEkobmV3IHUoIlJlcXVlc3QgYWJvcnRlZCIsdS5FQ09OTkFCT1JURUQsQSxjKSksYz1udWxsKX0sYy5vbmVycm9yPWZ1bmN0aW9uKFIpe2xldCBrPVImJlIubWVzc2FnZT9SLm1lc3NhZ2U6Ik5ldHdvcmsgRXJyb3IiLFA9bmV3IHUoayx1LkVSUl9ORVRXT1JLLEEsYyk7UC5ldmVudD1SfHxudWxsLEkoUCksYz1udWxsfSxjLm9udGltZW91dD1mdW5jdGlvbigpe2xldCBSPXIudGltZW91dD8idGltZW91dCBvZiAiK3IudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixrPXIudHJhbnNpdGlvbmFsfHxiQTtyLnRpbWVvdXRFcnJvck1lc3NhZ2UmJihSPXIudGltZW91dEVycm9yTWVzc2FnZSksSShuZXcgdShSLGsuY2xhcmlmeVRpbWVvdXRFcnJvcj91LkVUSU1FRE9VVDp1LkVDT05OQUJPUlRFRCxBLGMpKSxjPW51bGx9LGc9PT12b2lkIDAmJm8uc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gYyYmaS5mb3JFYWNoKG8udG9KU09OKCksZnVuY3Rpb24oUixrKXtjLnNldFJlcXVlc3RIZWFkZXIoayxSKX0pLGkuaXNVbmRlZmluZWQoci53aXRoQ3JlZGVudGlhbHMpfHwoYy53aXRoQ3JlZGVudGlhbHM9ISFyLndpdGhDcmVkZW50aWFscyksbiYmbiE9PSJqc29uIiYmKGMucmVzcG9uc2VUeXBlPXIucmVzcG9uc2VUeXBlKSxCJiYoW2wsUV09ZUEoQiwhMCksYy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsbCkpLEUmJmMudXBsb2FkJiYoW0MsYV09ZUEoRSksYy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLEMpLGMudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlbmQiLGEpKSwoci5jYW5jZWxUb2tlbnx8ci5zaWduYWwpJiYocz15PT57YyYmKEkoIXl8fHkudHlwZT9uZXcgSChudWxsLEEsYyk6eSksYy5hYm9ydCgpLGM9bnVsbCl9LHIuY2FuY2VsVG9rZW4mJnIuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKHMpLHIuc2lnbmFsJiYoci5zaWduYWwuYWJvcnRlZD9zKCk6ci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpKSk7bGV0IEY9c3Qoci51cmwpO2lmKEYmJmgucHJvdG9jb2xzLmluZGV4T2YoRik9PT0tMSl7SShuZXcgdSgiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitGKyI6Iix1LkVSUl9CQURfUkVRVUVTVCxBKSk7cmV0dXJufWMuc2VuZChnfHxudWxsKX0pfTt2YXIgdHI9KEEsdCk9PntsZXR7bGVuZ3RoOmV9PUE9QT9BLmZpbHRlcihCb29sZWFuKTpbXTtpZih0fHxlKXtsZXQgST1uZXcgQWJvcnRDb250cm9sbGVyLHIsZz1mdW5jdGlvbihCKXtpZighcil7cj0hMCxuKCk7bGV0IHM9QiBpbnN0YW5jZW9mIEVycm9yP0I6dGhpcy5yZWFzb247SS5hYm9ydChzIGluc3RhbmNlb2YgdT9zOm5ldyBIKHMgaW5zdGFuY2VvZiBFcnJvcj9zLm1lc3NhZ2U6cykpfX0sbz10JiZzZXRUaW1lb3V0KCgpPT57bz1udWxsLGcobmV3IHUoYHRpbWVvdXQgJHt0fSBvZiBtcyBleGNlZWRlZGAsdS5FVElNRURPVVQpKX0sdCksbj0oKT0+e0EmJihvJiZjbGVhclRpbWVvdXQobyksbz1udWxsLEEuZm9yRWFjaChCPT57Qi51bnN1YnNjcmliZT9CLnVuc3Vic2NyaWJlKGcpOkIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGcpfSksQT1udWxsKX07QS5mb3JFYWNoKEI9PkIuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGcpKTtsZXR7c2lnbmFsOkV9PUk7cmV0dXJuIEUudW5zdWJzY3JpYmU9KCk9PmkuYXNhcChuKSxFfX0sQ2U9dHI7dmFyIGVyPWZ1bmN0aW9uKihBLHQpe2xldCBlPUEuYnl0ZUxlbmd0aDtpZighdHx8ZTx0KXt5aWVsZCBBO3JldHVybn1sZXQgST0wLHI7Zm9yKDtJPGU7KXI9SSt0LHlpZWxkIEEuc2xpY2UoSSxyKSxJPXJ9LElyPWFzeW5jIGZ1bmN0aW9uKihBLHQpe2ZvciBhd2FpdChsZXQgZSBvZiBycihBKSl5aWVsZCplcihlLHQpfSxycj1hc3luYyBmdW5jdGlvbiooQSl7aWYoQVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pe3lpZWxkKkE7cmV0dXJufWxldCB0PUEuZ2V0UmVhZGVyKCk7dHJ5e2Zvcig7Oyl7bGV0e2RvbmU6ZSx2YWx1ZTpJfT1hd2FpdCB0LnJlYWQoKTtpZihlKWJyZWFrO3lpZWxkIEl9fWZpbmFsbHl7YXdhaXQgdC5jYW5jZWwoKX19LFF0PShBLHQsZSxJKT0+e2xldCByPUlyKEEsdCksZz0wLG8sbj1FPT57b3x8KG89ITAsSSYmSShFKSl9O3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe2FzeW5jIHB1bGwoRSl7dHJ5e2xldHtkb25lOkIsdmFsdWU6c309YXdhaXQgci5uZXh0KCk7aWYoQil7bigpLEUuY2xvc2UoKTtyZXR1cm59bGV0IEM9cy5ieXRlTGVuZ3RoO2lmKGUpe2xldCBsPWcrPUM7ZShsKX1FLmVucXVldWUobmV3IFVpbnQ4QXJyYXkocykpfWNhdGNoKEIpe3Rocm93IG4oQiksQn19LGNhbmNlbChFKXtyZXR1cm4gbihFKSxyLnJldHVybigpfX0se2hpZ2hXYXRlck1hcms6Mn0pfTt2YXIgQmU9NjQqMTAyNCx7aXNGdW5jdGlvbjpxQX09aSxjZT0oKHtmZXRjaDpBLFJlcXVlc3Q6dCxSZXNwb25zZTplfSk9Pih7ZmV0Y2g6QSxSZXF1ZXN0OnQsUmVzcG9uc2U6ZX0pKShpLmdsb2JhbCkse1JlYWRhYmxlU3RyZWFtOmFlLFRleHRFbmNvZGVyOlFlfT1pLmdsb2JhbCxFZT0oQSwuLi50KT0+e3RyeXtyZXR1cm4hIUEoLi4udCl9Y2F0Y2h7cmV0dXJuITF9fSxvcj1BPT57bGV0e2ZldGNoOnQsUmVxdWVzdDplLFJlc3BvbnNlOkl9PU9iamVjdC5hc3NpZ24oe30sY2UsQSkscj1xQSh0KSxnPXFBKGUpLG89cUEoSSk7aWYoIXIpcmV0dXJuITE7bGV0IG49ciYmcUEoYWUpLEU9ciYmKHR5cGVvZiBRZT09ImZ1bmN0aW9uIj8oUT0+Zj0+US5lbmNvZGUoZikpKG5ldyBRZSk6YXN5bmMgUT0+bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbmV3IGUoUSkuYXJyYXlCdWZmZXIoKSkpLEI9ZyYmbiYmRWUoKCk9PntsZXQgUT0hMSxmPW5ldyBlKGgub3JpZ2luLHtib2R5Om5ldyBhZSxtZXRob2Q6IlBPU1QiLGdldCBkdXBsZXgoKXtyZXR1cm4gUT0hMCwiaGFsZiJ9fSkuaGVhZGVycy5oYXMoIkNvbnRlbnQtVHlwZSIpO3JldHVybiBRJiYhZn0pLHM9byYmbiYmRWUoKCk9PmkuaXNSZWFkYWJsZVN0cmVhbShuZXcgSSgiIikuYm9keSkpLEM9e3N0cmVhbTpzJiYoUT0+US5ib2R5KX07ciYmWyJ0ZXh0IiwiYXJyYXlCdWZmZXIiLCJibG9iIiwiZm9ybURhdGEiLCJzdHJlYW0iXS5mb3JFYWNoKFE9PnshQ1tRXSYmKENbUV09KGYsYyk9PntsZXQgRD1mJiZmW1FdO2lmKEQpcmV0dXJuIEQuY2FsbChmKTt0aHJvdyBuZXcgdShgUmVzcG9uc2UgdHlwZSBcJyR7UX1cJyBpcyBub3Qgc3VwcG9ydGVkYCx1LkVSUl9OT1RfU1VQUE9SVCxjKX0pfSk7bGV0IGw9YXN5bmMgUT0+e2lmKFE9PW51bGwpcmV0dXJuIDA7aWYoaS5pc0Jsb2IoUSkpcmV0dXJuIFEuc2l6ZTtpZihpLmlzU3BlY0NvbXBsaWFudEZvcm0oUSkpcmV0dXJuKGF3YWl0IG5ldyBlKGgub3JpZ2luLHttZXRob2Q6IlBPU1QiLGJvZHk6UX0pLmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7aWYoaS5pc0FycmF5QnVmZmVyVmlldyhRKXx8aS5pc0FycmF5QnVmZmVyKFEpKXJldHVybiBRLmJ5dGVMZW5ndGg7aWYoaS5pc1VSTFNlYXJjaFBhcmFtcyhRKSYmKFE9USsiIiksaS5pc1N0cmluZyhRKSlyZXR1cm4oYXdhaXQgRShRKSkuYnl0ZUxlbmd0aH0sYT1hc3luYyhRLGYpPT57bGV0IGM9aS50b0Zpbml0ZU51bWJlcihRLmdldENvbnRlbnRMZW5ndGgoKSk7cmV0dXJuIGM/P2woZil9O3JldHVybiBhc3luYyBRPT57bGV0e3VybDpmLG1ldGhvZDpjLGRhdGE6RCxzaWduYWw6RixjYW5jZWxUb2tlbjp5LHRpbWVvdXQ6UixvbkRvd25sb2FkUHJvZ3Jlc3M6ayxvblVwbG9hZFByb2dyZXNzOlAscmVzcG9uc2VUeXBlOkcsaGVhZGVyczpXQSx3aXRoQ3JlZGVudGlhbHM6ZEE9InNhbWUtb3JpZ2luIixmZXRjaE9wdGlvbnM6bXR9PVlBKFEpO0c9Rz8oRysiIikudG9Mb3dlckNhc2UoKToidGV4dCI7bGV0IERBPUNlKFtGLHkmJnkudG9BYm9ydFNpZ25hbCgpXSxSKSxyQT1udWxsLGo9REEmJkRBLnVuc3Vic2NyaWJlJiYoKCk9PntEQS51bnN1YnNjcmliZSgpfSksd3Q7dHJ5e2lmKFAmJkImJmMhPT0iZ2V0IiYmYyE9PSJoZWFkIiYmKHd0PWF3YWl0IGEoV0EsRCkpIT09MCl7bGV0IE89bmV3IGUoZix7bWV0aG9kOiJQT1NUIixib2R5OkQsZHVwbGV4OiJoYWxmIn0pLFg7aWYoaS5pc0Zvcm1EYXRhKEQpJiYoWD1PLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSkmJldBLnNldENvbnRlbnRUeXBlKFgpLE8uYm9keSl7bGV0W1pBLGhBXT1udCh3dCxlQShDdChQKSkpO0Q9UXQoTy5ib2R5LEJlLFpBLGhBKX19aS5pc1N0cmluZyhkQSl8fChkQT1kQT8iaW5jbHVkZSI6Im9taXQiKTtsZXQgSj1nJiYiY3JlZGVudGlhbHMiaW4gZS5wcm90b3R5cGUscHQ9ey4uLm10LHNpZ25hbDpEQSxtZXRob2Q6Yy50b1VwcGVyQ2FzZSgpLGhlYWRlcnM6V0Eubm9ybWFsaXplKCkudG9KU09OKCksYm9keTpELGR1cGxleDoiaGFsZiIsY3JlZGVudGlhbHM6Sj9kQTp2b2lkIDB9O3JBPWcmJm5ldyBlKGYscHQpO2xldCBLPWF3YWl0KGc/dChyQSxtdCk6dChmLHB0KSksU3Q9cyYmKEc9PT0ic3RyZWFtInx8Rz09PSJyZXNwb25zZSIpO2lmKHMmJihrfHxTdCYmaikpe2xldCBPPXt9O1sic3RhdHVzIiwic3RhdHVzVGV4dCIsImhlYWRlcnMiXS5mb3JFYWNoKEZ0PT57T1tGdF09S1tGdF19KTtsZXQgWD1pLnRvRmluaXRlTnVtYmVyKEsuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIikpLFtaQSxoQV09ayYmbnQoWCxlQShDdChrKSwhMCkpfHxbXTtLPW5ldyBJKFF0KEsuYm9keSxCZSxaQSwoKT0+e2hBJiZoQSgpLGomJmooKX0pLE8pfUc9R3x8InRleHQiO2xldCBIZT1hd2FpdCBDW2kuZmluZEtleShDLEcpfHwidGV4dCJdKEssUSk7cmV0dXJuIVN0JiZqJiZqKCksYXdhaXQgbmV3IFByb21pc2UoKE8sWCk9PntRQShPLFgse2RhdGE6SGUsaGVhZGVyczpwLmZyb20oSy5oZWFkZXJzKSxzdGF0dXM6Sy5zdGF0dXMsc3RhdHVzVGV4dDpLLnN0YXR1c1RleHQsY29uZmlnOlEscmVxdWVzdDpyQX0pfSl9Y2F0Y2goSil7dGhyb3cgaiYmaigpLEomJkoubmFtZT09PSJUeXBlRXJyb3IiJiYvTG9hZCBmYWlsZWR8ZmV0Y2gvaS50ZXN0KEoubWVzc2FnZSk/T2JqZWN0LmFzc2lnbihuZXcgdSgiTmV0d29yayBFcnJvciIsdS5FUlJfTkVUV09SSyxRLHJBKSx7Y2F1c2U6Si5jYXVzZXx8Sn0pOnUuZnJvbShKLEomJkouY29kZSxRLHJBKX19fSxncj1uZXcgTWFwLEV0PUE9PntsZXQgdD1pLm1lcmdlLmNhbGwoe3NraXBVbmRlZmluZWQ6ITB9LGNlLEE/QS5lbnY6bnVsbCkse2ZldGNoOmUsUmVxdWVzdDpJLFJlc3BvbnNlOnJ9PXQsZz1bSSxyLGVdLG89Zy5sZW5ndGgsbj1vLEUsQixzPWdyO2Zvcig7bi0tOylFPWdbbl0sQj1zLmdldChFKSxCPT09dm9pZCAwJiZzLnNldChFLEI9bj9uZXcgTWFwOm9yKHQpKSxzPUI7cmV0dXJuIEJ9LEdnPUV0KCk7dmFyIGN0PXtodHRwOmtBLHhocjpuZSxmZXRjaDp7Z2V0OkV0fX07aS5mb3JFYWNoKGN0LChBLHQpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6dH0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTp0fSl9fSk7dmFyIGZlPUE9PmAtICR7QX1gLHNyPUE9PmkuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxNQT17Z2V0QWRhcHRlcjooQSx0KT0+e0E9aS5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6ZX09QSxJLHIsZz17fTtmb3IobGV0IG89MDtvPGU7bysrKXtJPUFbb107bGV0IG47aWYocj1JLCFzcihJKSYmKHI9Y3RbKG49U3RyaW5nKEkpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgdShgVW5rbm93biBhZGFwdGVyIFwnJHtufVwnYCk7aWYociYmKGkuaXNGdW5jdGlvbihyKXx8KHI9ci5nZXQodCkpKSlicmVhaztnW258fCIlMjMiK29dPXJ9aWYoIXIpe2xldCBvPU9iamVjdC5lbnRyaWVzKGcpLm1hcCgoW0UsQl0pPT5gYWRhcHRlciAke0V9IGArKEI9PT0hMT8iaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQiOiJpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCIpKSxuPWU/by5sZW5ndGg+MT9gc2luY2UgOiUwQWArby5tYXAoZmUpLmpvaW4oYCUwQWApOiIgIitmZShvWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyB1KCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbiwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOmN0fTtmdW5jdGlvbiBmdChBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgSChudWxsLEEpfWZ1bmN0aW9uIEtBKEEpe3JldHVybiBmdChBKSxBLmhlYWRlcnM9cC5mcm9tKEEuaGVhZGVycyksQS5kYXRhPUJBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxNQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8QUEuYWRhcHRlcixBKShBKS50aGVuKGZ1bmN0aW9uKEkpe3JldHVybiBmdChBKSxJLmRhdGE9QkEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsSSksSS5oZWFkZXJzPXAuZnJvbShJLmhlYWRlcnMpLEl9LGZ1bmN0aW9uKEkpe3JldHVybiBhQShJKXx8KGZ0KEEpLEkmJkkucmVzcG9uc2UmJihJLnJlc3BvbnNlLmRhdGE9QkEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsSS5yZXNwb25zZSksSS5yZXNwb25zZS5oZWFkZXJzPXAuZnJvbShJLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3QoSSl9KX12YXIgT0E9IjEuMTIuMCI7dmFyIFRBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSx0KT0+e1RBW0FdPWZ1bmN0aW9uKEkpe3JldHVybiB0eXBlb2YgST09PUF8fCJhIisodDwxPyJuICI6IiAiKStBfX0pO3ZhciBsZT17fTtUQS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24odCxlLEkpe2Z1bmN0aW9uIHIoZyxvKXtyZXR1cm4iW0F4aW9zIHYiK09BKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK2crIlwnIitvKyhJPyIuICIrSToiIil9cmV0dXJuKGcsbyxuKT0+e2lmKHQ9PT0hMSl0aHJvdyBuZXcgdShyKG8sIiBoYXMgYmVlbiByZW1vdmVkIisoZT8iIGluICIrZToiIikpLHUuRVJSX0RFUFJFQ0FURUQpO3JldHVybiBlJiYhbGVbb10mJihsZVtvXT0hMCxjb25zb2xlLndhcm4ocihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2IitlKyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLHQ/dChnLG8sbik6ITB9fTtUQS5zcGVsbGluZz1mdW5jdGlvbih0KXtyZXR1cm4oZSxJKT0+KGNvbnNvbGUud2FybihgJHtJfSBpcyBsaWtlbHkgYSBtaXNzcGVsbGluZyBvZiAke3R9YCksITApfTtmdW5jdGlvbiBucihBLHQsZSl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyB1KCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iix1LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgST1PYmplY3Qua2V5cyhBKSxyPUkubGVuZ3RoO2Zvcig7ci0tID4wOyl7bGV0IGc9SVtyXSxvPXRbZ107aWYobyl7bGV0IG49QVtnXSxFPW49PT12b2lkIDB8fG8obixnLEEpO2lmKEUhPT0hMCl0aHJvdyBuZXcgdSgib3B0aW9uICIrZysiIG11c3QgYmUgIitFLHUuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKGUhPT0hMCl0aHJvdyBuZXcgdSgiVW5rbm93biBvcHRpb24gIitnLHUuRVJSX0JBRF9PUFRJT04pfX12YXIgY0E9e2Fzc2VydE9wdGlvbnM6bnIsdmFsaWRhdG9yczpUQX07dmFyIFk9Y0EudmFsaWRhdG9ycyxJQT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZmF1bHRzPXR8fHt9LHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyB0dCxyZXNwb25zZTpuZXcgdHR9fWFzeW5jIHJlcXVlc3QodCxlKXt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuX3JlcXVlc3QodCxlKX1jYXRjaChJKXtpZihJIGluc3RhbmNlb2YgRXJyb3Ipe2xldCByPXt9O0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHIpOnI9bmV3IEVycm9yO2xldCBnPXIuc3RhY2s/ci5zdGFjay5yZXBsYWNlKC9eLitcXG4vLCIiKToiIjt0cnl7SS5zdGFjaz9nJiYhU3RyaW5nKEkuc3RhY2spLmVuZHNXaXRoKGcucmVwbGFjZSgvXi4rXFxuLitcXG4vLCIiKSkmJihJLnN0YWNrKz1gJTBBYCtnKTpJLnN0YWNrPWd9Y2F0Y2h7fX10aHJvdyBJfX1fcmVxdWVzdCh0LGUpe3R5cGVvZiB0PT0ic3RyaW5nIj8oZT1lfHx7fSxlLnVybD10KTplPXR8fHt9LGU9Yih0aGlzLmRlZmF1bHRzLGUpO2xldHt0cmFuc2l0aW9uYWw6SSxwYXJhbXNTZXJpYWxpemVyOnIsaGVhZGVyczpnfT1lO0khPT12b2lkIDAmJmNBLmFzc2VydE9wdGlvbnMoSSx7c2lsZW50SlNPTlBhcnNpbmc6WS50cmFuc2l0aW9uYWwoWS5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpZLnRyYW5zaXRpb25hbChZLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6WS50cmFuc2l0aW9uYWwoWS5ib29sZWFuKX0sITEpLHIhPW51bGwmJihpLmlzRnVuY3Rpb24ocik/ZS5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6cn06Y0EuYXNzZXJ0T3B0aW9ucyhyLHtlbmNvZGU6WS5mdW5jdGlvbixzZXJpYWxpemU6WS5mdW5jdGlvbn0sITApKSxlLmFsbG93QWJzb2x1dGVVcmxzIT09dm9pZCAwfHwodGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscyE9PXZvaWQgMD9lLmFsbG93QWJzb2x1dGVVcmxzPXRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHM6ZS5hbGxvd0Fic29sdXRlVXJscz0hMCksY0EuYXNzZXJ0T3B0aW9ucyhlLHtiYXNlVXJsOlkuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOlkuc3BlbGxpbmcoIndpdGhYU1JGVG9rZW4iKX0sITApLGUubWV0aG9kPShlLm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWcmJmkubWVyZ2UoZy5jb21tb24sZ1tlLm1ldGhvZF0pO2cmJmkuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxRPT57ZGVsZXRlIGdbUV19KSxlLmhlYWRlcnM9cC5jb25jYXQobyxnKTtsZXQgbj1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihmKXt0eXBlb2YgZi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZmLnJ1bldoZW4oZSk9PT0hMXx8KEU9RSYmZi5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZi5mdWxmaWxsZWQsZi5yZWplY3RlZCkpfSk7bGV0IEI9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihmKXtCLnB1c2goZi5mdWxmaWxsZWQsZi5yZWplY3RlZCl9KTtsZXQgcyxDPTAsbDtpZighRSl7bGV0IFE9W0tBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoUS51bnNoaWZ0KC4uLm4pLFEucHVzaCguLi5CKSxsPVEubGVuZ3RoLHM9UHJvbWlzZS5yZXNvbHZlKGUpO0M8bDspcz1zLnRoZW4oUVtDKytdLFFbQysrXSk7cmV0dXJuIHN9bD1uLmxlbmd0aDtsZXQgYT1lO2ZvcihDPTA7QzxsOyl7bGV0IFE9bltDKytdLGY9bltDKytdO3RyeXthPVEoYSl9Y2F0Y2goYyl7Zi5jYWxsKHRoaXMsYyk7YnJlYWt9fXRyeXtzPUtBLmNhbGwodGhpcyxhKX1jYXRjaChRKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoUSl9Zm9yKEM9MCxsPUIubGVuZ3RoO0M8bDspcz1zLnRoZW4oQltDKytdLEJbQysrXSk7cmV0dXJuIHN9Z2V0VXJpKHQpe3Q9Yih0aGlzLmRlZmF1bHRzLHQpO2xldCBlPUVBKHQuYmFzZVVSTCx0LnVybCx0LmFsbG93QWJzb2x1dGVVcmxzKTtyZXR1cm4gbkEoZSx0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpfX07aS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbih0KXtJQS5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxJKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGIoSXx8e30se21ldGhvZDp0LHVybDplLGRhdGE6KEl8fHt9KS5kYXRhfSkpfX0pO2kuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoSSl7cmV0dXJuIGZ1bmN0aW9uKGcsbyxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGIobnx8e30se21ldGhvZDp0LGhlYWRlcnM6ST97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6ZyxkYXRhOm99KSl9fUlBLnByb3RvdHlwZVt0XT1lKCksSUEucHJvdG90eXBlW3QrIkZvcm0iXT1lKCEwKX0pO3ZhciBmQT1JQTt2YXIgbHQ9Y2xhc3MgQXtjb25zdHJ1Y3Rvcih0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IGU7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGcpe2U9Z30pO2xldCBJPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4ocj0+e2lmKCFJLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBnPUkuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtnLS0gPjA7KUkuX2xpc3RlbmVyc1tnXShyKTtJLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPXI9PntsZXQgZyxvPW5ldyBQcm9taXNlKG49PntJLnN1YnNjcmliZShuKSxnPW59KS50aGVuKHIpO3JldHVybiBvLmNhbmNlbD1mdW5jdGlvbigpe0kudW5zdWJzY3JpYmUoZyl9LG99LHQoZnVuY3Rpb24oZyxvLG4pe0kucmVhc29ufHwoSS5yZWFzb249bmV3IEgoZyxvLG4pLGUoSS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUodCl7aWYodGhpcy5yZWFzb24pe3QodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2godCk6dGhpcy5fbGlzdGVuZXJzPVt0XX11bnN1YnNjcmliZSh0KXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgZT10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZih0KTtlIT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UoZSwxKX10b0Fib3J0U2lnbmFsKCl7bGV0IHQ9bmV3IEFib3J0Q29udHJvbGxlcixlPUk9Pnt0LmFib3J0KEkpfTtyZXR1cm4gdGhpcy5zdWJzY3JpYmUoZSksdC5zaWduYWwudW5zdWJzY3JpYmU9KCk9PnRoaXMudW5zdWJzY3JpYmUoZSksdC5zaWduYWx9c3RhdGljIHNvdXJjZSgpe2xldCB0O3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihyKXt0PXJ9KSxjYW5jZWw6dH19fSx1ZT1sdDtmdW5jdGlvbiB1dChBKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIEEuYXBwbHkobnVsbCxlKX19ZnVuY3Rpb24gZHQoQSl7cmV0dXJuIGkuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIER0PXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhEdCkuZm9yRWFjaCgoW0EsdF0pPT57RHRbdF09QX0pO3ZhciBkZT1EdDtmdW5jdGlvbiBEZShBKXtsZXQgdD1uZXcgZkEoQSksZT1vQShmQS5wcm90b3R5cGUucmVxdWVzdCx0KTtyZXR1cm4gaS5leHRlbmQoZSxmQS5wcm90b3R5cGUsdCx7YWxsT3duS2V5czohMH0pLGkuZXh0ZW5kKGUsdCxudWxsLHthbGxPd25LZXlzOiEwfSksZS5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIERlKGIoQSxyKSl9LGV9dmFyIG09RGUoQUEpO20uQXhpb3M9ZkE7bS5DYW5jZWxlZEVycm9yPUg7bS5DYW5jZWxUb2tlbj11ZTttLmlzQ2FuY2VsPWFBO20uVkVSU0lPTj1PQTttLnRvRm9ybURhdGE9VDttLkF4aW9zRXJyb3I9dTttLkNhbmNlbD1tLkNhbmNlbGVkRXJyb3I7bS5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQpfTttLnNwcmVhZD11dDttLmlzQXhpb3NFcnJvcj1kdDttLm1lcmdlQ29uZmlnPWI7bS5BeGlvc0hlYWRlcnM9cDttLmZvcm1Ub0pTT049QT0+SkEoaS5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTttLmdldEFkYXB0ZXI9TUEuZ2V0QWRhcHRlcjttLkh0dHBTdGF0dXNDb2RlPWRlO20uZGVmYXVsdD1tO3ZhciB4QT1tO3ZhcntBeGlvczpSaSxBeGlvc0Vycm9yOk5pLENhbmNlbGVkRXJyb3I6VWksaXNDYW5jZWw6R2ksQ2FuY2VsVG9rZW46a2ksVkVSU0lPTjpMaSxhbGw6YmksQ2FuY2VsOkppLGlzQXhpb3NFcnJvcjpIaSxzcHJlYWQ6WWksdG9Gb3JtRGF0YTpxaSxBeGlvc0hlYWRlcnM6TWksSHR0cFN0YXR1c0NvZGU6S2ksZm9ybVRvSlNPTjpPaSxnZXRBZGFwdGVyOlRpLG1lcmdlQ29uZmlnOnhpfT14QTt2YXIgbEEsTSx5dCxodD17ZW52OntlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoOmZ1bmN0aW9uKEEpe3l0PW5ldyBVaW50OEFycmF5KE0uZXhwb3J0cy5tZW1vcnkuYnVmZmVyKX19fSxQQT1jbGFzc3tpbml0KCl7cmV0dXJuIGxBfHwodHlwZW9mIGZldGNoPCJ1Ij9sQT1mZXRjaCgiZGF0YTphcHBsaWNhdGlvbi93YXNtO2Jhc2U2NCwiK2hlKS50aGVuKHQ9PnQuYXJyYXlCdWZmZXIoKSkudGhlbih0PT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0LGh0KSkudGhlbih0aGlzLl9pbml0KTpsQT1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShCdWZmZXIuZnJvbShoZSwiYmFzZTY0IiksaHQpLnRoZW4odGhpcy5faW5pdCksbEEpfV9pbml0KHQpe009dC5pbnN0YW5jZSxodC5lbnYuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKX1kZWNvZGUodCxlPTApe2lmKCFNKXRocm93IG5ldyBFcnJvcigiWlNURERlY29kZXI6IEF3YWl0IC5pbml0KCkgYmVmb3JlIGRlY29kaW5nLiIpO2xldCBJPXQuYnl0ZUxlbmd0aCxyPU0uZXhwb3J0cy5tYWxsb2MoSSk7eXQuc2V0KHQsciksZT1lfHxOdW1iZXIoTS5leHBvcnRzLlpTVERfZmluZERlY29tcHJlc3NlZFNpemUocixJKSk7bGV0IGc9TS5leHBvcnRzLm1hbGxvYyhlKSxvPU0uZXhwb3J0cy5aU1REX2RlY29tcHJlc3MoZyxlLHIsSSksbj15dC5zbGljZShnLGcrbyk7cmV0dXJuIE0uZXhwb3J0cy5mcmVlKHIpLE0uZXhwb3J0cy5mcmVlKGcpLG59fSxoZT0iQUdGemJRRUFBQUFCYmc1Z0EzOS9md0YvWUFGL0FYOWdBbjkvQUdBQmZ3QmdCWDkvZjM5L0FYOWdBMzkvZndCZ0JIOS9mMzhCZjJBQUFYOWdBbjkvQVg5Z0IzOS9mMzkvZjM4QmYyQUNmMzhCZm1BSWYzOS9mMzkvZjM4QmYyQUZmMzkvZjM4QVlBNS9mMzkvZjM5L2YzOS9mMzkvZndGL0FpY0JBMlZ1ZGg5bGJYTmpjbWx3ZEdWdVgyNXZkR2xtZVY5dFpXMXZjbmxmWjNKdmQzUm9BQU1ESXlJSEFBQUJBUU1IQXdFQUNRUUFCUUVJQ0FFRkJnUUVCQU1HQUFBS0FBVUxEQTBHQkFVQmNBRUJBUVVIQVFHQUFvQ0FBZ1lJQVg4QlFZQ2pCQXNIcmdFTEJtMWxiVzl5ZVFJQUJtMWhiR3h2WXdBRkJHWnlaV1VBQmd4YVUxUkVYMmx6UlhKeWIzSUFFaGxhVTFSRVgyWnBibVJFWldOdmJYQnlaWE56WldSVGFYcGxBQndQV2xOVVJGOWtaV052YlhCeVpYTnpBQ0laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBRUY5ZlpYSnlibTlmYkc5allYUnBiMjRBQVFsemRHRmphMU5oZG1VQUJ3eHpkR0ZqYTFKbGMzUnZjbVVBQ0FwemRHRmphMEZzYkc5akFBa0tpL0lCSWdVQVFZUWZDek1CQVg4Z0FnUkFJQUFoQXdOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBc3BBUUYvSUFJRVFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCQVdzaUFnMEFDd3NnQUF0c0FRSi9RWUFmS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUEvQUVFUWRHdEIvLzhEYWtFUWRrQUFRWDlHQkg5QkFBVkJBQkFBUVFFTFJRMEJDMEdBSHlBQU5nSUFJQUVQQzBHRUgwRXdOZ0lBUVg4THVTY0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCaUI4b0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCVUVEZGlJQWRpSUJRUU54QkVBQ1FDQUJRWDl6UVFGeElBQnFJZ0pCQTNRaUFVR3dIMm9pQUNBQlFiZ2ZhaWdDQUNJQktBSUlJZ1JHQkVCQmlCOGdCa0YrSUFKM2NUWUNBQXdCQ3lBRUlBQTJBZ3dnQUNBRU5nSUlDeUFCUVFocUlRQWdBU0FDUVFOMElnSkJBM0kyQWdRZ0FTQUNhaUlCSUFFb0FnUkJBWEkyQWdRTUR3c2dCVUdRSHlnQ0FDSUhUUTBCSUFFRVFBSkFRUUlnQUhRaUFrRUFJQUpyY2lBQklBQjBjV2dpQVVFRGRDSUFRYkFmYWlJQ0lBQkJ1QjlxS0FJQUlnQW9BZ2dpQkVZRVFFR0lIeUFHUVg0Z0FYZHhJZ1kyQWdBTUFRc2dCQ0FDTmdJTUlBSWdCRFlDQ0FzZ0FDQUZRUU55TmdJRUlBQWdCV29pQ0NBQlFRTjBJZ0VnQldzaUJFRUJjallDQkNBQUlBRnFJQVEyQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUZCbkI4b0FnQWhBZ0ovSUFaQkFTQUhRUU4yZENJRGNVVUVRRUdJSHlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFR2NIeUFJTmdJQVFaQWZJQVEyQWdBTUR3dEJqQjhvQWdBaUMwVU5BU0FMYUVFQ2RFRzRJV29vQWdBaUFpZ0NCRUY0Y1NBRmF5RURJQUloQVFOQUFrQWdBU2dDRUNJQVJRUkFJQUVvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FGYXlJQklBTWdBU0FEU1NJQkd5RURJQUFnQWlBQkd5RUNJQUFoQVF3QkN3c2dBaWdDR0NFSklBSWdBaWdDRENJRVJ3UkFRWmdmS0FJQUdpQUNLQUlJSWdBZ0JEWUNEQ0FFSUFBMkFnZ01EZ3NnQWtFVWFpSUJLQUlBSWdCRkJFQWdBaWdDRUNJQVJRMERJQUpCRUdvaEFRc0RRQ0FCSVFnZ0FDSUVRUlJxSWdFb0FnQWlBQTBBSUFSQkVHb2hBU0FFS0FJUUlnQU5BQXNnQ0VFQU5nSUFEQTBMUVg4aEJTQUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUZRWXdmS0FJQUlnaEZEUUJCQUNBRmF5RURBa0FDUUFKQUFuOUJBQ0FGUVlBQ1NRMEFHa0VmSUFWQi8vLy9CMHNOQUJvZ0JVRW1JQUJCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWdzaUIwRUNkRUc0SVdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQnVDRnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBRmF5SUNJQU5KSVFFZ0FpQURJQUViSVFNZ0FDQUVJQUViSVFRZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQkVVTkFDQURRWkFmS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHWUh5Z0NBQm9nQkNnQ0NDSUFJQUkyQWd3Z0FpQUFOZ0lJREF3TElBUkJGR29pQVNnQ0FDSUFSUVJBSUFRb0FoQWlBRVVOQXlBRVFSQnFJUUVMQTBBZ0FTRUdJQUFpQWtFVWFpSUJLQUlBSWdBTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lBRFFBTElBWkJBRFlDQUF3TEN5QUZRWkFmS0FJQUlnUk5CRUJCbkI4b0FnQWhBQUpBSUFRZ0JXc2lBVUVRVHdSQUlBQWdCV29pQWlBQlFRRnlOZ0lFSUFBZ0JHb2dBVFlDQUNBQUlBVkJBM0kyQWdRTUFRc2dBQ0FFUVFOeU5nSUVJQUFnQkdvaUFTQUJLQUlFUVFGeU5nSUVRUUFoQWtFQUlRRUxRWkFmSUFFMkFnQkJuQjhnQWpZQ0FDQUFRUWhxSVFBTURRc2dCVUdVSHlnQ0FDSUNTUVJBUVpRZklBSWdCV3NpQVRZQ0FFR2dIMEdnSHlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FlQWlLQUlBQkVCQjZDSW9BZ0FNQVF0QjdDSkNmemNDQUVIa0lrS0FvSUNBZ0lBRU53SUFRZUFpSUFwQkRHcEJjSEZCMktyVnFnVnpOZ0lBUWZRaVFRQTJBZ0JCeENKQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSEFJaWdDQUNJRUJFQkJ1Q0lvQWdBaUJ5QUJhaUlKSUFkTklBUWdDVWx5RFEwTEFrQkJ4Q0l0QUFCQkJIRkZCRUFDUUFKQUFrQUNRRUdnSHlnQ0FDSUVCRUJCeUNJaEFBTkFJQVFnQUNnQ0FDSUhUd1JBSUFjZ0FDZ0NCR29nQkVzTkF3c2dBQ2dDQ0NJQURRQUxDMEVBRUFRaUFrRi9SZzBESUFFaEJrSGtJaWdDQUNJQVFRRnJJZ1FnQW5FRVFDQUJJQUpySUFJZ0JHcEJBQ0FBYTNGcUlRWUxJQVVnQms4TkEwSEFJaWdDQUNJQUJFQkJ1Q0lvQWdBaUJDQUdhaUlJSUFSTklBQWdDRWx5RFFRTElBWVFCQ0lBSUFKSERRRU1CUXNnQmlBQ2F5QUljU0lHRUFRaUFpQUFLQUlBSUFBb0FnUnFSZzBCSUFJaEFBc2dBRUYvUmcwQklBVkJNR29nQmswRVFDQUFJUUlNQkF0QjZDSW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFQVJCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCeENKQnhDSW9BZ0JCQkhJMkFnQUxJQUVRQkNJQ1FYOUdRUUFRQkNJQVFYOUdjaUFBSUFKTmNnMEZJQUFnQW1zaUJpQUZRU2hxVFEwRkMwRzRJa0c0SWlnQ0FDQUdhaUlBTmdJQVFid2lLQUlBSUFCSkJFQkJ2Q0lnQURZQ0FBc0NRRUdnSHlnQ0FDSURCRUJCeUNJaEFBTkFJQUlnQUNnQ0FDSUJJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFRTFFaZ2ZLQUlBSWdCQkFDQUFJQUpORzBVRVFFR1lIeUFDTmdJQUMwRUFJUUJCekNJZ0JqWUNBRUhJSWlBQ05nSUFRYWdmUVg4MkFnQkJyQjlCNENJb0FnQTJBZ0JCMUNKQkFEWUNBQU5BSUFCQkEzUWlBVUc0SDJvZ0FVR3dIMm9pQkRZQ0FDQUJRYndmYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBHVUh5QUdRU2hySWdCQmVDQUNhMEVIY1NJQmF5SUVOZ0lBUWFBZklBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFRTElBSWdBMDBnQVNBRFMzSU5BaUFBS0FJTVFRaHhEUUlnQUNBRUlBWnFOZ0lFUWFBZklBTkJlQ0FEYTBFSGNTSUFhaUlCTmdJQVFaUWZRWlFmS0FJQUlBWnFJZ0lnQUdzaUFEWUNBQ0FCSUFCQkFYSTJBZ1FnQWlBRGFrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBTUxRUUFoQkF3S0MwRUFJUUlNQ0F0Qm1COG9BZ0FnQWtzRVFFR1lIeUFDTmdJQUN5QUNJQVpxSVFGQnlDSWhBQUpBQWtBQ1FBTkFJQUVnQUNnQ0FFY0VRQ0FBS0FJSUlnQU5BUXdDQ3dzZ0FDMEFERUVJY1VVTkFRdEJ5Q0loQUFOQUlBTWdBQ2dDQUNJQlR3UkFJQUVnQUNnQ0JHb2lCQ0FEU3cwREN5QUFLQUlJSVFBTUFBc0FDeUFBSUFJMkFnQWdBQ0FBS0FJRUlBWnFOZ0lFSUFKQmVDQUNhMEVIY1dvaUJ5QUZRUU55TmdJRUlBRkJlQ0FCYTBFSGNXb2lCaUFGSUFkcUlnVnJJUUFnQXlBR1JnUkFRYUFmSUFVMkFnQkJsQjlCbEI4b0FnQWdBR29pQURZQ0FDQUZJQUJCQVhJMkFnUU1DQXRCbkI4b0FnQWdCa1lFUUVHY0h5QUZOZ0lBUVpBZlFaQWZLQUlBSUFCcUlnQTJBZ0FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUF3SUN5QUdLQUlFSWdOQkEzRkJBVWNOQmlBRFFYaHhJUWtnQTBIL0FVMEVRQ0FHS0FJTUlnRWdCaWdDQ0NJQ1JnUkFRWWdmUVlnZktBSUFRWDRnQTBFRGRuZHhOZ0lBREFjTElBSWdBVFlDRENBQklBSTJBZ2dNQmdzZ0JpZ0NHQ0VJSUFZZ0JpZ0NEQ0lDUndSQUlBWW9BZ2dpQVNBQ05nSU1JQUlnQVRZQ0NBd0ZDeUFHUVJScUlnRW9BZ0FpQTBVRVFDQUdLQUlRSWdORkRRUWdCa0VRYWlFQkN3TkFJQUVoQkNBRElnSkJGR29pQVNnQ0FDSUREUUFnQWtFUWFpRUJJQUlvQWhBaUF3MEFDeUFFUVFBMkFnQU1CQXRCbEI4Z0JrRW9heUlBUVhnZ0FtdEJCM0VpQVdzaUNEWUNBRUdnSHlBQklBSnFJZ0UyQWdBZ0FTQUlRUUZ5TmdJRUlBQWdBbXBCS0RZQ0JFR2tIMEh3SWlnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUhRSWlrQ0FEY0NFQ0FCUWNnaUtRSUFOd0lJUWRBaUlBRkJDR28yQWdCQnpDSWdCallDQUVISUlpQUNOZ0lBUWRRaVFRQTJBZ0FnQVVFWWFpRUFBMEFnQUVFSE5nSUVJQUJCQ0dvZ0FFRUVhaUVBSUFSSkRRQUxJQUVnQTBZTkFDQUJJQUVvQWdSQmZuRTJBZ1FnQXlBQklBTnJJZ0pCQVhJMkFnUWdBU0FDTmdJQUlBSkIvd0ZOQkVBZ0FrRjRjVUd3SDJvaEFBSi9RWWdmS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHSUh5QUJJQUp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hBU0FBSUFNMkFnZ2dBU0FETmdJTUlBTWdBRFlDRENBRElBRTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVNZZ0FrRUlkbWNpQUd0MlFRRnhJQUJCQVhSclFUNXFJUUFMSUFNZ0FEWUNIQ0FEUWdBM0FoQWdBRUVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQkVFQklBQjBJZ1p4UlFSQVFZd2ZJQVFnQm5JMkFnQWdBU0FETmdJQURBRUxJQUpCR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCQU5BSUFRaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJDQUFRUUYwSVFBZ0FTQUVRUVJ4YWlJR0tBSVFJZ1FOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTFFaUWZLQUlBSWdBZ0JVME5BRUdVSHlBQUlBVnJJZ0UyQWdCQm9COUJvQjhvQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRWVFmUVRBMkFnQkJBQ0VBREFjTFFRQWhBZ3NnQ0VVTkFBSkFJQVlvQWh3aUFVRUNkRUc0SVdvaUJDZ0NBQ0FHUmdSQUlBUWdBallDQUNBQ0RRRkJqQjlCakI4b0FnQkJmaUFCZDNFMkFnQU1BZ3NnQ0VFUVFSUWdDQ2dDRUNBR1JodHFJQUkyQWdBZ0FrVU5BUXNnQWlBSU5nSVlJQVlvQWhBaUFRUkFJQUlnQVRZQ0VDQUJJQUkyQWhnTElBWW9BaFFpQVVVTkFDQUNJQUUyQWhRZ0FTQUNOZ0lZQ3lBQUlBbHFJUUFnQmlBSmFpSUdLQUlFSVFNTElBWWdBMEYrY1RZQ0JDQUZJQUJCQVhJMkFnUWdBQ0FGYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUY0Y1VHd0gyb2hBUUovUVlnZktBSUFJZ0pCQVNBQVFRTjJkQ0lBY1VVRVFFR0lIeUFBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUFrRUJJQU4wSWdSeFJRUkFRWXdmSUFJZ0JISTJBZ0FnQVNBRk5nSUFEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQWdOQUlBSWlBU2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBaUFEUVFGMElRTWdBU0FDUVFSeGFpSUVLQUlRSWdJTkFBc2dCQ0FGTmdJUUN5QUZJQUUyQWhnZ0JTQUZOZ0lNSUFVZ0JUWUNDQXdCQ3lBQktBSUlJZ0FnQlRZQ0RDQUJJQVUyQWdnZ0JVRUFOZ0lZSUFVZ0FUWUNEQ0FGSUFBMkFnZ0xJQWRCQ0dvaEFBd0NDd0pBSUFkRkRRQUNRQ0FFS0FJY0lnQkJBblJCdUNGcUlnRW9BZ0FnQkVZRVFDQUJJQUkyQWdBZ0FnMEJRWXdmSUFoQmZpQUFkM0VpQ0RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFSR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFjMkFoZ2dCQ2dDRUNJQUJFQWdBaUFBTmdJUUlBQWdBallDR0FzZ0JDZ0NGQ0lBUlEwQUlBSWdBRFlDRkNBQUlBSTJBaGdMQWtBZ0EwRVBUUVJBSUFRZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQkdvaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFRZ0JVRURjallDQkNBRUlBVnFJZ0lnQTBFQmNqWUNCQ0FDSUFOcUlBTTJBZ0FnQTBIL0FVMEVRQ0FEUVhoeFFiQWZhaUVBQW45QmlCOG9BZ0FpQVVFQklBTkJBM1owSWdOeFJRUkFRWWdmSUFFZ0EzSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFQklBQWdBallDQ0NBQklBSTJBZ3dnQWlBQU5nSU1JQUlnQVRZQ0NBd0JDMEVmSVFBZ0EwSC8vLzhIVFFSQUlBTkJKaUFEUVFoMlp5SUFhM1pCQVhFZ0FFRUJkR3RCUG1vaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRYmdoYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQmpCOGdCaUFJY2pZQ0FDQUJJQUkyQWdBTUFRc2dBMEVaSUFCQkFYWnJRUUFnQUVFZlJ4dDBJUUFnQVNnQ0FDRUZBMEFnQlNJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFR0lBQkJBWFFoQUNBQklBWkJCSEZxSWdZb0FoQWlCUTBBQ3lBR0lBSTJBaEFMSUFJZ0FUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBRUxJQUVvQWdnaUFDQUNOZ0lNSUFFZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFCTmdJTUlBSWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDVVVOQUFKQUlBSW9BaHdpQUVFQ2RFRzRJV29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQmpCOGdDMEYrSUFCM2NUWUNBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBSkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBazJBaGdnQWlnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBaWdDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBSWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0Ftb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBSWdCVUVEY2pZQ0JDQUNJQVZxSWdRZ0EwRUJjallDQkNBRElBUnFJQU0yQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUJCbkI4b0FnQWhBUUovUVFFZ0IwRURkblFpQlNBR2NVVUVRRUdJSHlBRklBWnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEJpQUFJQUUyQWdnZ0JpQUJOZ0lNSUFFZ0FEWUNEQ0FCSUFZMkFnZ0xRWndmSUFRMkFnQkJrQjhnQXpZQ0FBc2dBa0VJYWlFQUN5QUtRUkJxSkFBZ0FBdlNDd0VIZndKQUlBQkZEUUFnQUVFSWF5SUNJQUJCQkdzb0FnQWlBVUY0Y1NJQWFpRUZBa0FnQVVFQmNRMEFJQUZCQTNGRkRRRWdBaUFDS0FJQUlnRnJJZ0pCbUI4b0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVHY0h5Z0NBQ0FDUndSQUlBRkIvd0ZOQkVBZ0FVRURkaUVFSUFJb0Fnd2lBU0FDS0FJSUlnTkdCRUJCaUI5QmlCOG9BZ0JCZmlBRWQzRTJBZ0FNQlFzZ0F5QUJOZ0lNSUFFZ0F6WUNDQXdFQ3lBQ0tBSVlJUVlnQWlBQ0tBSU1JZ0ZIQkVBZ0FpZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQUpCRkdvaUJDZ0NBQ0lEUlFSQUlBSW9BaEFpQTBVTkFpQUNRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGS0FJRUlnRkJBM0ZCQTBjTkFrR1FIeUFBTmdJQUlBVWdBVUYrY1RZQ0JDQUNJQUJCQVhJMkFnUWdCU0FBTmdJQUR3dEJBQ0VCQ3lBR1JRMEFBa0FnQWlnQ0hDSURRUUowUWJnaGFpSUVLQUlBSUFKR0JFQWdCQ0FCTmdJQUlBRU5BVUdNSDBHTUh5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBSkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQWlnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dBaWdDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQUpBQWtBQ1FDQUJRUUp4UlFSQVFhQWZLQUlBSUFWR0JFQkJvQjhnQWpZQ0FFR1VIMEdVSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRWndmS0FJQVJ3MEdRWkFmUVFBMkFnQkJuQjlCQURZQ0FBOExRWndmS0FJQUlBVkdCRUJCbkI4Z0FqWUNBRUdRSDBHUUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUdJSDBHSUh5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHWUh5Z0NBQm9nQlNnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUZCZm5FMkFnUWdBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQXdEQzBFQUlRRUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkJ1Q0ZxSWdRb0FnQWdCVVlFUUNBRUlBRTJBZ0FnQVEwQlFZd2ZRWXdmS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBRktBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUNBQ1Fad2ZLQUlBUncwQVFaQWZJQUEyQWdBUEN5QUFRZjhCVFFSQUlBQkJlSEZCc0I5cUlRRUNmMEdJSHlnQ0FDSURRUUVnQUVFRGRuUWlBSEZGQkVCQmlCOGdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtBQ1FFR01IeWdDQUNJRVFRRWdBM1FpQjNGRkJFQkJqQjhnQkNBSGNqWUNBQ0FCSUFJMkFnQWdBaUFCTmdJWURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBUU5BSUFFaUJDZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFTQURRUUYwSVFNZ0JDQUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdCRFlDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBRUtBSUlJZ0FnQWpZQ0RDQUVJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0JEWUNEQ0FDSUFBMkFnZ0xRYWdmUWFnZktBSUFRUUZySWdCQmZ5QUFHellDQUFzTEJBQWpBQXNHQUNBQUpBQUxFQUFqQUNBQWEwRndjU0lBSkFBZ0FBdEtBUUYvSUFBZ0FVa0VRQ0FBSUFFZ0FoQUNEd3NnQWdSQUlBQWdBbW9oQXlBQklBSnFJUUVEUUNBRFFRRnJJZ01nQVVFQmF5SUJMUUFBT2dBQUlBSkJBV3NpQWcwQUN3c2dBQXY5RGdJUmZ3RitJd0JCTUdzaUJ5UUFRYmgvSVFnQ1FDQUZSUTBBSUFRc0FBQWlDVUgvQVhFaEN3SkFJQWxCQUVnRVFDQUxRZjRBYTBFQmRpSUdJQVZQRFFKQmJDRUlJQXRCL3dCcklndEIvd0ZMRFFJZ0JFRUJhaUVJUVFBaEJRTkFJQVVnQzA4RVFDQUxJUWdnQmlFTERBTUZJQUFnQldvZ0NDQUZRUUYyYWlJRUxRQUFRUVIyT2dBQUlBQWdCVUVCY21vZ0JDMEFBRUVQY1RvQUFDQUZRUUpxSVFVTUFRc0FDd0FMSUFVZ0MwME5BU0FIUWY4Qk5nSUVJQVlnQjBFRWFpQUhRUWhxSUFSQkFXb2lEaUFMRUF3aUJFR0lmMHNFUUNBRUlRZ01BZ3RCVkNFSUlBY29BZ2dpRUVFR1N3MEJJQWNvQWdRaUVVRUJkQ0lKUVFKcXJVSUJJQkN0aGlJWVFRRWdFSFFpRFVFQmFpSUZyVUlDaG54OFFndDhRdnovLy8vLy8vLy8vd0NEUXVRQ1ZnMEJRVkloQ0NBUlFmOEJTdzBCSUExQmYzTkJBblJCNUFKcXJTQVJRUUZxSWhWQkFYU3RJQmg4UWdoOFZBMEJJQXNnQkdzaEZpQUVJQTVxSVJjZ0JrR0FCR29pRWlBRlFRSjBhaUlSSUFscVFRSnFJUTRnQmtHRUJHb2hFMEdBZ0FJZ0VIUkJFSFloQ1VFQUlRVkJBU0VQSUExQkFXc2lGQ0VLQTBBZ0JTQVZSa1VFUUFKQUlBWWdCVUVCZENJSWFpOEJBQ0lFUWYvL0EwWUVRQ0FUSUFwQkFuUnFJQVU2QUFJZ0NrRUJheUVLUVFFaEJBd0JDeUFQUVFBZ0NTQUV3VW9iSVE4TElBZ2dFV29nQkRzQkFDQUZRUUZxSVFVTUFRc0xJQVlnRHpzQmdnUWdCaUFRT3dHQUJBSkFJQW9nRkVZRVFDQU5RUU4ySVFoQ0FDRVlRUUFoRHdOQUlBd2dGVVlFUUNBSUlBMUJBWFpxUVFOcUlnbEJBWFFoQ0VFQUlRUkJBQ0VLQTBCQkFDRUZJQW9nRFU4TkJBTkFJQVZCQWtaRkJFQWdFeUFGSUFsc0lBUnFJQlJ4UVFKMGFpQU9JQVVnQ21wcUxRQUFPZ0FDSUFWQkFXb2hCUXdCQ3dzZ0NrRUNhaUVLSUFRZ0NHb2dGSEVoQkF3QUN3QUZJQVlnREVFQmRHb3VBUUFoQ1NBT0lBOXFJZ1FnR0RjQUFFRUlJUVVEUUNBRklBbE9SUVJBSUFRZ0JXb2dHRGNBQUNBRlFRaHFJUVVNQVFzTElCaENnWUtFaUpDZ3dJQUJmQ0VZSUF4QkFXb2hEQ0FKSUE5cUlROE1BUXNBQ3dBTElBMUJBM1lnRFVFQmRtcEJBMm9oQ0VFQUlRVURRQ0FNSUJWR1JRUkFRUUFoQ1NBR0lBeEJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBSlJrVUVRQ0FUSUFWQkFuUnFJQXc2QUFJRFFDQUZJQWhxSUJSeElnVWdDa3NOQUFzZ0NVRUJhaUVKREFFTEN5QU1RUUZxSVF3TUFRc0xRWDhoQ0NBRkRRSUxJQkJCQVdvaENFRUFJUVVEUUNBRklBMUdSUVJBSUJFZ0V5QUZRUUowYWlJT0xRQUNRUUYwYWlJRUlBUXZBUUFpQ1VFQmFqc0JBQ0FPSUFnZ0NXZEJZSE5xSWdRNkFBTWdEaUFKSUFSMElBMXJPd0VBSUFWQkFXb2hCUXdCQ3dzQ1FBSkFJQVl2QVlJRUJFQWdCMEVjYWlJRUlCY2dGaEFOSWdoQmlIOUxEUUlnQjBFVWFpQUVJQklRRGlBSFFReHFJQVFnRWhBT1FRQWhCUU5BSUFkQkhHb2lCQkFQSUFWQit3RkxjZzBDSUFBZ0JXb2lCaUFIUVJScUlBUVFFRG9BQUNBR0lBZEJER29nQkJBUU9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVNQXdVZ0FDQUVhaUFIUVJScUlBZEJIR29pQkJBUU9nQUFJQVlnQjBFTWFpQUVFQkE2QUFNZ0JVRUVhaUVGREFFTEFBc0FDeUFIUVJ4cUlnUWdGeUFXRUEwaUNFR0lmMHNOQVNBSFFSUnFJQVFnRWhBT0lBZEJER29nQkNBU0VBNUJBQ0VGQTBBZ0IwRWNhaUlFRUE4Z0JVSDdBVXR5UlFSQUlBQWdCV29pQmlBSFFSUnFJQVFRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVRklBQWdCR29nQjBFVWFpQUhRUnhxSWdRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBRElBVkJCR29oQlF3Q0N3c0xBbjhEUUVHNmZ5RUlJQVZCL1FGTERRTWdBQ0FGYWlJR0lBZEJGR29nQjBFY2FpSUpFQkU2QUFBZ0JrRUJhaUVFSUFrUUQwRURSZ1JBSUFkQkRHb2hDRUVDREFJTElBVkIvQUZMRFFNZ0JpQUhRUXhxSUFkQkhHb2lCQkFST2dBQklBVkJBbW9oQlNBRUVBOUJBMGNOQUFzZ0FDQUZhaUVFSUFkQkZHb2hDRUVEQ3lBRUlBZ2dCMEVjYWhBUk9nQUFJQVpxSUFCcklRZ01BUXNDZndOQVFicC9JUWdnQlVIOUFVc05BaUFBSUFWcUlnWWdCMEVVYWlBSFFSeHFJZ2tRRURvQUFDQUdRUUZxSVFRZ0NSQVBRUU5HQkVBZ0IwRU1haUVJUVFJTUFnc2dCVUg4QVVzTkFpQUdJQWRCREdvZ0IwRWNhaUlFRUJBNkFBRWdCVUVDYWlFRklBUVFEMEVEUncwQUN5QUFJQVZxSVFRZ0IwRVVhaUVJUVFNTElBUWdDQ0FIUVJ4cUVCQTZBQUFnQm1vZ0FHc2hDQXNnQ0VHSWYwc05BUXNnQ0NFRVFRQWhCU0FCUVFCQk5CQURJUWxCQUNFS0EwQWdCQ0FGUndSQUlBQWdCV29pQmkwQUFDSUJRUXRMQkVCQmJDRUlEQU1GSUFrZ0FVRUNkR29pQVNBQktBSUFRUUZxTmdJQUlBVkJBV29oQlVFQklBWXRBQUIwUVFGMUlBcHFJUW9NQWdzQUN3dEJiQ0VJSUFwRkRRQWdDbWNpQlVFZmN5SUJRUXRMRFFBZ0EwRWdJQVZyTmdJQVFRRkJBaUFCZENBS2F5SURaMEVmY3lJQmRDQURSdzBBSUFBZ0JHb2dBVUVCYWlJQU9nQUFJQWtnQUVFQ2RHb2lBQ0FBS0FJQVFRRnFOZ0lBSUFrb0FnUWlBRUVDU1NBQVFRRnhjZzBBSUFJZ0JFRUJhallDQUNBTFFRRnFJUWdMSUFkQk1Hb2tBQ0FJQzZBRkFReC9Jd0JCRUdzaURDUUFBbjhnQkVFSFRRUkFJQXhDQURjRENDQU1RUWhxSWdVZ0F5QUVFQUlhUVd3Z0FDQUJJQUlnQlVFSUVBd2lBQ0FBSUFSTEd5QUFJQUJCaVg5Skd3d0JDeUFBUVFBZ0FTZ0NBRUVCYWlJTlFRRjBFQU1oRDBGVUlBTW9BQUFpQmtFUGNTSUFRUXBMRFFBYUlBSWdBRUVGYWpZQ0FDQURJQVJxSWdKQkJHc2hCeUFDUVFkcklRc2dBRUVHYWlFT1FRUWhBaUFHUVFSMklRVkJJQ0FBZENJSVFRRnlJUWxCQUNFQVFRRWhCaUFESVFRRFFBSkFJQVpCQVhGRkJFQURRQ0FGUVg5elFZQ0FnSUI0Y21naUJrRVlTVVVFUUNBQVFTUnFJUUFnQkNBTFRRUi9JQVJCQTJvRklBUWdDMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMSUFJZ0JrRWVjU0lLYWtFQ2FpRUNJQVpCQVhaQkEyd2dBR29nQlNBS2RrRURjV29pQUNBTlR3MEJBbjhnQkNBTFN5QUNRUU4ySUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQVFnQjJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVMSUFVZ0NFRUJhM0VpQmlBSVFRRjBRUUZySWdvZ0NXc2lFRWtFZnlBT1FRRnJCU0FGSUFweElnVWdFRUVBSUFVZ0NFNGJheUVHSUE0TElRVWdEeUFBUVFGMGFpQUdRUUZySWdvN0FRQWdBRUVCYWlFQUlBSWdCV29oQWlBSVFRRWdCbXNnQ2lBR1FRQktHeUFKYWlJSlNnUkFJQWxCQWtnTkFVRWdJQWxuSWdWcklRNUJBU0FGUVI5emRDRUlDeUFBSUExUERRQWdDa0VBUnlFR0FuOGdCQ0FMU3lBQ1FRTjFJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBSWdCQ0FIYTBFRGRHcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMUVd3Z0NVRUJSdzBBR2tGUUlBQWdEVXNOQUJwQmJDQUNRU0JLRFFBYUlBRWdBRUVCYXpZQ0FDQUVJQUpCQjJwQkEzVnFJQU5yQ3lBTVFSQnFKQUFMOGdFQkFYOGdBa1VFUUNBQVFnQTNBZ0FnQUVFQU5nSVFJQUJDQURjQ0NFRzRmdzhMSUFBZ0FUWUNEQ0FBSUFGQkJHbzJBaEFnQWtFRVR3UkFJQUFnQVNBQ2FpSUJRUVJySWdNMkFnZ2dBQ0FES0FBQU5nSUFJQUZCQVdzdEFBQWlBUVJBSUFBZ0FXZEJGMnMyQWdRZ0FnOExJQUJCQURZQ0JFRi9Ed3NnQUNBQk5nSUlJQUFnQVMwQUFDSUROZ0lBQWtBQ1FBSkFJQUpCQW1zT0FnRUFBZ3NnQUNBQkxRQUNRUkIwSUFOeUlnTTJBZ0FMSUFBZ0FTMEFBVUVJZENBRGFqWUNBQXNnQVNBQ2FrRUJheTBBQUNJQlJRUkFJQUJCQURZQ0JFRnNEd3NnQUNBQlp5QUNRUU4wYTBFSmFqWUNCQ0FDQzBRQkFuOGdBU0FDTHdFQUlnTWdBU2dDQkdvaUJEWUNCQ0FBSUFOQkFuUkJvQjFxS0FJQUlBRW9BZ0JCQUNBRWEzWnhOZ0lBSUFFUUR4b2dBQ0FDUVFScU5nSUVDNThCQVFSL1FRTWhBU0FBS0FJRUlnSkJJRTBFUUNBQUtBSUlJZ0VnQUNnQ0VFOEVRQ0FBSUFKQkIzRTJBZ1FnQUNBQklBSkJBM1pySWdJMkFnZ2dBQ0FDS0FBQU5nSUFRUUFQQ3lBQUtBSU1JZ01nQVVZRVFFRUJRUUlnQWtFZ1NSc1BDeUFBSUFFZ0FTQURheUFDUVFOMklnUWdBU0FFYXlBRFNTSUJHeUlEYXlJRU5nSUlJQUFnQWlBRFFRTjBhellDQkNBQUlBUW9BQUEyQWdBTElBRUxTQUVFZnlBQUtBSUVJQUFvQWdCQkFuUnFJZ0l0QUFJZ0FpOEJBQ0VFSUFFZ0FTZ0NCQ0lGSUFJdEFBTWlBbW8yQWdRZ0FDQUVJQUVvQWdBZ0JYUkJBQ0FDYTNacU5nSUFDMUlCQkg4Z0FDZ0NCQ0FBS0FJQVFRSjBhaUlDTFFBQ0lBSXZBUUFoQkNBQklBSXRBQU1pQWlBQktBSUVhaUlGTmdJRUlBQWdCQ0FDUVFKMFFhQWRhaWdDQUNBQktBSUFRUUFnQld0MmNXbzJBZ0FMQ0FBZ0FFR0lmMHNMR2dBZ0FBUkFJQUVFUUNBQ0lBQWdBUkVDQUE4TElBQVFCZ3NMcGdnQ0RYOEJmaU1BUVJCcklna2tBQ0FKUVFBMkFnd2dDVUVBTmdJSUFuOENRQ0FEUWVnSmFpQURJQWxCQ0dvZ0NVRU1haUFCSUFJZ0EwR0FBV29RQ3lJUFFZaC9TdzBBUVZRZ0NTZ0NEQ0lFSUFBb0FnQWlBVUgvQVhGQkFXcExEUUVhSUFCQkJHb2hDeUFBSUFGQi80R0FlSEVnQkVFUWRFR0FnUHdIY1hJMkFnQkJmeUFFSUFSQkFFZ2JRUUZxSVFCQkFDRUJJQWtvQWdnaEJVRUFJUUlEUUNBQUlBSkdCRUFnQlVFRGF5RUJRUUFoQUFOQUFrQkJBQ0VDSUFBZ0FVNEVRQU5BSUFBZ0JVNE5BaUFESUFBZ0EycEI2QWxxTFFBQVFRSjBha0ZBYXlJQklBRW9BZ0FpQVVFQmFqWUNBQ0FCSUFOcUlBQTZBT2dISUFCQkFXb2hBQXdBQ3dBRkEwQWdBa0VFUmtVRVFDQURJQU1nQUNBQ2FpSUhha0hvQ1dvdEFBQkJBblJxUVVCcklnZ2dDQ2dDQUNJSVFRRnFOZ0lBSUFNZ0NHb2dCem9BNkFjZ0FrRUJhaUVDREFFTEN5QUFRUVJxSVFBTUFnc0FDd3NnQkVFQmFpRU9JQU1vQWdBaEIwRUFJUUJCQVNFSUEwQWdDQ0FPUmcwRElBNGdDR3NoQkNBRElBaEJBblJxS0FJQUlRVUNRQUpBQWtBQ1FBSkFBa0JCQVNBSWRFRUJkU0lOUVFGckRnZ0FBUVFDQkFRRUF3UUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUFJUUVEUUNBQ0lBWkdEUVVnQXlBQ0lBZHFhaTBBNkFjaENpQUxJQUZCQVhScUlnd2dCRG9BQVNBTUlBbzZBQUFnQWtFQmFpRUNJQUZCQVdvaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hDaUFBSVFFRFFDQUNJQXBHRFFRZ0N5QUJRUUYwYWlJR0lBTWdBaUFIYW1vdEFPZ0hJZ3c2QUFJZ0JpQUVPZ0FCSUFZZ0REb0FBQ0FHSUFRNkFBTWdBa0VCYWlFQ0lBRkJBbW9oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUVRUWgwUVlEK0EzRWhCQ0FBSVFFRFFDQUNJQVpHRFFNZ0N5QUJRUUYwYWlBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrTndBQUlBSkJBV29oQWlBQlFRUnFJUUVNQUFzQUMwRUFJUUlnQlVFQUlBVkJBRW9iSVFZZ0JFRUlkRUdBL2dOeElRUWdBQ0VCQTBBZ0FpQUdSZzBDSUFzZ0FVRUJkR29pQ2lBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSWhFM0FBZ2dDaUFSTndBQUlBSkJBV29oQWlBQlFRaHFJUUVNQUFzQUMwRUFJUUVnQlVFQUlBVkJBRW9iSVFvZ0JFRUlkRUdBL2dOeElRd2dBQ0VFQTBBZ0FTQUtSZzBCSUFzZ0JFRUJkR29oRUNBTUlBTWdBU0FIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSVJGQkFDRUNBMEFnQWlBTlRrVUVRQ0FRSUFKQkFYUnFJZ1lnRVRjQUdDQUdJQkUzQUJBZ0JpQVJOd0FJSUFZZ0VUY0FBQ0FDUVJCcUlRSU1BUXNMSUFGQkFXb2hBU0FFSUExcUlRUU1BQXNBQ3lBSVFRRnFJUWdnQlNBSGFpRUhJQVVnRFd3Z0FHb2hBQXdBQ3dBRklBTWdBa0VDZEdvaUIwRkFheUFCTmdJQUlBSkJBV29oQWlBSEtBSUFJQUZxSVFFTUFRc0FDd0FMSUE4TElBbEJFR29rQUF2eUFnRUdmeU1BUVNCcklnVWtBQ0FFS0FJQUlRWWdCVUVNYWlBQ0lBTVFEU0lEUVloL1RRUkFJQVJCQkdvaEFpQUFJQUZxSWdsQkEyc2hCRUVBSUFaQkVIWnJRUjl4SVFNRFFDQUZRUXhxRUE4Z0FDQUVUM0pGQkVBZ0FpQUZLQUlNSWdZZ0JTZ0NFQ0lIZENBRGRrRUJkR29pQ0MwQUFTRUtJQUFnQ0MwQUFEb0FBQ0FDSUFZZ0J5QUthaUlHZENBRGRrRUJkR29pQnkwQUFDRUlJQVVnQmlBSExRQUJhallDRUNBQUlBZzZBQUVnQUVFQ2FpRUFEQUVMQ3dOQUlBVkJER29RRHlFSElBVW9BZ3doQmlBRktBSVFJUVFnQUNBSlR5QUhja1VFUUNBQ0lBWWdCSFFnQTNaQkFYUnFJZ1l0QUFBaEJ5QUZJQVFnQmkwQUFXbzJBaEFnQUNBSE9nQUFJQUJCQVdvaEFBd0JDd3NEUUNBQUlBbFBSUVJBSUFJZ0JpQUVkQ0FEZGtFQmRHb2lCeTBBQVNFSUlBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0JDQUlhaUVFREFFTEMwRnNRV3dnQVNBRktBSVVJQVVvQWhoSEd5QUVRU0JIR3lFREN5QUZRU0JxSkFBZ0F3dlBGQUVqZnlNQVFkQUFheUlGSkFCQmJDRUpBa0FnQTBFS1NRMEFBa0FnQXlBQ0x3QUVJZ2NnQWk4QUFDSUlJQUl2QUFJaURXcHFRUVpxSWd4SkRRQWdCQzhCQWlFR0lBVkJQR29nQWtFR2FpSUNJQWdRRFNJSlFZaC9TdzBCSUFWQktHb2dBaUFJYWlJQ0lBMFFEU0lKUVloL1N3MEJJQVZCRkdvZ0FpQU5haUlDSUFjUURTSUpRWWgvU3cwQklBVWdBaUFIYWlBRElBeHJFQTBpQ1VHSWYwc05BU0FFUVFScUlRb2dBQ0FCYWlJZlFRTnJJU0JCQUNBR2EwRWZjU0VMSUFVb0FnZ2hFU0FGS0FJY0lSSWdCU2dDTUNFVElBVW9Ba1FoRkNBRktBSUVJUWtnQlNnQ0dDRU5JQVVvQWl3aERDQUZLQUpBSVFZZ0JTZ0NFQ0VoSUFVb0FpUWhJaUFGS0FJNElTTWdCU2dDVENFa0lBVW9BZ0FoRlNBRktBSVVJUllnQlNnQ0tDRVhJQVVvQWp3aEdFRUJJUThnQUNBQlFRTnFRUUoySWdScUlnTWdCR29pQWlBRWFpSVpJUVFnQWlFSUlBTWhCd05BSUE5QkFYRkZJQVFnSUU5eVJRUkFJQUFnQ2lBWUlBWjBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloR2lBT0xRQURJUkFnQnlBS0lCY2dESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdEaTBBQWlFYklBNHRBQU1oRHlBSUlBb2dGaUFOZENBTGRrRUNkR29pRGk4QkFEc0FBQ0FPTFFBQ0lSd2dEaTBBQXlFZElBUWdDaUFWSUFsMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhIaUFPTFFBRElRNGdBQ0FRYWlJbElBb2dHQ0FHSUJwcUlnWjBJQXQyUVFKMGFpSVFMd0VBT3dBQUlCQXRBQUlnRUMwQUF5RW1JQWNnRDJvaUp5QUtJQmNnRENBYmFpSWFkQ0FMZGtFQ2RHb2lCeThCQURzQUFDQUhMUUFDSVF3Z0J5MEFBeUVRSUFnZ0hXb2lHeUFLSUJZZ0RTQWNhaUlQZENBTGRrRUNkR29pQ0M4QkFEc0FBQ0FJTFFBQ0lRMGdDQzBBQXlFY0lBUWdEbW9pSFNBS0lCVWdDU0FlYWlJT2RDQUxka0VDZEdvaUNTOEJBRHNBQUNBR2FpRUFRUU1oQndKL0lCUWdKRWtFUUNBQUlRWkJBd3dCQ3lBQVFRZHhJUVlnRkNBQVFRTjJheUlVS0FBQUlSaEJBQXNnQ1MwQUF5RWVJQWt0QUFJaENDQU1JQnBxSVFBZ0V5QWpTUVIvSUFBRklCTWdBRUVEZG1zaUV5Z0FBQ0VYUVFBaEJ5QUFRUWR4Q3lFTUlBMGdEMm9oQUNBSGNpRUpRUU1oRHdKL0lCSWdJa2tFUUNBQUlRMUJBd3dCQ3lBQVFRZHhJUTBnRWlBQVFRTjJheUlTS0FBQUlSWkJBQXNnQ0NBT2FpRUFJQWx5SUJFZ0lVa0VmeUFBQlNBUklBQkJBM1pySWhFb0FBQWhGVUVBSVE4Z0FFRUhjUXNoQ1NBbElDWnFJUUFnRUNBbmFpRUhJQnNnSEdvaENDQWRJQjVxSVFRZ0QzSkZJUThNQVFzTElBVWdERFlDTENBRklBWTJBa0FnQlNBTk5nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUlnQjBrZ0FDQURTM0lOQUVGc0lRa2dDQ0FaU3cwQklBTkJBMnNoQ1FOQUlBVkJQR29RRDBVZ0FDQUpTWEVFUUNBQUlBb2dCU2dDUENJTklBVW9Ba0FpREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnQUNBT0xRQURhaUlHSUFvZ0RTQU1JQTR0QUFKcUlnQjBJQXQyUVFKMGFpSU1Md0VBT3dBQUlBVWdBQ0FNTFFBQ2FqWUNRQ0FHSUF3dEFBTnFJUUFNQVFVZ0EwRUNheUVNQTBBZ0JVRThhaEFQSVFZZ0JTZ0NQQ0VOSUFVb0FrQWhDU0FBSUF4TElBWnlSUVJBSUFBZ0NpQU5JQWwwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQ1NBR0xRQUNhallDUUNBQUlBWXRBQU5xSVFBTUFRc0xBMEFnQUNBTVMwVUVRQ0FBSUFvZ0RTQUpkQ0FMZGtFQ2RHb2lCaThCQURzQUFDQUFJQVl0QUFOcUlRQWdDU0FHTFFBQ2FpRUpEQUVMQ3dKQUlBQWdBMDhOQUNBQUlBb2dEU0FKZENBTGRpSUFRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSklBTXRBQUpxSVFrTUFRc2dDVUVmU3cwQVFTQWdDU0FLSUFCQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFrTElBSkJBMnNoREFOQUlBVkJLR29RRDBVZ0J5QU1TWEVFUUNBSElBb2dCU2dDS0NJR0lBVW9BaXdpQUhRZ0MzWkJBblJxSWcwdkFRQTdBQUFnQnlBTkxRQURhaUlESUFvZ0JpQUFJQTB0QUFKcUlnQjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBQ0FHTFFBQ2FqWUNMQ0FESUFZdEFBTnFJUWNNQVFVZ0FrRUNheUVHQTBBZ0JVRW9haEFQSVFNZ0JTZ0NLQ0VNSUFVb0Fpd2hBQ0FHSUFkSklBTnlSUVJBSUFjZ0NpQU1JQUIwSUF0MlFRSjBhaUlETHdFQU93QUFJQVVnQUNBRExRQUNhallDTENBSElBTXRBQU5xSVFjTUFRc0xBMEFnQmlBSFNVVUVRQ0FISUFvZ0RDQUFkQ0FMZGtFQ2RHb2lBeThCQURzQUFDQUhJQU10QUFOcUlRY2dBQ0FETFFBQ2FpRUFEQUVMQ3dKQUlBSWdCMDBOQUNBSElBb2dEQ0FBZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBQUlBTXRBQUpxSVFBTUFRc2dBRUVmU3cwQVFTQWdBQ0FLSUFKQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFBTElCbEJBMnNoREFOQUlBVkJGR29RRDBVZ0NDQU1TWEVFUUNBSUlBb2dCU2dDRkNJR0lBVW9BaGdpQW5RZ0MzWkJBblJxSWcwdkFRQTdBQUFnQ0NBTkxRQURhaUlESUFvZ0JpQUNJQTB0QUFKcUlnSjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBaUFHTFFBQ2FqWUNHQ0FESUFZdEFBTnFJUWdNQVFVZ0dVRUNheUVEQTBBZ0JVRVVhaEFQSVFJZ0JTZ0NGQ0VHSUFVb0FoZ2hCeUFESUFoSklBSnlSUVJBSUFnZ0NpQUdJQWQwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVVnQnlBQ0xRQUNhallDR0NBSUlBSXRBQU5xSVFnTUFRc0xBMEFnQXlBSVNVVUVRQ0FJSUFvZ0JpQUhkQ0FMZGtFQ2RHb2lBaThCQURzQUFDQUlJQUl0QUFOcUlRZ2dCeUFDTFFBQ2FpRUhEQUVMQ3dKQUlBZ2dHVThOQUNBSUlBb2dCaUFIZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSElBTXRBQUpxSVFjTUFRc2dCMEVmU3cwQVFTQWdCeUFLSUFKQkFuUnFMUUFDYWlJQ0lBSkJJRThiSVFjTEEwQWdCUkFQUlNBRUlDQkpjUVJBSUFRZ0NpQUZLQUlBSWdZZ0JTZ0NCQ0lDZENBTGRrRUNkR29pREM4QkFEc0FBQ0FFSUF3dEFBTnFJZ01nQ2lBR0lBSWdEQzBBQW1vaUFuUWdDM1pCQW5ScUlnUXZBUUE3QUFBZ0JTQUNJQVF0QUFKcU5nSUVJQU1nQkMwQUEyb2hCQXdCQlNBZlFRSnJJUU1EUUNBRkVBOGhBaUFGS0FJQUlRWWdCU2dDQkNFSUlBTWdCRWtnQW5KRkJFQWdCQ0FLSUFZZ0NIUWdDM1pCQW5ScUlnSXZBUUE3QUFBZ0JTQUlJQUl0QUFKcU5nSUVJQVFnQWkwQUEyb2hCQXdCQ3dzRFFDQURJQVJKUlFSQUlBUWdDaUFHSUFoMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0FpMEFBMm9oQkNBSUlBSXRBQUpxSVFnTUFRc0xBa0FnQkNBZlR3MEFJQVFnQ2lBR0lBaDBJQXQySWdKQkFuUnFJZ010QUFBNkFBQWdBeTBBQTBFQlJnUkFJQWdnQXkwQUFtb2hDQXdCQ3lBSVFSOUxEUUJCSUNBSUlBb2dBa0VDZEdvdEFBSnFJZ0lnQWtFZ1R4c2hDQXRCYkVGc1FXeEJiRUZzUVd4QmJFRnNJQUVnQ0VFZ1J4c2dCU2dDQ0NBRktBSU1SeHNnQjBFZ1J4c2dCU2dDSENBRktBSWdSeHNnQUVFZ1J4c2dCU2dDTUNBRktBSTBSeHNnQ1VFZ1J4c2dCU2dDUkNBRktBSklSeHNoQ1F3SkN3QUxBQXNBQ3dBTEFBc0FDd0FMQUF0QmJDRUpDeUFGUWRBQWFpUUFJQWtMN0JBQkhuOGpBRUhRQUdzaUJTUUFRV3doQ1FKQUlBTkJDa2tOQUFKQUlBTWdBaThBQkNJR0lBSXZBQUFpQnlBQ0x3QUNJZ2hxYWtFR2FpSU9TUTBBSUFRdkFRSWhEeUFGUVR4cUlBSkJCbW9pQWlBSEVBMGlDVUdJZjBzTkFTQUZRU2hxSUFJZ0Iyb2lBaUFJRUEwaUNVR0lmMHNOQVNBRlFSUnFJQUlnQ0dvaUFpQUdFQTBpQ1VHSWYwc05BU0FGSUFJZ0Jtb2dBeUFPYXhBTklnbEJpSDlMRFFFZ0JFRUVhaUVLSUFBZ0FXb2lIRUVEYXlFZFFRQWdEMnRCSDNFaEN5QUZLQUlJSVJFZ0JTZ0NIQ0VTSUFVb0FqQWhFeUFGS0FKRUlSUWdCU2dDQkNFSklBVW9BaGdoQmlBRktBSXNJUWNnQlNnQ1FDRUlJQVVvQWhBaEhpQUZLQUlrSVI4Z0JTZ0NPQ0VnSUFVb0Frd2hJU0FGS0FJQUlSVWdCU2dDRkNFV0lBVW9BaWdoRnlBRktBSThJUmhCQVNFTklBQWdBVUVEYWtFQ2RpSUNhaUlPSUFKcUlnOGdBbW9pR1NFRUlBOGhBaUFPSVFNRFFDQU5SU0FFSUIxUGNrVUVRQ0FLSUJnZ0NIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFBZ0NpQVhJQWQwSUF0MlFRRjBhaUlNTFFBQklSQWdBeUFNTFFBQU9nQUFJQW9nRmlBR2RDQUxka0VCZEdvaURDMEFBU0VhSUFJZ0RDMEFBRG9BQUNBS0lCVWdDWFFnQzNaQkFYUnFJZ3d0QUFFaEd5QUVJQXd0QUFBNkFBQWdDaUFZSUFnZ0RXb2lDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBRWdDaUFYSUFjZ0VHb2lCM1FnQzNaQkFYUnFJZ3d0QUFFaEVDQURJQXd0QUFBNkFBRWdDaUFXSUFZZ0dtb2lESFFnQzNaQkFYUnFJZ1l0QUFFaEdpQUNJQVl0QUFBNkFBRWdDaUFWSUFrZ0cyb2lHM1FnQzNaQkFYUnFJZ2t0QUFFaElpQUVJQWt0QUFBNkFBRWdDQ0FOYWlFR1FRTWhDUUovSUJRZ0lVa0VRRUVESVEwZ0Jnd0JDeUFVSUFaQkEzWnJJaFFvQUFBaEdFRUFJUTBnQmtFSGNRc2hDQ0FISUJCcUlRWWdFeUFnU1FSL0lBWUZJQk1nQmtFRGRtc2lFeWdBQUNFWFFRQWhDU0FHUVFkeEN5RUhJQXdnR21vaERDQUpJQTF5SVJCQkF5RU5BbjhnRWlBZlNRUkFJQXdoQmtFRERBRUxJQXhCQjNFaEJpQVNJQXhCQTNackloSW9BQUFoRmtFQUN5QWJJQ0pxSVF3Z0VISWhFQ0FSSUI1SkJIOGdEQVVnRVNBTVFRTjJheUlSS0FBQUlSVkJBQ0VOSUF4QkIzRUxJUWtnQkVFQ2FpRUVJQUpCQW1vaEFpQURRUUpxSVFNZ0FFRUNhaUVBSUEwZ0VISkZJUTBNQVFzTElBVWdCellDTENBRklBZzJBa0FnQlNBR05nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUFnRGtzZ0F5QVBTM0lOQUVGc0lRa2dBaUFaU3cwQklBNUJBMnNoQ1FOQUlBVkJQR29RRHlBQUlBbFBja1VFUUNBS0lBVW9BandpQmlBRktBSkFJZ2QwSUF0MlFRRjBhaUlJTFFBQklRd2dBQ0FJTFFBQU9nQUFJQW9nQmlBSElBeHFJZ1owSUF0MlFRRjBhaUlITFFBQUlRZ2dCU0FHSUFjdEFBRnFOZ0pBSUFBZ0NEb0FBU0FBUVFKcUlRQU1BUXNMQTBBZ0JVRThhaEFQSVFjZ0JTZ0NQQ0VHSUFVb0FrQWhDU0FBSUE1UElBZHlSUVJBSUFvZ0JpQUpkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdDU0FHTFFBQmFqWUNRQ0FBSUFjNkFBQWdBRUVCYWlFQURBRUxDd05BSUFBZ0RrOUZCRUFnQ2lBR0lBbDBJQXQyUVFGMGFpSUhMUUFCSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQ1dvaENRd0JDd3NnRDBFRGF5RUFBMEFnQlVFb2FoQVBJQUFnQTAxeVJRUkFJQW9nQlNnQ0tDSUdJQVVvQWl3aUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBRElBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFpd2dBeUFJT2dBQklBTkJBbW9oQXd3QkN3c0RRQ0FGUVNocUVBOGhCeUFGS0FJb0lRWWdCU2dDTENFQUlBTWdEMDhnQjNKRkJFQWdDaUFHSUFCMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBQUlBWXRBQUZxTmdJc0lBTWdCem9BQUNBRFFRRnFJUU1NQVFzTEEwQWdBeUFQVDBVRVFDQUtJQVlnQUhRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FESUFjdEFBQTZBQUFnQTBFQmFpRURJQUFnQ0dvaEFBd0JDd3NnR1VFRGF5RURBMEFnQlVFVWFoQVBJQUlnQTA5eVJRUkFJQW9nQlNnQ0ZDSUdJQVVvQWhnaUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBQ0lBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFoZ2dBaUFJT2dBQklBSkJBbW9oQWd3QkN3c0RRQ0FGUVJScUVBOGhCeUFGS0FJVUlRWWdCU2dDR0NFRElBSWdHVThnQjNKRkJFQWdDaUFHSUFOMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBRElBWXRBQUZxTmdJWUlBSWdCem9BQUNBQ1FRRnFJUUlNQVFzTEEwQWdBaUFaVDBVRVFDQUtJQVlnQTNRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FDSUFjdEFBQTZBQUFnQWtFQmFpRUNJQU1nQ0dvaEF3d0JDd3NEUUNBRkVBOGdCQ0FkVDNKRkJFQWdDaUFGS0FJQUlnSWdCU2dDQkNJR2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBS0lBSWdCaUFJYWlJQ2RDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0FpQUdMUUFCYWpZQ0JDQUVJQWM2QUFFZ0JFRUNhaUVFREFFTEN3TkFJQVVRRHlFSElBVW9BZ0FoQmlBRktBSUVJUUlnQkNBY1R5QUhja1VFUUNBS0lBWWdBblFnQzNaQkFYUnFJZ1l0QUFBaEJ5QUZJQUlnQmkwQUFXbzJBZ1FnQkNBSE9nQUFJQVJCQVdvaEJBd0JDd3NEUUNBRUlCeFBSUVJBSUFvZ0JpQUNkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUVRUUZxSVFRZ0FpQUlhaUVDREFFTEMwRnNRV3hCYkVGc1FXeEJiRUZzUVd3Z0FTQUNRU0JIR3lBRktBSUlJQVVvQWd4SEd5QURRU0JIR3lBRktBSWNJQVVvQWlCSEd5QUFRU0JIR3lBRktBSXdJQVVvQWpSSEd5QUpRU0JIR3lBRktBSkVJQVVvQWtoSEd5RUpEQUVMUVd3aENRc2dCVUhRQUdva0FDQUpDMWdCQTM4Q1FDQUFLQUtRNndFaUFVVU5BQ0FCS0FJQUlBRkJ0TlVCYWlnQ0FDSUNJQUZCdU5VQmFpZ0NBQ0lERUJNZ0FnUkFJQU1nQVNBQ0VRSUFEQUVMSUFFUUJnc2dBRUVBTmdLZzZ3RWdBRUlBTndPUTZ3RUw2UU1DQkg4Q2ZpQUFRUUJCS0JBRElRUWdBa0VCUVFVZ0F4c2lBRWtFUUNBQUR3c2dBVVVFUUVGL0R3dEJBU0VHQWtBQ1FDQURRUUZHRFFBZ0F5RUdJQUVvQUFBaUJVR282cjVwUmcwQVFYWWhBeUFGUVhCeFFkRFV0TUlCUncwQlFRZ2hBeUFDUVFoSkRRRWdBVFVBQkNFSUlBUkJBVFlDRkNBRUlBZzNBd0JCQUE4TElBRWdBaUFHRUJvaUF5QUNTdzBBSUFRZ0F6WUNHRUZ5SVFNZ0FDQUJhaUlGUVFGckxRQUFJZ0pCQ0hFTkFDQUNRU0J4SWdaRkJFQkJjQ0VESUFVdEFBQWlCVUduQVVzTkFTQUZRUWR4clVJQklBVkJBM1pCQ21xdGhpSUlRZ09JZmlBSWZDRUpJQUJCQVdvaEFBc2dBa0VHZGlFRklBSkJBblpCQUNFREFrQUNRQUpBQWtBZ0FrRURjVUVCYXc0REFBRUNBd3NnQUNBQmFpMEFBQ0VESUFCQkFXb2hBQXdDQ3lBQUlBRnFMd0FBSVFNZ0FFRUNhaUVBREFFTElBQWdBV29vQUFBaEF5QUFRUVJxSVFBTFFRRnhJUUlDZmdKQUFrQUNRQUpBSUFWQkFXc09Bd0VDQXdBTFFuOGdCa1VOQXhvZ0FDQUJhakVBQUF3REN5QUFJQUZxTXdBQVFvQUNmQXdDQ3lBQUlBRnFOUUFBREFFTElBQWdBV29wQUFBTElRZ2dCQ0FDTmdJZ0lBUWdBellDSENBRUlBZzNBd0JCQUNFRElBUkJBRFlDRkNBRUlBZ2dDU0FHR3lJSU53TUlJQVJDZ0lBSUlBZ2dDRUtBZ0FoYUd6NENFQXNnQXd0ZkFRRi9RYmgvSVFNZ0FVRUJRUVVnQWhzaUFrOEVmeUFBSUFKcVFRRnJMUUFBSWdCQkEzRkJBblJCb0I1cUtBSUFJQUpxSUFCQkJIWkJESEZCc0I1cUtBSUFhaUFBUVNCeElnRkZhaUFCUVFWMklBQkJ3QUJKY1dvRlFiaC9Dd3NNQUNBQUlBRWdBa0VBRUJrTGx3TUNCWDhDZmlNQVFVQnFJZ1FrQUFKQUEwQWdBVUVGVHdSQUFrQWdBQ2dBQUVGd2NVSFExTFRDQVVZRVFFSitJUWNnQVVFSVNRMEVJQUFvQUFRaUFrRjNTdzBFSUFKQkNHb2lBeUFCU3cwRUlBSkJnWDlKRFFFTUJBc2dCRUVZYWlBQUlBRVFHeUVDUW40Z0JDa0RHRUlBSUFRb0FpeEJBVWNiSUFJYklnZENmVllOQXlBSElBaDhJZ2dnQjFSQ2ZpRUhEUU1DUUFKQUlBRkJDRWtOQUNBQUtBQUFRWEJ4UWREVXRNSUJSdzBBSUFBb0FBUWlBa0YzU3cwRlFiaC9JQUpCQ0dvaUFpQUJJQUpKR3lFRERBRUxJQVJCR0dvZ0FDQUJFQnNpQWtHSWYwc0VRQ0FDSVFNTUFRdEJ1SDhoQXlBQ0RRQWdBU0FFS0FJd0lnSnJJUVVnQUNBQ2FpRUdBMEFnQmlBRklBUkJER29RSFNJRFFZaC9TdzBCSUFOQkEyb2lBaUFGU3dSQVFiaC9JUU1NQWdzZ0JTQUNheUVGSUFJZ0Jtb2hCaUFFS0FJUVJRMEFDeUFFS0FJNEJIOUJ1SDhoQXlBRlFRUkpEUUVnQmtFRWFnVWdCZ3NnQUdzaEF3c2dBMEdJZjBzTkF3c2dBU0FEYXlFQklBQWdBMm9oQUF3QkN3dENmaUFJSUFFYklRY0xJQVJCUUdza0FDQUhDMlFCQVg5QnVIOGhBd0pBSUFGQkEwa05BQ0FBTFFBQ0lRRWdBaUFBTHdBQUlnQkJBWEUyQWdRZ0FpQUFRUUYyUVFOeElnTTJBZ0FnQWlBQUlBRkJFSFJ5UVFOMklnQTJBZ2dDUUFKQUlBTkJBV3NPQXdJQkFBRUxRV3dQQ3lBQUlRTUxJQU1MUkFFQ2Z5QUJJQUlvQWdRaUF5QUJLQUlFYWlJRU5nSUVJQUFnQTBFQ2RFR2dIV29vQWdBZ0FTZ0NBRUVBSUFScmRuRTJBZ0FnQVJBUEdpQUFJQUpCQ0dvMkFnUUx6Z0VCQm45QnVuOGhDZ0pBSUFJb0FnUWlDQ0FDS0FJQUlnbHFJZzBnQVNBQWEwc05BRUZzSVFvZ0NTQUVJQU1vQWdBaUMydExEUUFnQUNBSmFpSUVJQUlvQWdnaURHc2hBaUFBSUFGQklHc2lBQ0FMSUFsQkFCQWdJQU1nQ1NBTGFqWUNBQUpBQWtBZ0JDQUZheUFNVHdSQUlBSWhCUXdCQ3lBTUlBUWdCbXRMRFFJZ0J5QUhJQUlnQldzaUFtb2lBU0FJYWs4RVFDQUVJQUVnQ0JBS0dnd0NDeUFDSUFocUlRZ2dCQ0FCUVFBZ0Ftc1FDaUFDYXlFRUN5QUVJQUFnQlNBSVFRRVFJQXNnRFNFS0N5QUtDOGNFQVFKL0lBQWdBMm9oQmdKQUlBTkJCMHdFUUFOQUlBQWdCazhOQWlBQUlBSXRBQUE2QUFBZ0FFRUJhaUVBSUFKQkFXb2hBZ3dBQ3dBTElBUkJBVVlFUUFKQUlBQWdBbXNpQlVFSFRRUkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSWdCVUVDZENJRlFjQWVhaWdDQUdvaUFpZ0FBRFlBQkNBQ0lBVkI0QjVxS0FJQWF5RUNEQUVMSUFBZ0Fpa0FBRGNBQUFzZ0FrRUlhaUVDSUFCQkNHb2hBQXNnQVNBR1R3UkFJQUFnQTJvaEFTQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUEwQWdBQ0FDS1FBQU53QUFJQUpCQ0dvaEFpQUFRUWhxSWdBZ0FVa05BQXdEQ3dBTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dBMEVSU1EwQklBQkJFR29oQUFOQUlBQWdBaWtBRURjQUFDQUFJQUlwQUJnM0FBZ2dBQ0FDS1FBZ053QVFJQUFnQWlrQUtEY0FHQ0FDUVNCcUlRSWdBRUVnYWlJQUlBRkpEUUFMREFFTEFrQWdBQ0FCU3dSQUlBQWhBUXdCQ3lBQklBQnJJUVVDUUNBRVFRRkhJQUFnQW10QkQwcHlSUVJBSUFJaEF3TkFJQUFnQXlrQUFEY0FBQ0FEUVFocUlRTWdBRUVJYWlJQUlBRkpEUUFMREFFTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dCVUVSU0EwQUlBQkJFR29oQUNBQ0lRTURRQ0FBSUFNcEFCQTNBQUFnQUNBREtRQVlOd0FJSUFBZ0F5a0FJRGNBRUNBQUlBTXBBQ2czQUJnZ0EwRWdhaUVESUFCQklHb2lBQ0FCU1EwQUN3c2dBaUFGYWlFQ0N3TkFJQUVnQms4TkFTQUJJQUl0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29oQWd3QUN3QUxDNjRIQWdWL0FYNGpBRUdBQVdzaUVTUUFJQkVnQXpZQ2ZFRi9JUThDUUFKQUFrQUNRQUpBSUFJT0JBRUFBd0lFQ3lBR1JRUkFRYmgvSVE4TUJBdEJiQ0VQSUFVdEFBQWlBaUFEU3cwRElBZ2dBa0VDZENJQ2FpZ0NBQ0VESUFJZ0Iyb29BZ0FoQWlBQVFRQTZBQXNnQUVJQU53SUFJQUFnQWpZQ0RDQUFJQU02QUFvZ0FFRUFPd0VJSUFFZ0FEWUNBRUVCSVE4TUF3c2dBU0FKTmdJQVFRQWhEd3dDQ3lBS1JRUkFRV3doRHd3Q0MwRUFJUThnQzBVZ0RFRVpTSElOQVVFSUlBUjBRUWhxSVFCQkFDRURBMEFnQUNBRFRRMENJQU5CUUdzaEF3d0FDd0FMUVd3aER5QVJJQkZCL0FCcUlCRkIrQUJxSUFVZ0JoQU1JZ05CaUg5TERRQWdFU2dDZUNJQ0lBUkxEUUFnRVNnQ2ZFRUJhaUVKSUFCQkNHb2hDMEdBZ0FJZ0FuUkJFSFVoQlVFQklSQkJBU0FDZENJUFFRRnJJZ29oRWdOQUlBa2dEa2NFUUFKQUlCRWdEa0VCZENJRWFpOEJBQ0lNUWYvL0EwWUVRQ0FMSUJKQkEzUnFJQTQyQWdRZ0VrRUJheUVTUVFFaERBd0JDeUFRUVFBZ0JTQU13VW9iSVJBTElBUWdEV29nRERzQkFDQU9RUUZxSVE0TUFRc0xJQUFnQWpZQ0JDQUFJQkEyQWdBQ1FDQUtJQkpHQkVBZ0RVSHFBR29oQmtFQUlSQkJBQ0VNQTBBZ0NTQVFSZ1JBSUE5QkEzWWdEMEVCZG1wQkEyb2lCVUVCZENFRVFRQWhERUVBSVJJRFFFRUFJUTRnRHlBU1RRMEVBMEFnRGtFQ1J3UkFJQXNnQlNBT2JDQU1haUFLY1VFRGRHb2dCaUFPSUJKcWFpMEFBRFlDQkNBT1FRRnFJUTRNQVFzTElCSkJBbW9oRWlBRUlBeHFJQXB4SVF3TUFBc0FCU0FSSUJCQkFYUnFMZ0VBSVFVZ0JpQU1haUlFSUJNM0FBQkJDQ0VPQTBBZ0JTQU9TZ1JBSUFRZ0Rtb2dFemNBQUNBT1FRaHFJUTRNQVFzTElCTkNnWUtFaUpDZ3dJQUJmQ0VUSUJCQkFXb2hFQ0FGSUF4cUlRd01BUXNBQ3dBTElBOUJBM1lnRDBFQmRtcEJBMm9oQlVFQUlSQkJBQ0VPQTBBZ0NTQVFSZzBCUVFBaERDQVJJQkJCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQU1Sd1JBSUFzZ0RrRURkR29nRURZQ0JBTkFJQVVnRG1vZ0NuRWlEaUFTU3cwQUN5QU1RUUZxSVF3TUFRc0xJQkJCQVdvaEVBd0FDd0FMSUFKQkFXb2hCVUVBSVF3RFFDQU1JQTlIQkVBZ0RTQUxJQXhCQTNScUlna29BZ1FpQkVFQmRHb2lBaUFDTHdFQUlnWkJBV283QVFBZ0NTQUZJQVpuUVdCemFpSUNPZ0FESUFrZ0JpQUNkQ0FQYXpzQkFDQUpJQWdnQkVFQ2RDSUNhaWdDQURvQUFpQUpJQUlnQjJvb0FnQTJBZ1FnREVFQmFpRU1EQUVMQ3lBQklBQTJBZ0FnQXlFUEN5QVJRWUFCYWlRQUlBOEw3Vm9DTzM4R2ZpTUFRZUFCYXlJRUpBQUNRRUd3N0FrUUJTSUZSUVJBUVVBaEJ3d0JDeUFGUWdBM0F2VHFBU0FGUVFBMkFzVHJBU0FGUVFBMkFyVHJBU0FGUWdBM0FwenJBU0FGUVFBMkFyanBBU0FGUVFBMkFxenNDU0FGUWdBM0F0VHJBU0FGUWdBM0FxenJBU0FGUWdBM0E0anJBU0FGUWdBM0F1VHFBU0FGUWdBM0F1VHJBU0FGUVlHQWdNQUFOZ0s4NndFZ0JVSUFOd0trNndFZ0JVSDg2Z0ZxUVFBMkFnQWdCVUdRNndGcVFnQTNBd0FnQlJBWUlBVkJyTlVCYWlFVUlBVkIrT3NCYWlFY0lBVkJzT29CYWlFaUlBVkJvREJxSVNvZ0JVR1lJR29oS3lBRlFhalFBR29oSGlBRlFSQnFJU3dnQlVFSWFpRW9JQVZCQkdvaExTQUZRY0RwQVdvaEtTQUZRWWpyQVdvZ0JFR1VBV29oTHlBRVFZd0JhaUV3SUFSQmhBRnFJVEVnQkVIY0FHb2hNaUFFUWRRQWFpRXpJQVJCekFCcUlUUWdBQ0VkQWtBQ1FBSkFBa0FDUUFOQVFRRkJCU0FGS0FMazZnRWJJUVlDUUFOQUlBTWdCa2tOQVNBQ0tBQUFRWEJ4UWREVXRNSUJSZ1JBUWJoL0lRY2dBMEVJU1EwSUlBSW9BQVFpRGtGM1N3UkFRWEloQnd3SkN5QURJQTVCQ0dvaUNVa05DQ0FPUVlCL1N3UkFJQWtoQnd3SkN5QURJQWxySVFNZ0FpQUphaUVDREFFTEN5QUZRZ0EzQXF6cEFTQUZRZ0EzQStqcEFTQUZRUUEyQXBqckFTQUZRZ0EzQTREcUFTQUZRZ00zQS9qcEFTQUZRYlRwQVdwQ0FEY0NBQ0FGUWZEcEFXcENBRGNEQUNBRlFhalFBR29pQ1VHTWdJRGdBRFlDQUNBRlFhelFBV3BCNEJJcEFnQTNBZ0FnQlVHMDBBRnFRZWdTS0FJQU5nSUFJQVVnQlVFUWFqWUNBQ0FGSUFWQm9EQnFOZ0lFSUFVZ0JVR1lJR28yQWdnZ0JTQUpOZ0lNSUFWQkFVRUZJQVVvQXVUcUFSczJBcnpwQVFKQUlBRkZEUUFnQlNnQ3JPa0JJZ2tnSFVZTkFDQUZJQWsyQXJqcEFTQUZJQjAyQXF6cEFTQUZLQUt3NlFFaERpQUZJQjAyQXJEcEFTQUZJQjBnRGlBSmEybzJBclRwQVF0QnVIOGhDU0FEUVFWQkNTQUZLQUxrNmdFaUJodEpEUVVnQWtFQlFRVWdCaHNnQmhBYUlnNUJpSDlMQkVBZ0RpRUpEQVVMSUFNZ0RrRURha2tOQlNBcElBSWdEaUFHRUJraUJrR0lmMHNFUUNBR0lRa01CUXNnQmcwRkFrQUNRQ0FGS0FLbzZ3RkJBVWNOQUNBRktBS2s2d0VpQ1VVTkFDQUZLQUtVNndGRkRRQWdDU2dDQkVFQmF5SUhJQVVvQXR6cEFTSUtyVUtIbGErdm1MYmVtNTUvZmtMSno5bXk4ZVc2NmllRlFoZUpRcy9XMDc3U3g2dlpRbjVDK2ZQZDhabjJtYXNXZkNJL1FpR0lJRCtGUXMvVzA3N1N4NnZaUW40aVAwSWRpQ0EvaFVMNTg5M3htZmFacXhaK0lqOUNJSWdnUDRXbmNTRUdJQWtvQWdBaEZRTkFRUUFoQ0FKQUlCVWdCa0VDZEdvb0FnQWlDVVVOQUNBSktBSUlRUWhKRFFBZ0NTZ0NCQ0lTS0FBQVFiZkl3dUYrUncwQUlCSW9BQVFoQ0FzZ0NDQUtSd1JBSUFZZ0IzRkJBV29oQmlBSURRRUxDeUFKUlEwQUlBVVFHQ0FGUVg4MkFxRHJBU0FGSUFrMkFwVHJBU0FGSUFVb0F0enBBU0lJTmdLWTZ3RU1BUXNnQlNnQzNPa0JJUWdMQWtBZ0NFVU5BQ0FGS0FLWTZ3RWdDRVlOQUVGZ0lRa01CZ3NDUUNBRktBTGc2UUVFUUNBRklBVW9BdWpxQVNJSlJUWUM3T29CSUFrTkFTQUZRdm5xME5EbnlhSGs0UUEzQTZqcUFTQUZRZ0EzQTZEcUFTQUZRcy9XMDc3U3g2dlpRamNEbU9vQklBVkMxdXVDN3VyOWlmWGdBRGNEa09vQklBVkNBRGNEaU9vQklDSkJBRUVvRUFNYURBRUxJQVZCQURZQzdPb0JDeUFCSUIxcUlTVWdCU0FGS1FQbzZRRWdEcTE4TndQbzZRRWdBeUFPYXlFRElBSWdEbW9oQWlBZElRNERRQ0FDSUFNZ0JFRXNhaEFkSWhWQmlIOUxCRUFnRlNFSkRBWUxJQU5CQTJzaU5TQVZTUTBFSUFKQkEyb2hHMEZzSVFrQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFS0FJc0RnTUNBUUFWQ3lBVlFmLy9CMHNORXlBVlFRTkpEUklnQlNrRHlPa0JJVDhDUUFKQUlCc3RBQUFpQ1VFRGNTSWFRUUZyRGdNR0FRQUhDeUFGS0FLQTZnRU5BRUZpSVFrTUZRc2dGVUVGU1EwU0lCc29BQUFoQXdKL0FrQUNRQUpBSUFsQkFuWkJBM0VpQ1VFQ2F3NENBUUlBQ3lBSlFRQkhJUWNnQTBFRWRrSC9CM0VoQzBFRElRWWdBMEVPZGtIL0IzRU1BZ3RCQkNFR0lBTkJCSFpCLy84QWNTRUxRUUVoQnlBRFFSSjJEQUVMSUFOQkJIWkIvLzhQY1NJTFFZQ0FDRXNORTBFQklRZEJCU0VHSUFJdEFBZEJDblFnQTBFV2RuSUxJZ2dnQm1vaUNTQVZTdzBTQWtBZ0MwR0JCa2tOQUNBRktBS2M2d0ZGRFFCQkFDRURBMEFnQTBHRGdBRkxEUUVnQTBGQWF5RUREQUFMQUFzZ0JpQWJhaUVQSUJwQkEwY05CaUFGS0FJTUlnSXRBQUZCQ0hRaEF5QUhEUWNnQTBVTkNDQUVRZkFBYWlBUElBZ1FEU0lEUVloL1N3MEpJQUpCQkdvaEJpQUxJQnhxSWhKQkEyc2hDa0VBSUFJdkFRSnJRUjl4SVFjZ0hDRURBMEFnQkVId0FHb1FEMFVnQXlBS1NYRUVRQ0FESUFZZ0JDZ0NjQ0lJSUFRb0FuUWlEM1FnQjNaQkFuUnFJZ0l2QVFBN0FBQWdBeUFDTFFBRGFpSURJQVlnQ0NBUElBSXRBQUpxSWdoMElBZDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0NDQUNMUUFDYWpZQ2RDQURJQUl0QUFOcUlRTU1BUVVnRWtFQ2F5RUlBMEFnQkVId0FHb1FEeUVQSUFRb0FuQWhDaUFFS0FKMElRSWdBeUFJU3lBUGNrVUVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lDaThCQURzQUFDQUVJQUlnQ2kwQUFtbzJBblFnQXlBS0xRQURhaUVEREFFTEN3TkFJQU1nQ0UwRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUR5OEJBRHNBQUNBRElBOHRBQU5xSVFNZ0FpQVBMUUFDYWlFQ0RBRUxDd0pBSUFNZ0VrOE5BQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lBeTBBQURvQUFDQURMUUFEUVFGR0JFQWdBaUFETFFBQ2FpRUNEQUVMSUFKQkgwc05BRUVnSUFJZ0F5MEFBbW9pQWlBQ1FTQlBHeUVDQzBGc1FXd2dDeUFFS0FKNElBUW9BbnhIR3lBQ1FTQkhHeUVEREFzTEFBc0FDeUFFS0FJMElnSWdKU0FPYTBzTkNpQU9SUVJBUVFBaENTQUNEUUlNRGdzZ0RpQWJMUUFBSUFJUUF4b2dBaUVKREF3TElCVWdKU0FPYTBzTkNTQU9EUUZCQUNFSklCVkZEUXdMUWJaL0lRa01FUXNnRGlBYklCVVFBaG9nRlNFSkRBb0xJQndnR3dKL0FrQUNRQUpBSUFsQkFuWkJBM0ZCQVdzT0F3RUFBZ0FMSUFsQkEzWWhBMEVCREFJTElCc3ZBQUJCQkhZaEEwRUNEQUVMSUJWQkJFa05EaUFDTHdBRElBSXRBQVZCRUhSeUlnSkJqNENBQVVzTkRpQUNRUVIySVFOQkF3c2lBbW90QUFBZ0EwRWdhaEFESVFrZ0JTQUROZ0tBNndFZ0JTQUpOZ0x3NmdFZ0FrRUJhaUVKREFVTElCVUNmd0pBQWtBQ1FDQUpRUUoyUVFOeFFRRnJEZ01CQUFJQUN5QUpRUU4ySVFOQkFRd0NDeUFiTHdBQVFRUjJJUU5CQWd3QkN5QUNMd0FESUFJdEFBVkJFSFJ5UVFSMklRTkJBd3NpQWlBRGFpSUpRU0JxU1FSQUlBa2dGVXNORFNBY0lBSWdHMm9nQXhBQ0lRSWdCU0FETmdLQTZ3RWdCU0FDTmdMdzZnRWdBaUFEYWlJQ1FnQTNBQmdnQWtJQU53QVFJQUpDQURjQUNDQUNRZ0EzQUFBTUJRc2dCU0FETmdLQTZ3RWdCU0FDSUJ0cU5nTHc2Z0VNQkFzZ0IwVUVRQ0FlSUE4Z0NDQVVFQlFpQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZTRUREQU1MSUF0RklBaEZjZzBMSUF0QkNIWWlBeUFJSUF0SkJIOGdDRUVFZENBTGJnVkJEd3RCR0d3aUFrR01DR29vQWdCc0lBSkJpQWhxS0FJQWFpSUdRUU4ySUFacUlBSkJnQWhxS0FJQUlBSkJoQWhxS0FJQUlBTnNha2tFUUNNQVFSQnJJaEFrQUNBZUtBSUFJUU1nRkVId0JHcEJBRUhzQUJBRElRWkJWQ0VDQWtBZ0EwSC9BWEVpREVFTVN3MEFBa0FnRkVIY0NXb2dCaUFRUVFocUlCQkJER29nRHlBSUlCUkIzQXRxSWhjUUN5SVNRWWgvU3cwQUlCQW9BZ3dpQmlBTVN3MEJJQlJCcUFWcUlRMGdGRUdrQldvaE5pQWVRUVJxSVJFZ0EwR0FnSUI0Y1NFM0lBWkJBV29pRXlFQ0lBWWhBd05BSUFJaUIwRUJheUVDSUFNaUNrRUJheUVESUJRZ0NrRUNkR29vQXZBRVJRMEFDMEVCSUFjZ0IwRUJUUnNoRmtFQUlRZEJBU0VDQTBBZ0FpQVdSd1JBSUJRZ0FrRUNkQ0lEYWlnQzhBUWhHQ0FESUExcUlBYzJBZ0FnQWtFQmFpRUNJQWNnR0dvaEJ3d0JDd3NnRFNBSE5nSUFRUUFoQWlBUUtBSUlJUU1EUUNBQ0lBTkhCRUFnRFNBQ0lCUnFRZHdKYWkwQUFDSVlRUUowYWlJWklCa29BZ0FpR1VFQmFqWUNBQ0FVSUJsQkFYUnFJaGtnR0RvQTNRVWdHU0FDT2dEY0JTQUNRUUZxSVFJTUFRc0xRUUFoQXlBTlFRQTJBZ0FnRENBR1FYOXphaUVHUVFFaEFnTkFJQUlnRmtjRVFDQVVJQUpCQW5ScUlnMGdBellDQUNBTktBTHdCQ0FDSUFacWRDQURhaUVESUFKQkFXb2hBZ3dCQ3dzZ0RDQVRJQXBySWdaclFRRnFJUW9nQmlFREEwQWdBeUFLU1FSQUlCUWdBMEUwYkdvaERVRUJJUUlEUUNBQ0lCWkhCRUFnRFNBQ1FRSjBJaGhxSUJRZ0dHb29BZ0FnQTNZMkFnQWdBa0VCYWlFQ0RBRUxDeUFEUVFGcUlRTU1BUXNMSUJjZ0ZFRTBFQUloT0NBVVFaQU1haUU1SUJNZ0RHc2hPaUFVUWR3RmFpRVhRUUFoQ2dOQUFrQUNRQ0FISUFwSEJFQkJBU0FNSUJNZ0Z5QUtRUUYwYWlJQ0xRQUJJZzFySWdOckloaDBJUmtnQWkwQUFDRVdJRGdnRFVFQ2RHb2lIeWdDQUNFQ0lBWWdHRTBFUUNBMlFRRWdBeUE2YWlJTklBMUJBVXdiSWlCQkFuUWlKR29vQWdBaERTQTVJQlFnQTBFMGJHcEJOQkFDSVNFZ0RVRUJkQ0VtSUJFZ0FrRUNkR29oSXlBZ1FRRk5EUUlnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFZ0lDRWdKR29vQWdBaEpFRUFJUUlEUUNBQ0lDUkdEUU1nSXlBQ1FRSjBhaUFnTmdFQUlBSkJBV29oQWd3QUN3QUxJQUlnQWlBWmFpSU5JQUlnRFVzYklRMGdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVEQTBBZ0FpQU5SZzBESUJFZ0FrRUNkR29nQXpZQkFDQUNRUUZxSVFJTUFBc0FDeUFlSUF4QkVIUWdOM0lnREhKQmdBSnlOZ0lBREFNTElBY2dEV3NoSkNBWElDWnFJU1pCQUNFTkEwQWdEU0FrUmcwQlFRRWdHQ0FUSUNZZ0RVRUJkR29pSnkwQUFTSUNheUk3YTNRaVBDQWhJQUpCQW5ScUlpQW9BZ0FpQW1vaFBTQURJRHRxUVJCMFFZQ0EvQWR4SUNjdEFBQkJDSFJ5SUJaeVFZQ0FnQkJ5SVNjRFFDQWpJQUpCQW5ScUlDYzJBUUFnQWtFQmFpSUNJRDFKRFFBTElDQWdJQ2dDQUNBOGFqWUNBQ0FOUVFGcUlRME1BQXNBQ3lBZklCOG9BZ0FnR1dvMkFnQWdDa0VCYWlFS0RBQUxBQXNnRWlFQ0N5QVFRUkJxSkFBZ0FrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGaUVEREFNTElCNGdEeUFJSUJRUUZDSUNRWWgvU3lBQ0lBaFBjZzBMSUJ3Z0N5QUNJQTlxSUFnZ0Ftc2dIaEFYSVFNTUFnc2dBd1JBSUJ3Z0N5QVBJQWdnQWhBV0lRTU1BZ3NnSENBTElBOGdDQ0FDRUJjaEF3d0JDeUFjSUFzZ0R5QUlJQUlRRlNFREN5QURRWWgvU3cwSUlBVWdDellDZ09zQklBVWdIRFlDOE9vQklBVkJBVFlDZ09vQklCcEJBa1lFUUNBRklCNDJBZ3dMSUFzZ0hHb2lBa0lBTndBQUlBSkNBRGNBR0NBQ1FnQTNBQkFnQWtJQU53QUlJQWxCaUg5TERRb0xJQWtnRlVZTkNDQVZJQWxySVFZZ0JTZ0NuT3NCSVFvQ1FDQUpJQnRxSWdNdEFBQWlEMFVFUUVFQklRSkJBQ0VQUWJoL0lRa2dCa0VCUmcwQkRBc0xBbjhnQTBFQmFpQVB3Q0lDUVFCT0RRQWFJQUpCZjBZRVFDQUdRUU5JRFFzZ0F5OEFBVUdBL2dGcUlROGdBMEVEYWd3QkN5QUdRUUpJRFFvZ0F5MEFBU0FQUVFoMGNrR0FnQUpySVE4Z0EwRUNhZ3NoRWtHNGZ5RUpJQkpCQVdvaUFpQVZJQnRxSWdkTERRb2dMQ0FGSUJJdEFBQWlFa0VHZGtFalFRa2dBaUFISUFKclFjQVFRZEFSUWZBU0lBVW9Bb1RxQVNBS0lBOGdGQkFoSWdsQmlIOUxEUWdnS3lBb0lCSkJCSFpCQTNGQkgwRUlJQUlnQ1dvaUFpQUhJQUpyUVlBTFFZQU1RWUFYSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUNFR0lmMHNOQ0VGc0lRa2dLaUF0SUJKQkFuWkJBM0ZCTkVFSklBSWdDR29pQWlBSElBSnJRWUFOUWVBT1FaQVpJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQjBHSWYwc05DaUFDSUFkcUlBTnJJZ0loQ1NBQ1FZaC9TdzBLQ3lBT0lBOUJBRXh5RFFFTFFicC9JUWtNQ0FzZ0pTQU9heUVKSUFZZ0Ftc2hCaUFDSUFOcUlRY0NRQUpBQWtBZ0NrVUVRQ0FQUVFsSUlBVXBBOGpwQVVLQmdJQUlWSElOQWlBb0tBSUFJZ0pCQ0dvaEVpQUNLQUlFSVFwQkFDRURRUUFoQWdOQUlBTWdDblpGQkVBZ0FpQVNJQU5CQTNScUxRQUNRUlpMYWlFQ0lBTkJBV29oQXd3QkN3c2dCVUVBTmdLYzZ3RWdBa0VJSUFwcmRFRVVUdzBCREFNTElBVkJBRFlDbk9zQkN5QUVJQVVvQXZEcUFTSUROZ0xjQVNBSklBNXFJUllnQXlBRktBS0E2d0ZxSVJjQ1FDQVBSUVJBSUE0aEJ3d0JDeUFGS0FLNDZRRWhHaUFGS0FLMDZRRWhHQ0FGS0FLdzZRRWhFaUFGUVFFMkFvVHFBVUVBSVFNRFFDQURRUU5IQkVBZ0JDQURRUUowSWdKcUlBSWdCV3BCck5BQmFpZ0NBRFlDWkNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUVRocUlnSWdCeUFHRUExQmlIOUxEUU5CQ0NBUElBOUJDRTRiSVI4Z05DQUNJQVVvQWdBUUhpQXpJQUlnQlNnQ0NCQWVJRElnQWlBRktBSUVFQjRnRGlBU2F5RVpRUUFoQ0FOQUlBUkJPR29RRDBFRFJpQUlJQjlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ2RCRUhZaUVVSC9BWEVoQ3lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklneEJFSFlpSVVIL0FYRWhFQ0FFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRWWdRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ2tIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSUtheUlOSUFJZ0FpQU5TeHNpRXlBS2FqWUNQQ0FHSUFRb0FqZ2dDblJCQUNBVGEzWWdBaUFUYXlJVGRHb2hDaUFFUVRocUVBOGFJQUlnRFUwTkFTQUVJQVFvQWp3aUFpQVRhallDUENBRUtBSTRJQUowUVFBZ0UydDJJQXBxSVFvTUFRc2dCQ0FDSUFRb0Fqd2lEV28yQWp3Z0JDZ0NPQ0FOZEVFQUlBcHJkaUFHYWlFS0lBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlBbzJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FEQkVBZ0JDZ0NaQ0VLREFNTElBUW9BbWdoQ2d3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBWWdBMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ1pGSUFacUlRb2dBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUFvMkFtUUxweUVDSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lCQnFOZ0k4SUFRb0FqZ2dCblJCQUNBaGEzWWdBbW9oQWdzZ0N5QVFha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQXRxTmdJOElBUW9BamdnQm5SQkFDQVJhM1lnQTJvaEF3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUJrRUFJQWRCR0hZaUN5QUVLQUk4YWlJUWEzWWdDMEVDZEVHZ0hXb29BZ0J4SUFkQi8vOERjV28yQWt3Z0JDQVFJQXhCR0hZaUIyb2lDellDUENBRUlBZEJBblJCb0IxcUtBSUFJQVpCQUNBTGEzWnhJQXhCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnWkJHSFlpQnlBRUtBSThhaUlMTmdJOElBUWdCMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQXRyZG5FZ0JrSC8vd054YWpZQ1ZDQUVRZkFBYWlBSVFReHNhaUlHSUFvMkFnZ2dCaUFDTmdJRUlBWWdBellDQUNBSVFRRnFJUWdnQXlBWmFpQUNhaUVaREFFTEN5QUlJQjlJRFFNZ0ZrRWdheUVoSUE0aEJ3TkFJQVJCT0dvUUQwRURSaUFJSUE5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdaQkVIWWlJMEgvQVhFaENpQUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZzFCRUhZaUlFSC9BWEVoRXlBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUU1nUVVJZ2lDQkFRaUNJcHlFTEFrQWdRa0lRaUtjaURFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lNYXlJUklBSWdBaUFSU3hzaUVDQU1hallDUENBRElBUW9BamdnREhSQkFDQVFhM1lnQWlBUWF5SU1kR29oRUNBRVFUaHFFQThhSUFJZ0VVME5BU0FFSUFRb0Fqd2lBaUFNYWpZQ1BDQUVLQUk0SUFKMFFRQWdER3QySUJCcUlSQU1BUXNnQkNBQ0lBUW9BandpRUdvMkFqd2dCQ2dDT0NBUWRFRUFJQXhyZGlBRGFpRVFJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQkEyQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBTEJFQWdCQ2dDWkNFUURBTUxJQVFvQW1naEVBd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQU1nQzBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdORklBTnFJUkFnQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlCQTJBbVFMcHlFTUlFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQk5xTmdJOElBUW9BamdnQW5SQkFDQWdhM1lnREdvaERBc2dDaUFUYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUFwcU5nSThJQVFvQWpnZ0FuUkJBQ0FqYTNZZ0Myb2hDd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lBa0VBSUFaQkdIWWlBeUFFS0FJOGFpSUthM1lnQTBFQ2RFR2dIV29vQWdCeElBWkIvLzhEY1dvMkFrd2dCQ0FLSUExQkdIWWlBMm9pQmpZQ1BDQUVJQU5CQW5SQm9CMXFLQUlBSUFKQkFDQUdhM1p4SUExQi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ0pCR0hZaUF5QUVLQUk4YWlJR05nSThJQVFnQTBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUFacmRuRWdBa0gvL3dOeGFqWUNWQUpBQWtBQ1FDQUVLQUxjQVNJRElBUkI4QUJxSUFoQkIzRkJER3hxSWhNb0FnQWlFV29pSXlBWFN3MEFJQWNnRXlnQ0JDSU5JQkZxSWdwcUlDRkxEUUFnQ2tFZ2FpQVdJQWRyVFEwQkN5QUVJQk1vQWdnMkFoZ2dCQ0FUS1FJQU53TVFJQWNnRmlBRVFSQnFJQVJCM0FGcUlCY2dFaUFZSUJvUUh5RUtEQUVMSUFjZ0VXb2hBaUFUS0FJSUlRWWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQUpBSUJGQkVVa05BQ0FISUFNcEFCQTNBQkFnQnlBREtRQVlOd0FZSUJGQkVHdEJFVWdOQUNBRFFSQnFJUU1nQjBFZ2FpRVJBMEFnRVNBREtRQVFOd0FBSUJFZ0F5a0FHRGNBQ0NBUklBTXBBQ0EzQUJBZ0VTQURLUUFvTndBWUlBTkJJR29oQXlBUlFTQnFJaEVnQWtrTkFBc0xJQUlnQm1zaEF5QUVJQ00yQXR3QklBSWdFbXNnQmtrRVFDQUdJQUlnR0d0TERRY2dHaUFhSUFNZ0Vtc2lBMm9pRVNBTmFrOEVRQ0FDSUJFZ0RSQUtHZ3dDQ3lBRElBMXFJUTBnQWlBUlFRQWdBMnNRQ2lBRGF5RUNJQkloQXdzZ0JrRVFUd1JBSUFJZ0F5a0FBRGNBQUNBQ0lBTXBBQWczQUFnZ0RVRVJTQTBCSUFJZ0RXb2hCaUFDUVJCcUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFHU1EwQUN3d0JDd0pBSUFaQkIwMEVRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURJQVpCQW5RaUJrSEFIbW9vQWdCcUlnTW9BQUEyQUFRZ0F5QUdRZUFlYWlnQ0FHc2hBd3dCQ3lBQ0lBTXBBQUEzQUFBTElBMUJDVWtOQUNBQ0lBMXFJUkVnQWtFSWFpSUdJQU5CQ0dvaUEydEJEMHdFUUFOQUlBWWdBeWtBQURjQUFDQURRUWhxSVFNZ0JrRUlhaUlHSUJGSkRRQU1BZ3NBQ3lBR0lBTXBBQUEzQUFBZ0JpQURLUUFJTndBSUlBMUJHVWdOQUNBQ1FSaHFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBUlNRMEFDd3NnQ2tHSWYwc0VRQ0FLSVFrTUJnVWdFeUFRTmdJSUlCTWdERFlDQkNBVElBczJBZ0FnQ0VFQmFpRUlJQWNnQ21vaEJ5QUxJQmxxSUF4cUlSa01BZ3NBQ3dzZ0NDQVBTQTBESUFnZ0gyc2hCZ05BQWtBZ0JpQVBUZ1JBUVFBaEF3TkFJQU5CQTBZTkFpQUZJQU5CQW5RaUFtcEJyTkFCYWlBQ0lBUnFLQUprTmdJQUlBTkJBV29oQXd3QUN3QUxBa0FDUUFKQUlBUW9BdHdCSWdNZ0JFSHdBR29nQmtFSGNVRU1iR29pQ0NnQ0FDSU1haUlRSUJkTERRQWdCeUFJS0FJRUlnc2dER29pQ21vZ0lVc05BQ0FLUVNCcUlCWWdCMnRORFFFTElBUWdDQ2dDQ0RZQ0tDQUVJQWdwQWdBM0F5QWdCeUFXSUFSQklHb2dCRUhjQVdvZ0Z5QVNJQmdnR2hBZklRb01BUXNnQnlBTWFpRUNJQWdvQWdnaENDQUhJQU1wQUFBM0FBQWdCeUFES1FBSU53QUlBa0FnREVFUlNRMEFJQWNnQXlrQUVEY0FFQ0FISUFNcEFCZzNBQmdnREVFUWEwRVJTQTBBSUFOQkVHb2hBeUFIUVNCcUlRd0RRQ0FNSUFNcEFCQTNBQUFnRENBREtRQVlOd0FJSUF3Z0F5a0FJRGNBRUNBTUlBTXBBQ2czQUJnZ0EwRWdhaUVESUF4QklHb2lEQ0FDU1EwQUN3c2dBaUFJYXlFRElBUWdFRFlDM0FFZ0FpQVNheUFJU1FSQUlBZ2dBaUFZYTBzTkJ5QWFJQm9nQXlBU2F5SURhaUlNSUF0cVR3UkFJQUlnRENBTEVBb2FEQUlMSUFNZ0Myb2hDeUFDSUF4QkFDQURheEFLSUFOcklRSWdFaUVEQ3lBSVFSQlBCRUFnQWlBREtRQUFOd0FBSUFJZ0F5a0FDRGNBQ0NBTFFSRklEUUVnQWlBTGFpRUlJQUpCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQUlnQXkwQUFEb0FBQ0FDSUFNdEFBRTZBQUVnQWlBRExRQUNPZ0FDSUFJZ0F5MEFBem9BQXlBQ0lBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFJZ0F5a0FBRGNBQUFzZ0MwRUpTUTBBSUFJZ0Myb2hEQ0FDUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnREVrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0MwRVpTQTBBSUFKQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF4SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3R0JTQUdRUUZxSVFZZ0J5QUthaUVIREFJTEFBc0xJQVFvQXR3QklRTUxRYnAvSVFrZ0Z5QURheUlDSUJZZ0IydExEUUlnQndSL0lBY2dBeUFDRUFJZ0Ftb0ZRUUFMSUE1cklRa01BZ3NnQlVFQU5nS2M2d0VMSUFRZ0JTZ0M4T29CSWdNMkF0d0JJQWtnRG1vaERDQURJQVVvQW9EckFXb2hFQUpBSUE5RkJFQWdEaUVHREFFTElBVW9BcmpwQVNFTklBVW9BclRwQVNFVElBVW9BckRwQVNFU0lBVkJBVFlDaE9vQlFRQWhBd05BSUFOQkEwY0VRQ0FFSUFOQkFuUWlBbW9nQWlBRmFrR3MwQUZxS0FJQU5nS2NBU0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRZkFBYWlJQ0lBY2dCaEFOUVloL1N3MEJJREVnQWlBRktBSUFFQjRnTUNBQ0lBVW9BZ2dRSGlBdklBSWdCU2dDQkJBZUlBeEJJR3NoR0NBT0lRWURRQ0FFS0FLSUFTQUVLQUtFQVVFRGRHb3BBZ0FpUUtjaUNrRVFkaUlaUWY4QmNTRUxJQVFvQXBnQklBUW9BcFFCUVFOMGFpa0NBQ0pCcHlJV1FSQjJJaDlCL3dGeElSb2dCQ2dDa0FFZ0JDZ0NqQUZCQTNScUtRSUFJa0pDSUlpbklRY2dRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ0VIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ2RDSUlheUlSSUFJZ0FpQVJTeHNpRnlBSWFqWUNkQ0FISUFRb0FuQWdDSFJCQUNBWGEzWWdBaUFYYXlJWGRHb2hDQ0FFUWZBQWFoQVBHaUFDSUJGTkRRRWdCQ0FFS0FKMElnSWdGMm8yQW5RZ0JDZ0NjQ0FDZEVFQUlCZHJkaUFJYWlFSURBRUxJQVFnQWlBRUtBSjBJaEZxTmdKMElBUW9BbkFnRVhSQkFDQUlhM1lnQjJvaENDQUVRZkFBYWhBUEdnc2dCQ2tDbkFFaFJDQUVJQWcyQXB3QklBUWdSRGNDb0FFTUFRc0NRQ0FDUlFSQUlBTUVRQ0FFS0FLY0FTRUlEQU1MSUFRb0FxQUJJUWdNQVFzZ0JDQUVLQUowSWdKQkFXbzJBblFDZnlBSElBTkZhaUFFS0FKd0lBSjBRUjkyYWlJQ1FRTkdCRUFnQkNnQ25BRkJBV3NNQVFzZ0FrRUNkQ0FFYWlnQ25BRUxJZ2RGSUFkcUlRZ2dBa0VCUndSQUlBUWdCQ2dDb0FFMkFxUUJDd3NnQkNBRUtBS2NBVFlDb0FFZ0JDQUlOZ0tjQVF1bklRSWdRVUtBZ1B3SGcxQkZCRUFnQkNBRUtBSjBJZ2NnR21vMkFuUWdCQ2dDY0NBSGRFRUFJQjlyZGlBQ2FpRUNDeUFMSUJwcVFSUlBCRUFnQkVId0FHb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDZENJSElBdHFOZ0owSUFRb0FuQWdCM1JCQUNBWmEzWWdBMm9oQXdzZ0JFSHdBR29RRHhvZ0JDQUVLQUp3SWdkQkFDQUtRUmgySWdzZ0JDZ0NkR29pR210MklBdEJBblJCb0IxcUtBSUFjU0FLUWYvL0EzRnFOZ0tFQVNBRUlCb2dGa0VZZGlJS2FpSUxOZ0owSUFRZ0NrRUNkRUdnSFdvb0FnQWdCMEVBSUF0cmRuRWdGa0gvL3dOeGFqWUNsQUVnQkVId0FHb1FEeG9nQkNCQ3B5SUhRUmgySWdvZ0JDZ0NkR29pQ3pZQ2RDQUVJQXBCQW5SQm9CMXFLQUlBSUFRb0FuQkJBQ0FMYTNaeElBZEIvLzhEY1dvMkFvd0JJQVFnQXpZQ09DQUVJQUkyQWp3Z0JDQUlOZ0pBQWtBQ1FBSkFJQVFvQXR3Qklnc2dBMm9pRmlBUVN3MEFJQVlnQWlBRGFpSUthaUFZU3cwQUlBcEJJR29nRENBR2EwME5BUXNnQkNBRVFVQnJLQUlBTmdJSUlBUWdCQ2tET0RjREFDQUdJQXdnQkNBRVFkd0JhaUFRSUJJZ0V5QU5FQjhoQ2d3QkN5QURJQVpxSVFjZ0JpQUxLUUFBTndBQUlBWWdDeWtBQ0RjQUNBSkFJQU5CRVVrTkFDQUdJQXNwQUJBM0FCQWdCaUFMS1FBWU53QVlJQU5CRUd0QkVVZ05BQ0FMUVJCcUlRTWdCa0VnYWlFTEEwQWdDeUFES1FBUU53QUFJQXNnQXlrQUdEY0FDQ0FMSUFNcEFDQTNBQkFnQ3lBREtRQW9Od0FZSUFOQklHb2hBeUFMUVNCcUlnc2dCMGtOQUFzTElBY2dDR3NoQXlBRUlCWTJBdHdCSUFjZ0Vtc2dDRWtFUUNBSUlBY2dFMnRMRFFRZ0RTQU5JQU1nRW1zaUEyb2lDeUFDYWs4RVFDQUhJQXNnQWhBS0dnd0NDeUFISUF0QkFDQURheEFLSUFRZ0FpQURhaUlDTmdJOElBTnJJUWNnRWlFREN5QUlRUkJQQkVBZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNDQUNRUkZJRFFFZ0FpQUhhaUVJSUFkQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFjZ0F5MEFBRG9BQUNBSElBTXRBQUU2QUFFZ0J5QURMUUFDT2dBQ0lBY2dBeTBBQXpvQUF5QUhJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBY2dBeWtBQURjQUFBc2dBa0VKU1EwQUlBSWdCMm9oQ3lBSFFRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0Mwa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dBa0VaU0EwQUlBZEJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBdEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0RDeUFHSUFwcUlRWWdCRUh3QUdvUUR5RURJQTlCQVdzaUR3MEFDMEVBSVFJZ0EwRUNTUTBCQTBBZ0FrRURSd1JBSUFVZ0FrRUNkQ0lEYWtHczBBRnFJQU1nQkdvb0Fwd0JOZ0lBSUFKQkFXb2hBZ3dCQ3dzZ0JDZ0MzQUVoQXd0QnVuOGhDU0FRSUFOcklnSWdEQ0FHYTBzTkFDQUdCSDhnQmlBRElBSVFBaUFDYWdWQkFBc2dEbXNoQ1FzZ0NVR0lmMHNOQmdzQ1FDQUZLQUxzNmdGRkRRQWdCU0FGS1FPSTZnRWdDYTE4TndPSTZnRUNRQ0FGS0FMUTZnRWlBaUFKYWlJSVFSOU5CRUFnRGtVTkFTQUNJQ0pxSUE0Z0NSQUNHaUFGS0FMUTZnRWdDV29oQ0F3QkN5QU9JUU1nQWdSQUlBSWdJbW9nQTBFZ0lBSnJFQUlhSUFVb0F0RHFBU0VDSUFWQkFEWUMwT29CSUFVZ0JTa0RrT29CSUFVcEFMRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEa09vQklBVWdCU2tEbU9vQklBVXBBTGpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG1Pb0JJQVVnQlNrRG9Pb0JJQVVwQU1EcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RvT29CSUFVZ0JTa0RxT29CSUFVcEFNanFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEcU9vQklBTWdBbXRCSUdvaEF3c2dDU0FPYWlJQ0lBTkJJR3BQQkVBZ0FrRWdheUVHSUFVcEE2anFBU0UvSUFVcEE2RHFBU0ZBSUFVcEE1anFBU0ZCSUFVcEE1RHFBU0ZDQTBBZ0F5a0FHRUxQMXRPKzBzZXIyVUorSUQ5OFFoK0pRb2VWcjYrWXR0NmJubjkrSVQ4Z0F5a0FFRUxQMXRPKzBzZXIyVUorSUVCOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVBZ0F5a0FDRUxQMXRPKzBzZXIyVUorSUVGOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVFZ0F5a0FBRUxQMXRPKzBzZXIyVUorSUVKOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVJZ0EwRWdhaUlESUFaTkRRQUxJQVVnUHpjRHFPb0JJQVVnUURjRG9Pb0JJQVVnUVRjRG1Pb0JJQVVnUWpjRGtPb0JDeUFDSUFOTkRRRWdJaUFESUFJZ0Eyc2lDQkFDR2dzZ0JTQUlOZ0xRNmdFTElEVWdGV3NoQXlBVklCdHFJUUlnQ1NBT2FpRU9JQVFvQWpCRkRRQUxJQ2twQXdBaVAwSi9VU0EvSUE0Z0hXdXNVWEpGQkVCQmJDRUpEQVlMSUFVb0F1RHBBUVJBUVdvaENTQURRUVJKRFFZZ0JTZ0M2T29CUlFSQUlDSWdCU2dDME9vQmFpRUtBbjRnQlNrRGlPb0JJajlDSUZvRVFDQUZLUU9ZNmdFaVFFSUhpU0FGS1FPUTZnRWlRVUlCaVh3Z0JTa0RvT29CSWtKQ0RJbDhJQVVwQTZqcUFTSkRRaEtKZkNCQlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUVCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnUWtMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0JEUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlEQUVMSUFVcEE2RHFBVUxGejlteThlVzY2aWQ4Q3lBL2ZDRS9JQ0loQmdOQUlBb2dCa0VJYWlJSFR3UkFJQVlwQUFCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZmlBL2hVSWJpVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTRS9JQWNoQmd3QkN3c0NRQ0FLSUFaQkJHb2lDRWtFUUNBR0lRZ01BUXNnQmpVQUFFS0hsYSt2bUxiZW01NS9maUEvaFVJWGlVTFAxdE8rMHNlcjJVSitRdm56M2ZHWjlwbXJGbndoUHdzRFFDQUlJQXBKQkVBZ0NERUFBRUxGejlteThlVzY2aWQrSUQrRlFndUpRb2VWcjYrWXR0NmJubjkrSVQ4Z0NFRUJhaUVJREFFTEN5QUNLQUFBSUQ5Q0lZZ2dQNFZDejliVHZ0TEhxOWxDZmlJL1FoMklJRCtGUXZuejNmR1o5cG1yRm40aVAwSWdpQ0EvaGFkSERRY0xJQU5CQkdzaEF5QUNRUVJxSVFJTElBNGdIV3NpQ1VHSmYwOE5CQ0FCSUFscklRRWdDU0FkYWlFZFFRRWhQZ3dCQ3d0QnVIOGhCeUFERFFRZ0hTQUFheUVIREFRTFFXd2hDUXdCQzBHNGZ5RUpDMEc0ZnlFSElBbEJka1lnUG5FTkFRc2dDU0VIQ3lnQ0FBMEFJQVZCL09vQmFpZ0NBQ0VCSUFWQitPb0JhaWdDQUNFQUlBVVFHQ0FGS0FLdzZ3RWdBQ0FCRUJNZ0JVRUFOZ0t3NndFZ0JTZ0NwT3NCSWdJRVFBSkFBa0FDUUFKQUlBSW9BZ0FpQXdSQUlBQkZEUUlnQVNBRElBQVJBZ0FNQVFzZ0FFVU5BZ3NnQVNBQ0lBQVJBZ0FNQWdzZ0F4QUdDeUFDRUFZTElBVkJBRFlDcE9zQkN5QUFCRUFnQVNBRklBQVJBZ0FNQVFzZ0JSQUdDeUFFUWVBQmFpUUFJQWNMQzZnVkNRQkJpQWdMRFFFQUFBQUJBQUFBQWdBQUFBSUFRYUFJQzdNR0FRQUFBQUVBQUFBQ0FBQUFBZ0FBQUNZQUFBQ0NBQUFBSVFVQUFFb0FBQUJuQ0FBQUpnQUFBTUFCQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBS1FBQUFDd0NBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFMd0FBQU1vQ0FBQ0FBQUFBaWdVQUFFb0FBQUNFQ1FBQU5RQUFBSE1EQUFDQUFBQUFuUVVBQUVvQUFBQ2dDUUFBUFFBQUFJRURBQUNBQUFBQTZ3VUFBRXNBQUFBK0NnQUFSQUFBQUo0REFBQ0FBQUFBVFFZQUFFc0FBQUNxQ2dBQVN3QUFBTE1EQUFDQUFBQUF3UVlBQUUwQUFBQWZEUUFBVFFBQUFGTUVBQUNBQUFBQUl3Z0FBRkVBQUFDbUR3QUFWQUFBQUprRUFBQ0FBQUFBU3drQUFGY0FBQUN4RWdBQVdBQUFBTm9FQUFDQUFBQUFid2tBQUYwQUFBQWpGQUFBVkFBQUFFVUZBQUNBQUFBQVZBb0FBR29BQUFDTUZBQUFhZ0FBQUs4RkFBQ0FBQUFBZGdrQUFId0FBQUJPRUFBQWZBQUFBTklDQUFDQUFBQUFZd2NBQUpFQUFBQ1FCd0FBa2dBQUFBQUFBQUFCQUFBQUFRQUFBQVVBQUFBTkFBQUFIUUFBQUQwQUFBQjlBQUFBL1FBQUFQMEJBQUQ5QXdBQS9RY0FBUDBQQUFEOUh3QUEvVDhBQVAxL0FBRDkvd0FBL2Y4QkFQMy9Bd0Q5L3djQS9mOFBBUDMvSHdEOS96OEEvZjkvQVAzLy93RDkvLzhCL2YvL0EvMy8vd2Y5Ly84UC9mLy9ILzMvL3ovOS8vOS9BQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWxBQUFBSndBQUFDa0FBQUFyQUFBQUx3QUFBRE1BQUFBN0FBQUFRd0FBQUZNQUFBQmpBQUFBZ3dBQUFBTUJBQUFEQWdBQUF3UUFBQU1JQUFBREVBQUFBeUFBQUFOQUFBQURnQUFBQXdBQkFFSGdEd3RSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBVUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUVIRUVBdUxBUUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFTQUFBQUZBQUFBQllBQUFBWUFBQUFIQUFBQUNBQUFBQW9BQUFBTUFBQUFFQUFBQUNBQUFBQUFBRUFBQUFDQUFBQUJBQUFBQWdBQUFBUUFBQUFJQUFBQUVBQUFBQ0FBQUFBQUFFQVFaQVNDK1lFQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFCQUFBQUJBQUFBQWdBQUFBQUFBQUFBUUFCQVFZQUFBQUFBQUFFQUFBQUFCQUFBQVFBQUFBQUlBQUFCUUVBQUFBQUFBQUZBd0FBQUFBQUFBVUVBQUFBQUFBQUJRWUFBQUFBQUFBRkJ3QUFBQUFBQUFVSkFBQUFBQUFBQlFvQUFBQUFBQUFGREFBQUFBQUFBQVlPQUFBQUFBQUJCUkFBQUFBQUFBRUZGQUFBQUFBQUFRVVdBQUFBQUFBQ0JSd0FBQUFBQUFNRklBQUFBQUFBQkFVd0FBQUFJQUFHQlVBQUFBQUFBQWNGZ0FBQUFBQUFDQVlBQVFBQUFBQUtCZ0FFQUFBQUFBd0dBQkFBQUNBQUFBUUFBQUFBQUFBQUJBRUFBQUFBQUFBRkFnQUFBQ0FBQUFVRUFBQUFBQUFBQlFVQUFBQWdBQUFGQndBQUFBQUFBQVVJQUFBQUlBQUFCUW9BQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBSUFBQkJSQUFBQUFBQUFFRkVnQUFBQ0FBQVFVV0FBQUFBQUFDQlJnQUFBQWdBQU1GSUFBQUFBQUFBd1VvQUFBQUFBQUdCRUFBQUFBUUFBWUVRQUFBQUNBQUJ3V0FBQUFBQUFBSkJnQUNBQUFBQUFzR0FBZ0FBREFBQUFRQUFBQUFFQUFBQkFFQUFBQWdBQUFGQWdBQUFDQUFBQVVEQUFBQUlBQUFCUVVBQUFBZ0FBQUZCZ0FBQUNBQUFBVUlBQUFBSUFBQUJRa0FBQUFnQUFBRkN3QUFBQ0FBQUFVTUFBQUFBQUFBQmc4QUFBQWdBQUVGRWdBQUFDQUFBUVVVQUFBQUlBQUNCUmdBQUFBZ0FBSUZIQUFBQUNBQUF3VW9BQUFBSUFBRUJUQUFBQUFBQUJBR0FBQUJBQUFBRHdZQWdBQUFBQUFPQmdCQUFBQUFBQTBHQUNBQVFZQVhDNGNDQVFBQkFRVUFBQUFBQUFBRkFBQUFBQUFBQmdROUFBQUFBQUFKQmYwQkFBQUFBQThGL1g4QUFBQUFGUVg5L3g4QUFBQURCUVVBQUFBQUFBY0VmUUFBQUFBQURBWDlEd0FBQUFBU0JmMy9Bd0FBQUJjRi9mOS9BQUFBQlFVZEFBQUFBQUFJQlAwQUFBQUFBQTRGL1Q4QUFBQUFGQVg5L3c4QUFBQUNCUUVBQUFBUUFBY0VmUUFBQUFBQUN3WDlCd0FBQUFBUkJmMy9BUUFBQUJZRi9mOC9BQUFBQkFVTkFBQUFFQUFJQlAwQUFBQUFBQTBGL1I4QUFBQUFFd1g5L3djQUFBQUJCUUVBQUFBUUFBWUVQUUFBQUFBQUNnWDlBd0FBQUFBUUJmMy9BQUFBQUJ3Ri9mLy9Ed0FBR3dYOS8vOEhBQUFhQmYzLy93TUFBQmtGL2YvL0FRQUFHQVg5Ly84QVFaQVpDNFlFQVFBQkFRWUFBQUFBQUFBR0F3QUFBQUFBQUFRRUFBQUFJQUFBQlFVQUFBQUFBQUFGQmdBQUFBQUFBQVVJQUFBQUFBQUFCUWtBQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBQUFBQUJoQUFBQUFBQUFBR0V3QUFBQUFBQUFZV0FBQUFBQUFBQmhrQUFBQUFBQUFHSEFBQUFBQUFBQVlmQUFBQUFBQUFCaUlBQUFBQUFBRUdKUUFBQUFBQUFRWXBBQUFBQUFBQ0JpOEFBQUFBQUFNR093QUFBQUFBQkFaVEFBQUFBQUFIQm9NQUFBQUFBQWtHQXdJQUFCQUFBQVFFQUFBQUFBQUFCQVVBQUFBZ0FBQUZCZ0FBQUFBQUFBVUhBQUFBSUFBQUJRa0FBQUFBQUFBRkNnQUFBQUFBQUFZTUFBQUFBQUFBQmc4QUFBQUFBQUFHRWdBQUFBQUFBQVlWQUFBQUFBQUFCaGdBQUFBQUFBQUdHd0FBQUFBQUFBWWVBQUFBQUFBQUJpRUFBQUFBQUFFR0l3QUFBQUFBQVFZbkFBQUFBQUFDQmlzQUFBQUFBQU1HTXdBQUFBQUFCQVpEQUFBQUFBQUZCbU1BQUFBQUFBZ0dBd0VBQUNBQUFBUUVBQUFBTUFBQUJBUUFBQUFRQUFBRUJRQUFBQ0FBQUFVSEFBQUFJQUFBQlFnQUFBQWdBQUFGQ2dBQUFDQUFBQVVMQUFBQUFBQUFCZzRBQUFBQUFBQUdFUUFBQUFBQUFBWVVBQUFBQUFBQUJoY0FBQUFBQUFBR0dnQUFBQUFBQUFZZEFBQUFBQUFBQmlBQUFBQUFBQkFHQXdBQkFBQUFEd1lEZ0FBQUFBQU9CZ05BQUFBQUFBMEdBeUFBQUFBQURBWURFQUFBQUFBTEJnTUlBQUFBQUFvR0F3UUFRYVFkQzlrQkFRQUFBQU1BQUFBSEFBQUFEd0FBQUI4QUFBQS9BQUFBZndBQUFQOEFBQUQvQVFBQS93TUFBUDhIQUFEL0R3QUEveDhBQVA4L0FBRC9md0FBLy84QUFQLy9BUUQvL3dNQS8vOEhBUC8vRHdELy94OEEvLzgvQVAvL2Z3RC8vLzhBLy8vL0FmLy8vd1AvLy84SC8vLy9ELy8vL3gvLy8vOC8vLy8vZndBQUFBQUJBQUFBQWdBQUFBUUFBQUFBQUFBQUFnQUFBQVFBQUFBSUFBQUFBQUFBQUFFQUFBQUNBQUFBQVFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QkJnQjhMQTRBUkFRPT0iO3ZhciB5ZT1uZXcgUEEsbWU9ITE7YXN5bmMgZnVuY3Rpb24gQ3IoQSx0LGUpe2xldCBJPW51bGw7dHlwZW9mIEEhPSJzdHJpbmciP0k9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP0k9QTpJPWAke3R9LyR7QX1gLEkuZW5kc1dpdGgoIi5qcyIpJiYoST1JLnN1YnN0cmluZygwLEkubGVuZ3RoLTMpKSxJLmVuZHNXaXRoKCIud2FzbSIpJiYoST1JLnN1YnN0cmluZygwLEkubGVuZ3RoLTUpKSxJLmVuZHNXaXRoKCIud2FzbS56c3QiKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC05KSk7bGV0IHI9YCR7SX0ud2FzbWAsZz1hd2FpdCB4QS5nZXQoYCR7cn0uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOmV9KTttZXx8KGF3YWl0IHllLmluaXQoKSxtZT0hMCk7bGV0IG49eWUuZGVjb2RlKG5ldyBVaW50OEFycmF5KGcuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke0l9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6bn0pfXZhciB3ZT1Dcjt2YXIgakE9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBCcihBLHQsZSl7bGV0IEk9QSxyPUEsZz1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihJPW5ldyBVUkwoQS5ocmVmKSxyPUkuaHJlZiksakEuaGFzKHIpP2c9YXdhaXQgakEuZ2V0KHIpOihqQS5zZXQocix3ZShJLHQsZSkpLGc9YXdhaXQgakEuZ2V0KHIpKSxnfXZhciBwZT1Ccjt2YXIgYXI9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsUG9pbnRTZXQ6IlBvaW50U2V0IixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLFRyYW5zZm9ybUxpc3Q6IlRyYW5zZm9ybUxpc3QiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LGQ9YXI7dmFyIFFyPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sVT1Rcjt2YXIgRXI9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFY9RXI7ZnVuY3Rpb24gY3IoQSx0KXtsZXQgZT1udWxsO3N3aXRjaChBKXtjYXNlIFUuVUludDg6e2U9bmV3IFVpbnQ4QXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDg6e2U9bmV3IEludDhBcnJheSh0KTticmVha31jYXNlIFUuVUludDE2OntlPW5ldyBVaW50MTZBcnJheSh0KTticmVha31jYXNlIFUuSW50MTY6e2U9bmV3IEludDE2QXJyYXkodCk7YnJlYWt9Y2FzZSBVLlVJbnQzMjp7ZT1uZXcgVWludDMyQXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDMyOntlPW5ldyBJbnQzMkFycmF5KHQpO2JyZWFrfWNhc2UgVS5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP2U9bmV3IEJpZ1VpbnQ2NEFycmF5KHQpOmU9bmV3IFVpbnQ4QXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP2U9bmV3IEJpZ0ludDY0QXJyYXkodCk6ZT1uZXcgVWludDhBcnJheSh0KTticmVha31jYXNlIFYuRmxvYXQzMjp7ZT1uZXcgRmxvYXQzMkFycmF5KHQpO2JyZWFrfWNhc2UgVi5GbG9hdDY0OntlPW5ldyBGbG9hdDY0QXJyYXkodCk7YnJlYWt9Y2FzZSJudWxsIjp7ZT1udWxsO2JyZWFrfWNhc2UgbnVsbDp7ZT1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIGV9dmFyIHE9Y3I7dmFyIFJlPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLFNlPW5ldyBUZXh0RW5jb2RlcixGZT1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gZnIoQSx0KXtsZXQgZT17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxJPUEuZnNfb3Blbih0LGUuZmxhZ3MpLGc9QS5mc19zdGF0KHQpLnNpemUsbz1udWxsO1JlP289bmV3IFNoYXJlZEFycmF5QnVmZmVyKGcpOm89bmV3IEFycmF5QnVmZmVyKGcpO2xldCBuPW5ldyBVaW50OEFycmF5KG8pO3JldHVybiBBLmZzX3JlYWQoSSxuLDAsZywwKSxBLmZzX2Nsb3NlKEkpLG59ZnVuY3Rpb24gTmUoQSx0LGUpe2xldCBJPW51bGw7UmU/ST1uZXcgU2hhcmVkQXJyYXlCdWZmZXIoZSk6ST1uZXcgQXJyYXlCdWZmZXIoZSk7bGV0IHI9bmV3IFVpbnQ4QXJyYXkoSSksZz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsdCxlKTtyZXR1cm4gci5zZXQoZykscn1mdW5jdGlvbiB3KEEsdCxlLEkpe2xldCByPTA7cmV0dXJuIHQhPT1udWxsJiYocj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLEksdC5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheSh0LmJ1ZmZlcikscikpLHJ9ZnVuY3Rpb24geChBLHQsZSl7bGV0IEk9SlNPTi5zdHJpbmdpZnkodCkscj1BLmxlbmd0aEJ5dGVzVVRGOChJKSsxLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHJdKTtBLnN0cmluZ1RvVVRGOChJLGcscil9ZnVuY3Rpb24gUyhBLHQsZSxJKXtsZXQgcj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGVdKSxnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZV0pLG89TmUoQSxyLGcpO3JldHVybiBxKEksby5idWZmZXIpfWZ1bmN0aW9uIHVBKEEsdCl7bGV0IGU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCx0XSksST1BLlVURjhUb1N0cmluZyhlKTtyZXR1cm4gSlNPTi5wYXJzZShJKX1mdW5jdGlvbiBscihBLHQsZSxJKXtJIT1udWxsJiZJLmxlbmd0aD4wJiZJLmZvckVhY2goZnVuY3Rpb24oQixzKXtzd2l0Y2goQi50eXBlKXtjYXNlIGQuVGV4dFN0cmVhbTp7bGV0IEM9U2UuZW5jb2RlKEIuZGF0YS5kYXRhKSxsPXcoQSxDLHMsMCksYT17c2l6ZTpDLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWB9O3goQSxhLHMpO2JyZWFrfWNhc2UgZC5Kc29uQ29tcGF0aWJsZTp7bGV0IEM9U2UuZW5jb2RlKEpTT04uc3RyaW5naWZ5KEIuZGF0YSkpLGw9dyhBLEMscywwKSxhPXtzaXplOkMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YH07eChBLGEscyk7YnJlYWt9Y2FzZSBkLkJpbmFyeVN0cmVhbTp7bGV0IEM9Qi5kYXRhLmRhdGEsbD13KEEsQyxzLDApLGE9e3NpemU6Qy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gfTt4KEEsYSxzKTticmVha31jYXNlIGQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKEIuZGF0YS5wYXRoLEIuZGF0YS5kYXRhKTticmVha31jYXNlIGQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUoQi5kYXRhLnBhdGgsQi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgZC5JbWFnZTp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMuZGF0YSxzLDApLGE9dyhBLEMuZGlyZWN0aW9uLHMsMSksUT10eXBlb2YgQy5tZXRhZGF0YT8uZW50cmllczwidSI/QXJyYXkuZnJvbShDLm1ldGFkYXRhLmVudHJpZXMoKSk6W10sZj17aW1hZ2VUeXBlOkMuaW1hZ2VUeXBlLG5hbWU6Qy5uYW1lLG9yaWdpbjpDLm9yaWdpbixzcGFjaW5nOkMuc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHthfWAsc2l6ZTpDLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxtZXRhZGF0YTpRfTt4KEEsZixzKTticmVha31jYXNlIGQuTWVzaDp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMucG9pbnRzLHMsMCksYT13KEEsQy5jZWxscyxzLDEpLFE9dyhBLEMucG9pbnREYXRhLHMsMiksZj13KEEsQy5jZWxsRGF0YSxzLDMpLGM9e21lc2hUeXBlOkMubWVzaFR5cGUsbmFtZTpDLm5hbWUsbnVtYmVyT2ZQb2ludHM6Qy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWAsbnVtYmVyT2ZDZWxsczpDLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHthfWAsY2VsbEJ1ZmZlclNpemU6Qy5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOkMubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOkMubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTt4KEEsYyxzKTticmVha31jYXNlIGQuUG9pbnRTZXQ6e2xldCBDPUIuZGF0YSxsPXcoQSxDLnBvaW50cyxzLDApLGE9dyhBLEMucG9pbnREYXRhLHMsMSksUT17cG9pbnRTZXRUeXBlOkMucG9pbnRTZXRUeXBlLG5hbWU6Qy5uYW1lLG51bWJlck9mUG9pbnRzOkMubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gLG51bWJlck9mUG9pbnRQaXhlbHM6Qy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2F9YH07eChBLFEscyk7YnJlYWt9Y2FzZSBkLlRyYW5zZm9ybUxpc3Q6e2xldCBDPUIuZGF0YSxsPVtdLGE9MDtDLmZvckVhY2goUT0+e2xldCBmPSIiLGM9IiI7US50cmFuc2Zvcm1UeXBlLnRyYW5zZm9ybVBhcmFtZXRlcml6YXRpb24hPT0iQ29tcG9zaXRlIiYmKGY9YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt3KEEsUS5maXhlZFBhcmFtZXRlcnMscyxhKX1gLGErPTEsYz1gZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3coQSxRLnBhcmFtZXRlcnMscyxhKX1gLGErPTEpO2xldCBEPXt0cmFuc2Zvcm1UeXBlOlEudHJhbnNmb3JtVHlwZSxudW1iZXJPZkZpeGVkUGFyYW1ldGVyczpRLm51bWJlck9mRml4ZWRQYXJhbWV0ZXJzLG51bWJlck9mUGFyYW1ldGVyczpRLm51bWJlck9mUGFyYW1ldGVycyxuYW1lOlEubmFtZSxpbnB1dFNwYWNlTmFtZTpRLmlucHV0U3BhY2VOYW1lLG91dHB1dFNwYWNlTmFtZTpRLm91dHB1dFNwYWNlTmFtZSxwYXJhbWV0ZXJzOmMsZml4ZWRQYXJhbWV0ZXJzOmZ9O2wucHVzaChEKX0pLHgoQSxsLHMpO2JyZWFrfWNhc2UgZC5Qb2x5RGF0YTp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMucG9pbnRzLHMsMCksYT13KEEsQy52ZXJ0aWNlcyxzLDEpLFE9dyhBLEMubGluZXMscywyKSxmPXcoQSxDLnBvbHlnb25zLHMsMyksYz13KEEsQy50cmlhbmdsZVN0cmlwcyxzLDQpLEQ9dyhBLEMucG9pbnREYXRhLHMsNSksRj13KEEsQy5wb2ludERhdGEscyw2KSx5PXtwb2x5RGF0YVR5cGU6Qy5wb2x5RGF0YVR5cGUsbmFtZTpDLm5hbWUsbnVtYmVyT2ZQb2ludHM6Qy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWAsdmVydGljZXNCdWZmZXJTaXplOkMudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7YX1gLGxpbmVzQnVmZmVyU2l6ZTpDLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxwb2x5Z29uc0J1ZmZlclNpemU6Qy5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOkMudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mUG9pbnRQaXhlbHM6Qy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0R9YCxudW1iZXJPZkNlbGxQaXhlbHM6Qy5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtGfWB9O3goQSx5LHMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCByPUEuc3RhY2tTYXZlKCksZz0wO3RyeXtnPUEuY2FsbE1haW4odC5zbGljZSgpKX1jYXRjaChCKXt0aHJvdyB0eXBlb2YgQj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShCKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxCfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUocil9bGV0IG89QS5nZXRNb2R1bGVTdGRvdXQoKSxuPUEuZ2V0TW9kdWxlU3RkZXJyKCksRT1bXTtyZXR1cm4gZSE9bnVsbCYmZS5sZW5ndGg+MCYmZz09PTAmJmUuZm9yRWFjaChmdW5jdGlvbihCLHMpe2xldCBDPW51bGw7c3dpdGNoKEIudHlwZSl7Y2FzZSBkLlRleHRTdHJlYW06e2xldCBhPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksZj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsYSxRKTtDPXtkYXRhOkZlLmRlY29kZShmKX07YnJlYWt9Y2FzZSBkLkpzb25Db21wYXRpYmxlOntsZXQgYT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSxRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLGY9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGEsUSk7Qz1KU09OLnBhcnNlKEZlLmRlY29kZShmKSk7YnJlYWt9Y2FzZSBkLkJpbmFyeVN0cmVhbTp7bGV0IGE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKTtDPXtkYXRhOk5lKEEsYSxRKX07YnJlYWt9Y2FzZSBkLlRleHRGaWxlOntDPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShCLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgZC5CaW5hcnlGaWxlOntDPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6ZnIoQSxCLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgZC5JbWFnZTp7bGV0IGE9dUEoQSxzKTthLmRhdGE9UyhBLHMsMCxhLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxhLmRpcmVjdGlvbj1TKEEscywxLFYuRmxvYXQ2NCksYS5tZXRhZGF0YT1uZXcgTWFwKGEubWV0YWRhdGEpLEM9YTticmVha31jYXNlIGQuTWVzaDp7bGV0IGE9dUEoQSxzKTthLm51bWJlck9mUG9pbnRzPjA/YS5wb2ludHM9UyhBLHMsMCxhLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6YS5wb2ludHM9cShhLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGEubnVtYmVyT2ZDZWxscz4wP2EuY2VsbHM9UyhBLHMsMSxhLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTphLmNlbGxzPXEoYS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGEubnVtYmVyT2ZQb2ludFBpeGVscz4wP2EucG9pbnREYXRhPVMoQSxzLDIsYS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6YS5wb2ludERhdGE9cShhLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZkNlbGxQaXhlbHM+MD9hLmNlbGxEYXRhPVMoQSxzLDMsYS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTphLmNlbGxEYXRhPXEoYS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQz1hO2JyZWFrfWNhc2UgZC5Qb2ludFNldDp7bGV0IGE9dUEoQSxzKTthLm51bWJlck9mUG9pbnRzPjA/YS5wb2ludHM9UyhBLHMsMCxhLnBvaW50U2V0VHlwZS5wb2ludENvbXBvbmVudFR5cGUpOmEucG9pbnRzPXEoYS5wb2ludFNldFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/YS5wb2ludERhdGE9UyhBLHMsMSxhLnBvaW50U2V0VHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6YS5wb2ludERhdGE9cShhLnBvaW50U2V0VHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEM9YTticmVha31jYXNlIGQuVHJhbnNmb3JtTGlzdDp7bGV0IGE9dUEoQSxzKSxRPTA7YS5mb3JFYWNoKChmLGMpPT57Zi50cmFuc2Zvcm1UeXBlLnRyYW5zZm9ybVBhcmFtZXRlcml6YXRpb24hPT0iQ29tcG9zaXRlIiYmKGYubnVtYmVyT2ZGaXhlZFBhcmFtZXRlcnM+MCYmKGFbY10uZml4ZWRQYXJhbWV0ZXJzPVMoQSxzLFEsVi5GbG9hdDY0KSksUSs9MSxmLm51bWJlck9mUGFyYW1ldGVycz4wJiYoYVtjXS5wYXJhbWV0ZXJzPVMoQSxzLFEsZi50cmFuc2Zvcm1UeXBlLnBhcmFtZXRlcnNWYWx1ZVR5cGUpKSxRKz0xKX0pLEM9YTticmVha31jYXNlIGQuUG9seURhdGE6e2xldCBhPXVBKEEscyk7YS5udW1iZXJPZlBvaW50cz4wP2EucG9pbnRzPVMoQSxzLDAsVi5GbG9hdDMyKTphLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LGEudmVydGljZXNCdWZmZXJTaXplPjA/YS52ZXJ0aWNlcz1TKEEscywxLFUuVUludDMyKTphLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxhLmxpbmVzQnVmZmVyU2l6ZT4wP2EubGluZXM9UyhBLHMsMixVLlVJbnQzMik6YS5saW5lcz1uZXcgVWludDMyQXJyYXksYS5wb2x5Z29uc0J1ZmZlclNpemU+MD9hLnBvbHlnb25zPVMoQSxzLDMsVS5VSW50MzIpOmEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LGEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/YS50cmlhbmdsZVN0cmlwcz1TKEEscyw0LFUuVUludDMyKTphLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxhLm51bWJlck9mUG9pbnRQaXhlbHM+MD9hLnBvaW50RGF0YT1TKEEscyw1LGEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTphLnBvaW50RGF0YT1xKGEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZkNlbGxQaXhlbHM+MD9hLmNlbGxEYXRhPVMoQSxzLDYsYS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6YS5jZWxsRGF0YT1xKGEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxDPWE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgbD17dHlwZTpCLnR5cGUsZGF0YTpDfTtFLnB1c2gobCl9KSx7cmV0dXJuVmFsdWU6ZyxzdGRvdXQ6byxzdGRlcnI6bixvdXRwdXRzOkV9fXZhciBVZT1scjt2YXIgdXI9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIGRyKEEsdCl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgZT1bXTtmb3IobGV0IEk9MDtJPEEubGVuZ3RoO0krKyl7bGV0IHI9RHIoQVtJXSx0KTtyIT09bnVsbCYmZS5wdXNoKHIpfXJldHVybiBlfWZ1bmN0aW9uIERyKEEsdCl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgZT1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD9lPUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKGU9QSksdXImJmUgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOnQ/ZTplLnNsaWNlKDApfXZhciBHZT1kcjtmdW5jdGlvbiBocihBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIga2U9aHI7ZnVuY3Rpb24geXIoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIExlPXlyO2Z1bmN0aW9uIG1yKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciBiZT1tcjthc3luYyBmdW5jdGlvbiB3cihBLHQsZSxJKXtsZXQgcj1VZShBLHQsZSxJKSxnPVtdO3JldHVybiByLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihvKXtpZihvLnR5cGU9PT1kLkJpbmFyeVN0cmVhbXx8by50eXBlPT09ZC5CaW5hcnlGaWxlKXtsZXQgbj1vLmRhdGE7Zy5wdXNoKG4pfWVsc2UgaWYoby50eXBlPT09ZC5JbWFnZSl7bGV0IG49by5kYXRhO2cucHVzaCguLi5rZShuKSl9ZWxzZSBpZihvLnR5cGU9PT1kLk1lc2gpe2xldCBuPW8uZGF0YTtnLnB1c2goLi4uTGUobikpfWVsc2UgaWYoby50eXBlPT09ZC5Qb2x5RGF0YSl7bGV0IG49by5kYXRhO2cucHVzaCguLi5iZShuKSl9fSksX0EocixHZShnLCEwKSl9dmFyIEplPXdyO3ZhciBwcj17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSx0LGUsSSxyLGcpe2xldCBvPWF3YWl0IHBlKEEsdCxnKTtyZXR1cm4gYXdhaXQgSmUobyxlLEkscil9fTtGQShwcik7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztBSSh0SSk7ZXhwb3J0e29nIGFzIGRvd25zYW1wbGUsZWcgYXMgZG93bnNhbXBsZUJpblNocmluayxJZyBhcyBkb3duc2FtcGxlTGFiZWxJbWFnZSxnZyBhcyBkb3duc2FtcGxlU2lnbWEsYWcgYXMgZ2F1c3NpYW5LZXJuZWxSYWRpdXMsVCBhcyBnZXREZWZhdWx0V2ViV29ya2VyLEcgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsTyBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLHFhIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsQUkgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsR2EgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCxlZSBhcyB2ZXJzaW9ufTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" +default_js_module = """data:text/javascript;base64,dmFyIHJJPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZ0k9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlySShBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIGlJPSIxLjguMCIsZWU9aUk7dmFyIG9JPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0saz1vSTt2YXIgbkk9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFg9bkk7ZnVuY3Rpb24gYUkoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIGsuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIGsuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIGsuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2Ugay5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBrLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIFguRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgWC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIEg9YUk7dmFyIHNJPXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLFBvaW50U2V0OiJQb2ludFNldCIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixUcmFuc2Zvcm1MaXN0OiJUcmFuc2Zvcm1MaXN0IixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxkPXNJO3ZhciBUZT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxDST1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyZT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksdGU9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLFVBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSx4ZT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixCST17Y2FuSGFuZGxlOkE9PnhlKEEpJiZBW1RlXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOmUscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBXZShBLGUpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksZ2UoQSl9fSxRST17Y2FuSGFuZGxlOkE9PnhlKEEpJiZVQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBlO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ZT17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OmU9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW2UsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sUGU9bmV3IE1hcChbWyJwcm94eSIsQkldLFsidGhyb3ciLFFJXV0pO2Z1bmN0aW9uIEVJKEEsZSl7Zm9yKGxldCB0IG9mIEEpaWYoZT09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBXZShBLGU9Z2xvYmFsVGhpcyx0PVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIEkocil7aWYoIXJ8fCFyLmRhdGEpcmV0dXJuO2lmKCFFSSh0LHIub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiAnJHtyLm9yaWdpbn0nIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDppLHR5cGU6ZyxwYXRoOnN9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LHIuZGF0YSksRT0oci5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcCh6KSxDO3RyeXtsZXQgbz1zLnNsaWNlKDAsLTEpLnJlZHVjZSgoYyxCKT0+Y1tCXSxBKSxhPXMucmVkdWNlKChjLEIpPT5jW0JdLEEpO3N3aXRjaChnKXtjYXNlIkdFVCI6Qz1hO2JyZWFrO2Nhc2UiU0VUIjpvW3Muc2xpY2UoLTEpWzBdXT16KHIuZGF0YS52YWx1ZSksQz0hMDticmVhaztjYXNlIkFQUExZIjpDPWEuYXBwbHkobyxFKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBjPW5ldyBhKC4uLkUpO0M9ZEkoYyl9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpjLHBvcnQyOkJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtXZShBLEIpLEM9aWUoYyxbY10pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6Qz12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKG8pe0M9e3ZhbHVlOm8sW1VBXTowfX1Qcm9taXNlLnJlc29sdmUoQykuY2F0Y2gobz0+KHt2YWx1ZTpvLFtVQV06MH0pKS50aGVuKG89PntsZXRbYSxjXT1MQShvKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLGMpLGc9PT0iUkVMRUFTRSImJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLEkpLGplKGUpLHRlIGluIEEmJnR5cGVvZiBBW3RlXT09ImZ1bmN0aW9uIiYmQVt0ZV0oKSl9KS5jYXRjaChvPT57bGV0W2EsY109TEEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtVQV06MH0pO2UucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtpZDppfSksYyl9KX0pLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBsSShBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBqZShBKXtsSShBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIGdlKEEsZSl7cmV0dXJuIEllKEEsW10sZSl9ZnVuY3Rpb24ga0EoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIHZlKEEpe3JldHVybiBBQShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntqZShBKX0pfXZhciBOQT1uZXcgV2Vha01hcCxHQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oTkEuZ2V0KEEpfHwwKS0xO05BLnNldChBLGUpLGU9PT0wJiZ2ZShBKX0pO2Z1bmN0aW9uIGNJKEEsZSl7bGV0IHQ9KE5BLmdldChlKXx8MCkrMTtOQS5zZXQoZSx0KSxHQSYmR0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIGZJKEEpe0dBJiZHQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIEllKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IEk9ITEscj1uZXcgUHJveHkodCx7Z2V0KGksZyl7aWYoa0EoSSksZz09PXJlKXJldHVybigpPT57ZkkociksdmUoQSksST0hMH07aWYoZz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5yfTtsZXQgcz1BQShBLHt0eXBlOiJHRVQiLHBhdGg6ZS5tYXAoRT0+RS50b1N0cmluZygpKX0pLnRoZW4oeik7cmV0dXJuIHMudGhlbi5iaW5kKHMpfXJldHVybiBJZShBLFsuLi5lLGddKX0sc2V0KGksZyxzKXtrQShJKTtsZXRbRSxDXT1MQShzKTtyZXR1cm4gQUEoQSx7dHlwZToiU0VUIixwYXRoOlsuLi5lLGddLm1hcChvPT5vLnRvU3RyaW5nKCkpLHZhbHVlOkV9LEMpLnRoZW4oeil9LGFwcGx5KGksZyxzKXtrQShJKTtsZXQgRT1lW2UubGVuZ3RoLTFdO2lmKEU9PT1DSSlyZXR1cm4gQUEoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbih6KTtpZihFPT09ImJpbmQiKXJldHVybiBJZShBLGUuc2xpY2UoMCwtMSkpO2xldFtDLG9dPU9lKHMpO3JldHVybiBBQShBLHt0eXBlOiJBUFBMWSIscGF0aDplLm1hcChhPT5hLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpDfSxvKS50aGVuKHopfSxjb25zdHJ1Y3QoaSxnKXtrQShJKTtsZXRbcyxFXT1PZShnKTtyZXR1cm4gQUEoQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOmUubWFwKEM9PkMudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OnN9LEUpLnRoZW4oeil9fSk7cmV0dXJuIGNJKHIsQSkscn1mdW5jdGlvbiB1SShBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBPZShBKXtsZXQgZT1BLm1hcChMQSk7cmV0dXJuW2UubWFwKHQ9PnRbMF0pLHVJKGUubWFwKHQ9PnRbMV0pKV19dmFyIFplPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGllKEEsZSl7cmV0dXJuIFplLnNldChBLGUpLEF9ZnVuY3Rpb24gZEkoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W1RlXTohMH0pfWZ1bmN0aW9uIExBKEEpe2ZvcihsZXRbZSx0XW9mIFBlKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbSSxyXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6ZSx2YWx1ZTpJfSxyXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sWmUuZ2V0KEEpfHxbXV19ZnVuY3Rpb24geihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBQZS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIEFBKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoST0+e2xldCByPXBJKCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKGcpeyFnLmRhdGF8fCFnLmRhdGEuaWR8fGcuZGF0YS5pZCE9PXJ8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLEkoZy5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpyfSxlKSx0KX0pfWZ1bmN0aW9uIHBJKCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBDQShBLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KGUsYXJndW1lbnRzKX19dmFye3RvU3RyaW5nOmhJfT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpuZX09T2JqZWN0LHtpdGVyYXRvcjpKQSx0b1N0cmluZ1RhZzp6ZX09U3ltYm9sLFlBPShBPT5lPT57bGV0IHQ9aEkuY2FsbChlKTtyZXR1cm4gQVt0XXx8KEFbdF09dC5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpKX0pKE9iamVjdC5jcmVhdGUobnVsbCkpLGI9QT0+KEE9QS50b0xvd2VyQ2FzZSgpLGU9PllBKGUpPT09QSksTUE9QT0+ZT0+dHlwZW9mIGU9PT1BLHtpc0FycmF5OnRBfT1BcnJheSxlQT1NQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gQkEoQSl7cmV0dXJuIEEhPT1udWxsJiYhZUEoQSkmJkEuY29uc3RydWN0b3IhPT1udWxsJiYhZUEoQS5jb25zdHJ1Y3RvcikmJlUoQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIF9lPWIoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gREkoQSl7bGV0IGU7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9lPUFycmF5QnVmZmVyLmlzVmlldyhBKTplPUEmJkEuYnVmZmVyJiZfZShBLmJ1ZmZlciksZX12YXIgeUk9TUEoInN0cmluZyIpLFU9TUEoImZ1bmN0aW9uIiksJGU9TUEoIm51bWJlciIpLFFBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsd0k9QT0+QT09PSEwfHxBPT09ITEsYkE9QT0+e2lmKFlBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IGU9bmUoQSk7cmV0dXJuKGU9PT1udWxsfHxlPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bnVsbCkmJiEoemUgaW4gQSkmJiEoSkEgaW4gQSl9LG1JPUE9PntpZighUUEoQSl8fEJBKEEpKXJldHVybiExO3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoQSkubGVuZ3RoPT09MCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09T2JqZWN0LnByb3RvdHlwZX1jYXRjaHtyZXR1cm4hMX19LFNJPWIoIkRhdGUiKSxGST1iKCJGaWxlIiksUkk9YigiQmxvYiIpLGtJPWIoIkZpbGVMaXN0IiksVUk9QT0+UUEoQSkmJlUoQS5waXBlKSxOST1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1ZQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sR0k9YigiVVJMU2VhcmNoUGFyYW1zIiksW0xJLGJJLEpJLFlJXT1bIlJlYWRhYmxlU3RyZWFtIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiSGVhZGVycyJdLm1hcChiKSxNST1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywiIik7ZnVuY3Rpb24gRUEoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgSSxyO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSx0QShBKSlmb3IoST0wLHI9QS5sZW5ndGg7STxyO0krKyllLmNhbGwobnVsbCxBW0ldLEksQSk7ZWxzZXtpZihCQShBKSlyZXR1cm47bGV0IGk9dD9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKTpPYmplY3Qua2V5cyhBKSxnPWkubGVuZ3RoLHM7Zm9yKEk9MDtJPGc7SSsrKXM9aVtJXSxlLmNhbGwobnVsbCxBW3NdLHMsQSl9fWZ1bmN0aW9uIEF0KEEsZSl7aWYoQkEoQSkpcmV0dXJuIG51bGw7ZT1lLnRvTG93ZXJDYXNlKCk7bGV0IHQ9T2JqZWN0LmtleXMoQSksST10Lmxlbmd0aCxyO2Zvcig7SS0tID4wOylpZihyPXRbSV0sZT09PXIudG9Mb3dlckNhc2UoKSlyZXR1cm4gcjtyZXR1cm4gbnVsbH12YXIgXz10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLGV0PUE9PiFlQShBKSYmQSE9PV87ZnVuY3Rpb24gb2UoKXtsZXR7Y2FzZWxlc3M6QSxza2lwVW5kZWZpbmVkOmV9PWV0KHRoaXMpJiZ0aGlzfHx7fSx0PXt9LEk9KHIsaSk9PntsZXQgZz1BJiZBdCh0LGkpfHxpO2JBKHRbZ10pJiZiQShyKT90W2ddPW9lKHRbZ10scik6YkEocik/dFtnXT1vZSh7fSxyKTp0QShyKT90W2ddPXIuc2xpY2UoKTooIWV8fCFlQShyKSkmJih0W2ddPXIpfTtmb3IobGV0IHI9MCxpPWFyZ3VtZW50cy5sZW5ndGg7cjxpO3IrKylhcmd1bWVudHNbcl0mJkVBKGFyZ3VtZW50c1tyXSxJKTtyZXR1cm4gdH12YXIgSEk9KEEsZSx0LHthbGxPd25LZXlzOkl9PXt9KT0+KEVBKGUsKHIsaSk9Pnt0JiZVKHIpP0FbaV09Q0Eocix0KTpBW2ldPXJ9LHthbGxPd25LZXlzOkl9KSxBKSxxST1BPT4oQS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihBPUEuc2xpY2UoMSkpLEEpLEtJPShBLGUsdCxJKT0+e0EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUsSSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwic3VwZXIiLHt2YWx1ZTplLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oQS5wcm90b3R5cGUsdCl9LE9JPShBLGUsdCxJKT0+e2xldCByLGksZyxzPXt9O2lmKGU9ZXx8e30sQT09bnVsbClyZXR1cm4gZTtkb3tmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKSxpPXIubGVuZ3RoO2ktLSA+MDspZz1yW2ldLCghSXx8SShnLEEsZSkpJiYhc1tnXSYmKGVbZ109QVtnXSxzW2ddPSEwKTtBPXQhPT0hMSYmbmUoQSl9d2hpbGUoQSYmKCF0fHx0KEEsZSkpJiZBIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIGV9LFRJPShBLGUsdCk9PntBPVN0cmluZyhBKSwodD09PXZvaWQgMHx8dD5BLmxlbmd0aCkmJih0PUEubGVuZ3RoKSx0LT1lLmxlbmd0aDtsZXQgST1BLmluZGV4T2YoZSx0KTtyZXR1cm4gSSE9PS0xJiZJPT09dH0seEk9QT0+e2lmKCFBKXJldHVybiBudWxsO2lmKHRBKEEpKXJldHVybiBBO2xldCBlPUEubGVuZ3RoO2lmKCEkZShlKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoZSk7Zm9yKDtlLS0gPjA7KXRbZV09QVtlXTtyZXR1cm4gdH0sUEk9KEE9PmU9PkEmJmUgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJm5lKFVpbnQ4QXJyYXkpKSxXST0oQSxlKT0+e2xldCBJPShBJiZBW0pBXSkuY2FsbChBKSxyO2Zvcig7KHI9SS5uZXh0KCkpJiYhci5kb25lOyl7bGV0IGk9ci52YWx1ZTtlLmNhbGwoQSxpWzBdLGlbMV0pfX0sakk9KEEsZSk9PntsZXQgdCxJPVtdO2Zvcig7KHQ9QS5leGVjKGUpKSE9PW51bGw7KUkucHVzaCh0KTtyZXR1cm4gSX0sdkk9YigiSFRNTEZvcm1FbGVtZW50IiksWkk9QT0+QS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xzXShbYS16XGRdKShcdyopL2csZnVuY3Rpb24odCxJLHIpe3JldHVybiBJLnRvVXBwZXJDYXNlKCkrcn0pLFhlPSgoe2hhc093blByb3BlcnR5OkF9KT0+KGUsdCk9PkEuY2FsbChlLHQpKShPYmplY3QucHJvdG90eXBlKSxWST1iKCJSZWdFeHAiKSx0dD0oQSxlKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEEpLEk9e307RUEodCwocixpKT0+e2xldCBnOyhnPWUocixpLEEpKSE9PSExJiYoSVtpXT1nfHxyKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEEsSSl9LFhJPUE9Pnt0dChBLChlLHQpPT57aWYoVShBKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IEk9QVt0XTtpZihVKEkpKXtpZihlLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIGUpe2Uud3JpdGFibGU9ITE7cmV0dXJufWUuc2V0fHwoZS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgJyIrdCsiJyIpfSl9fSl9LHpJPShBLGUpPT57bGV0IHQ9e30sST1yPT57ci5mb3JFYWNoKGk9Pnt0W2ldPSEwfSl9O3JldHVybiB0QShBKT9JKEEpOkkoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxfST0oKT0+e30sJEk9KEEsZSk9PkEhPW51bGwmJk51bWJlci5pc0Zpbml0ZShBPStBKT9BOmU7ZnVuY3Rpb24gQXIoQSl7cmV0dXJuISEoQSYmVShBLmFwcGVuZCkmJkFbemVdPT09IkZvcm1EYXRhIiYmQVtKQV0pfXZhciBlcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShJLHIpPT57aWYoUUEoSSkpe2lmKGUuaW5kZXhPZihJKT49MClyZXR1cm47aWYoQkEoSSkpcmV0dXJuIEk7aWYoISgidG9KU09OImluIEkpKXtlW3JdPUk7bGV0IGk9dEEoSSk/W106e307cmV0dXJuIEVBKEksKGcscyk9PntsZXQgRT10KGcscisxKTshZUEoRSkmJihpW3NdPUUpfSksZVtyXT12b2lkIDAsaX19cmV0dXJuIEl9O3JldHVybiB0KEEsMCl9LHRyPWIoIkFzeW5jRnVuY3Rpb24iKSxJcj1BPT5BJiYoUUEoQSl8fFUoQSkpJiZVKEEudGhlbikmJlUoQS5jYXRjaCksSXQ9KChBLGUpPT5BP3NldEltbWVkaWF0ZTplPygodCxJKT0+KF8uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtzb3VyY2U6cixkYXRhOml9KT0+e3I9PT1fJiZpPT09dCYmSS5sZW5ndGgmJkkuc2hpZnQoKSgpfSwhMSkscj0+e0kucHVzaChyKSxfLnBvc3RNZXNzYWdlKHQsIioiKX0pKShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsW10pOnQ9PnNldFRpbWVvdXQodCkpKHR5cGVvZiBzZXRJbW1lZGlhdGU9PSJmdW5jdGlvbiIsVShfLnBvc3RNZXNzYWdlKSkscnI9dHlwZW9mIHF1ZXVlTWljcm90YXNrPCJ1Ij9xdWV1ZU1pY3JvdGFzay5iaW5kKF8pOnR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5uZXh0VGlja3x8SXQsZ3I9QT0+QSE9bnVsbCYmVShBW0pBXSksbj17aXNBcnJheTp0QSxpc0FycmF5QnVmZmVyOl9lLGlzQnVmZmVyOkJBLGlzRm9ybURhdGE6TkksaXNBcnJheUJ1ZmZlclZpZXc6REksaXNTdHJpbmc6eUksaXNOdW1iZXI6JGUsaXNCb29sZWFuOndJLGlzT2JqZWN0OlFBLGlzUGxhaW5PYmplY3Q6YkEsaXNFbXB0eU9iamVjdDptSSxpc1JlYWRhYmxlU3RyZWFtOkxJLGlzUmVxdWVzdDpiSSxpc1Jlc3BvbnNlOkpJLGlzSGVhZGVyczpZSSxpc1VuZGVmaW5lZDplQSxpc0RhdGU6U0ksaXNGaWxlOkZJLGlzQmxvYjpSSSxpc1JlZ0V4cDpWSSxpc0Z1bmN0aW9uOlUsaXNTdHJlYW06VUksaXNVUkxTZWFyY2hQYXJhbXM6R0ksaXNUeXBlZEFycmF5OlBJLGlzRmlsZUxpc3Q6a0ksZm9yRWFjaDpFQSxtZXJnZTpvZSxleHRlbmQ6SEksdHJpbTpNSSxzdHJpcEJPTTpxSSxpbmhlcml0czpLSSx0b0ZsYXRPYmplY3Q6T0ksa2luZE9mOllBLGtpbmRPZlRlc3Q6YixlbmRzV2l0aDpUSSx0b0FycmF5OnhJLGZvckVhY2hFbnRyeTpXSSxtYXRjaEFsbDpqSSxpc0hUTUxGb3JtOnZJLGhhc093blByb3BlcnR5OlhlLGhhc093blByb3A6WGUscmVkdWNlRGVzY3JpcHRvcnM6dHQsZnJlZXplTWV0aG9kczpYSSx0b09iamVjdFNldDp6SSx0b0NhbWVsQ2FzZTpaSSxub29wOl9JLHRvRmluaXRlTnVtYmVyOiRJLGZpbmRLZXk6QXQsZ2xvYmFsOl8saXNDb250ZXh0RGVmaW5lZDpldCxpc1NwZWNDb21wbGlhbnRGb3JtOkFyLHRvSlNPTk9iamVjdDplcixpc0FzeW5jRm46dHIsaXNUaGVuYWJsZTpJcixzZXRJbW1lZGlhdGU6SXQsYXNhcDpycixpc0l0ZXJhYmxlOmdyfTtmdW5jdGlvbiBJQShBLGUsdCxJLHIpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsZSYmKHRoaXMuY29kZT1lKSx0JiYodGhpcy5jb25maWc9dCksSSYmKHRoaXMucmVxdWVzdD1JKSxyJiYodGhpcy5yZXNwb25zZT1yLHRoaXMuc3RhdHVzPXIuc3RhdHVzP3Iuc3RhdHVzOm51bGwpfW4uaW5oZXJpdHMoSUEsRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpuLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMuc3RhdHVzfX19KTt2YXIgcnQ9SUEucHJvdG90eXBlLGd0PXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e2d0W0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKElBLGd0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocnQsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7SUEuZnJvbT0oQSxlLHQsSSxyLGkpPT57bGV0IGc9T2JqZWN0LmNyZWF0ZShydCk7bi50b0ZsYXRPYmplY3QoQSxnLGZ1bmN0aW9uKG8pe3JldHVybiBvIT09RXJyb3IucHJvdG90eXBlfSxDPT5DIT09ImlzQXhpb3NFcnJvciIpO2xldCBzPUEmJkEubWVzc2FnZT9BLm1lc3NhZ2U6IkVycm9yIixFPWU9PW51bGwmJkE/QS5jb2RlOmU7cmV0dXJuIElBLmNhbGwoZyxzLEUsdCxJLHIpLEEmJmcuY2F1c2U9PW51bGwmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLCJjYXVzZSIse3ZhbHVlOkEsY29uZmlndXJhYmxlOiEwfSksZy5uYW1lPUEmJkEubmFtZXx8IkVycm9yIixpJiZPYmplY3QuYXNzaWduKGcsaSksZ307dmFyIHU9SUE7dmFyIEhBPW51bGw7ZnVuY3Rpb24gYWUoQSl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdChBKXx8bi5pc0FycmF5KEEpfWZ1bmN0aW9uIG90KEEpe3JldHVybiBuLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGl0KEEsZSx0KXtyZXR1cm4gQT9BLmNvbmNhdChlKS5tYXAoZnVuY3Rpb24ocixpKXtyZXR1cm4gcj1vdChyKSwhdCYmaT8iWyIrcisiXSI6cn0pLmpvaW4odD8iLiI6IiIpOmV9ZnVuY3Rpb24gaXIoQSl7cmV0dXJuIG4uaXNBcnJheShBKSYmIUEuc29tZShhZSl9dmFyIG9yPW4udG9GbGF0T2JqZWN0KG4se30sbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoZSl9KTtmdW5jdGlvbiBucihBLGUsdCl7aWYoIW4uaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ZT1lfHxuZXcoSEF8fEZvcm1EYXRhKSx0PW4udG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihmLGwpe3JldHVybiFuLmlzVW5kZWZpbmVkKGxbZl0pfSk7bGV0IEk9dC5tZXRhVG9rZW5zLHI9dC52aXNpdG9yfHxvLGk9dC5kb3RzLGc9dC5pbmRleGVzLEU9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmbi5pc1NwZWNDb21wbGlhbnRGb3JtKGUpO2lmKCFuLmlzRnVuY3Rpb24ocikpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBDKFEpe2lmKFE9PT1udWxsKXJldHVybiIiO2lmKG4uaXNEYXRlKFEpKXJldHVybiBRLnRvSVNPU3RyaW5nKCk7aWYobi5pc0Jvb2xlYW4oUSkpcmV0dXJuIFEudG9TdHJpbmcoKTtpZighRSYmbi5pc0Jsb2IoUSkpdGhyb3cgbmV3IHUoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIG4uaXNBcnJheUJ1ZmZlcihRKXx8bi5pc1R5cGVkQXJyYXkoUSk/RSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW1FdKTpCdWZmZXIuZnJvbShRKTpRfWZ1bmN0aW9uIG8oUSxmLGwpe2xldCBwPVE7aWYoUSYmIWwmJnR5cGVvZiBRPT0ib2JqZWN0Iil7aWYobi5lbmRzV2l0aChmLCJ7fSIpKWY9ST9mOmYuc2xpY2UoMCwtMiksUT1KU09OLnN0cmluZ2lmeShRKTtlbHNlIGlmKG4uaXNBcnJheShRKSYmaXIoUSl8fChuLmlzRmlsZUxpc3QoUSl8fG4uZW5kc1dpdGgoZiwiW10iKSkmJihwPW4udG9BcnJheShRKSkpcmV0dXJuIGY9b3QoZikscC5mb3JFYWNoKGZ1bmN0aW9uKEQsUil7IShuLmlzVW5kZWZpbmVkKEQpfHxEPT09bnVsbCkmJmUuYXBwZW5kKGc9PT0hMD9pdChbZl0sUixpKTpnPT09bnVsbD9mOmYrIltdIixDKEQpKX0pLCExfXJldHVybiBhZShRKT8hMDooZS5hcHBlbmQoaXQobCxmLGkpLEMoUSkpLCExKX1sZXQgYT1bXSxjPU9iamVjdC5hc3NpZ24ob3Ise2RlZmF1bHRWaXNpdG9yOm8sY29udmVydFZhbHVlOkMsaXNWaXNpdGFibGU6YWV9KTtmdW5jdGlvbiBCKFEsZil7aWYoIW4uaXNVbmRlZmluZWQoUSkpe2lmKGEuaW5kZXhPZihRKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitmLmpvaW4oIi4iKSk7YS5wdXNoKFEpLG4uZm9yRWFjaChRLGZ1bmN0aW9uKHAsRil7KCEobi5pc1VuZGVmaW5lZChwKXx8cD09PW51bGwpJiZyLmNhbGwoZSxwLG4uaXNTdHJpbmcoRik/Ri50cmltKCk6RixmLGMpKT09PSEwJiZCKHAsZj9mLmNvbmNhdChGKTpbRl0pfSksYS5wb3AoKX19aWYoIW4uaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBCKEEpLGV9dmFyIGo9bnI7ZnVuY3Rpb24gbnQoQSl7bGV0IGU9eyIhIjoiJTIxIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwifiI6IiU3RSIsIiUyMCI6IisiLCIlMDAiOiJcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvWyEnKCl+XXwlMjB8JTAwL2csZnVuY3Rpb24oSSl7cmV0dXJuIGVbSV19KX1mdW5jdGlvbiBhdChBLGUpe3RoaXMuX3BhaXJzPVtdLEEmJmooQSx0aGlzLGUpfXZhciBzdD1hdC5wcm90b3R5cGU7c3QuYXBwZW5kPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcGFpcnMucHVzaChbZSx0XSl9O3N0LnRvU3RyaW5nPWZ1bmN0aW9uKGUpe2xldCB0PWU/ZnVuY3Rpb24oSSl7cmV0dXJuIGUuY2FsbCh0aGlzLEksbnQpfTpudDtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0KHJbMF0pKyI9Iit0KHJbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgcUE9YXQ7ZnVuY3Rpb24gYXIoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIil9ZnVuY3Rpb24gbEEoQSxlLHQpe2lmKCFlKXJldHVybiBBO2xldCBJPXQmJnQuZW5jb2RlfHxhcjtuLmlzRnVuY3Rpb24odCkmJih0PXtzZXJpYWxpemU6dH0pO2xldCByPXQmJnQuc2VyaWFsaXplLGk7aWYocj9pPXIoZSx0KTppPW4uaXNVUkxTZWFyY2hQYXJhbXMoZSk/ZS50b1N0cmluZygpOm5ldyBxQShlLHQpLnRvU3RyaW5nKEkpLGkpe2xldCBnPUEuaW5kZXhPZigiIyIpO2chPT0tMSYmKEE9QS5zbGljZSgwLGcpKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStpfXJldHVybiBBfXZhciBzZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKGUsdCxJKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOkk/SS5zeW5jaHJvbm91czohMSxydW5XaGVuOkk/SS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goZSl7bi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oSSl7SSE9PW51bGwmJmUoSSl9KX19LENlPXNlO3ZhciBLQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIEN0PXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpxQTt2YXIgQnQ9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciBRdD10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBFdD17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczpDdCxGb3JtRGF0YTpCdCxCbG9iOlF0fSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIEVlPXt9O2dJKEVlLHtoYXNCcm93c2VyRW52OigpPT5RZSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PnNyLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+Q3IsbmF2aWdhdG9yOigpPT5CZSxvcmlnaW46KCk9PkJyfSk7dmFyIFFlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEJlPXR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3J8fHZvaWQgMCxzcj1RZSYmKCFCZXx8WyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihCZS5wcm9kdWN0KTwwKSxDcj10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIsQnI9UWUmJndpbmRvdy5sb2NhdGlvbi5ocmVmfHwiaHR0cDovL2xvY2FsaG9zdCI7dmFyIGg9ey4uLkVlLC4uLkV0fTtmdW5jdGlvbiBsZShBLGUpe3JldHVybiBqKEEsbmV3IGguY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMse3Zpc2l0b3I6ZnVuY3Rpb24odCxJLHIsaSl7cmV0dXJuIGguaXNOb2RlJiZuLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChJLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6aS5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LC4uLmV9KX1mdW5jdGlvbiBRcihBKXtyZXR1cm4gbi5tYXRjaEFsbCgvXHcrfFxbKFx3KildL2csQSkubWFwKGU9PmVbMF09PT0iW10iPyIiOmVbMV18fGVbMF0pfWZ1bmN0aW9uIEVyKEEpe2xldCBlPXt9LHQ9T2JqZWN0LmtleXMoQSksSSxyPXQubGVuZ3RoLGk7Zm9yKEk9MDtJPHI7SSsrKWk9dFtJXSxlW2ldPUFbaV07cmV0dXJuIGV9ZnVuY3Rpb24gbHIoQSl7ZnVuY3Rpb24gZSh0LEkscixpKXtsZXQgZz10W2krK107aWYoZz09PSJfX3Byb3RvX18iKXJldHVybiEwO2xldCBzPU51bWJlci5pc0Zpbml0ZSgrZyksRT1pPj10Lmxlbmd0aDtyZXR1cm4gZz0hZyYmbi5pc0FycmF5KHIpP3IubGVuZ3RoOmcsRT8obi5oYXNPd25Qcm9wKHIsZyk/cltnXT1bcltnXSxJXTpyW2ddPUksIXMpOigoIXJbZ118fCFuLmlzT2JqZWN0KHJbZ10pKSYmKHJbZ109W10pLGUodCxJLHJbZ10saSkmJm4uaXNBcnJheShyW2ddKSYmKHJbZ109RXIocltnXSkpLCFzKX1pZihuLmlzRm9ybURhdGEoQSkmJm4uaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gbi5mb3JFYWNoRW50cnkoQSwoSSxyKT0+e2UoUXIoSSkscix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgT0E9bHI7ZnVuY3Rpb24gY3IoQSxlLHQpe2lmKG4uaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxuLnRyaW0oQSl9Y2F0Y2goSSl7aWYoSS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBJfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIGNlPXt0cmFuc2l0aW9uYWw6S0EsYWRhcHRlcjpbInhociIsImh0dHAiLCJmZXRjaCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7bGV0IEk9dC5nZXRDb250ZW50VHlwZSgpfHwiIixyPUkuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLGk9bi5pc09iamVjdChlKTtpZihpJiZuLmlzSFRNTEZvcm0oZSkmJihlPW5ldyBGb3JtRGF0YShlKSksbi5pc0Zvcm1EYXRhKGUpKXJldHVybiByP0pTT04uc3RyaW5naWZ5KE9BKGUpKTplO2lmKG4uaXNBcnJheUJ1ZmZlcihlKXx8bi5pc0J1ZmZlcihlKXx8bi5pc1N0cmVhbShlKXx8bi5pc0ZpbGUoZSl8fG4uaXNCbG9iKGUpfHxuLmlzUmVhZGFibGVTdHJlYW0oZSkpcmV0dXJuIGU7aWYobi5pc0FycmF5QnVmZmVyVmlldyhlKSlyZXR1cm4gZS5idWZmZXI7aWYobi5pc1VSTFNlYXJjaFBhcmFtcyhlKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxlLnRvU3RyaW5nKCk7bGV0IHM7aWYoaSl7aWYoSS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gbGUoZSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChzPW4uaXNGaWxlTGlzdChlKSl8fEkuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgRT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIGoocz97ImZpbGVzW10iOmV9OmUsRSYmbmV3IEUsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiBpfHxyPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSksY3IoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fGNlLnRyYW5zaXRpb25hbCxJPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcscj10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihuLmlzUmVzcG9uc2UoZSl8fG4uaXNSZWFkYWJsZVN0cmVhbShlKSlyZXR1cm4gZTtpZihlJiZuLmlzU3RyaW5nKGUpJiYoSSYmIXRoaXMucmVzcG9uc2VUeXBlfHxyKSl7bGV0IGc9ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmcjt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSx0aGlzLnBhcnNlUmV2aXZlcil9Y2F0Y2gocyl7aWYoZyl0aHJvdyBzLm5hbWU9PT0iU3ludGF4RXJyb3IiP3UuZnJvbShzLHUuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6c319cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOmguY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOmguY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O24uZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57Y2UuaGVhZGVyc1tBXT17fX0pO3ZhciByQT1jZTt2YXIgZnI9bi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxsdD1BPT57bGV0IGU9e30sdCxJLHI7cmV0dXJuIEEmJkEuc3BsaXQoYApgKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe3I9Zy5pbmRleE9mKCI6IiksdD1nLnN1YnN0cmluZygwLHIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLEk9Zy5zdWJzdHJpbmcocisxKS50cmltKCksISghdHx8ZVt0XSYmZnJbdF0pJiYodD09PSJzZXQtY29va2llIj9lW3RdP2VbdF0ucHVzaChJKTplW3RdPVtJXTplW3RdPWVbdF0/ZVt0XSsiLCAiK0k6SSl9KSxlfTt2YXIgY3Q9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBjQShBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFRBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTpuLmlzQXJyYXkoQSk/QS5tYXAoVEEpOlN0cmluZyhBKX1mdW5jdGlvbiB1cihBKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9LyhbXlxzLDs9XSspXHMqKD86PVxzKihbXiw7XSspKT8vZyxJO2Zvcig7ST10LmV4ZWMoQSk7KWVbSVsxXV09SVsyXTtyZXR1cm4gZX12YXIgZHI9QT0+L15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gZmUoQSxlLHQsSSxyKXtpZihuLmlzRnVuY3Rpb24oSSkpcmV0dXJuIEkuY2FsbCh0aGlzLGUsdCk7aWYociYmKGU9dCksISFuLmlzU3RyaW5nKGUpKXtpZihuLmlzU3RyaW5nKEkpKXJldHVybiBlLmluZGV4T2YoSSkhPT0tMTtpZihuLmlzUmVnRXhwKEkpKXJldHVybiBJLnRlc3QoZSl9fWZ1bmN0aW9uIHByKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XGRdKShcdyopL2csKGUsdCxJKT0+dC50b1VwcGVyQ2FzZSgpK0kpfWZ1bmN0aW9uIGhyKEEsZSl7bGV0IHQ9bi50b0NhbWVsQ2FzZSgiICIrZSk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKEk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxJK3Qse3ZhbHVlOmZ1bmN0aW9uKHIsaSxnKXtyZXR1cm4gdGhpc1tJXS5jYWxsKHRoaXMsZSxyLGksZyl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9dmFyIGdBPWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQsSSl7bGV0IHI9dGhpcztmdW5jdGlvbiBpKHMsRSxDKXtsZXQgbz1jQShFKTtpZighbyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9bi5maW5kS2V5KHIsbyk7KCFhfHxyW2FdPT09dm9pZCAwfHxDPT09ITB8fEM9PT12b2lkIDAmJnJbYV0hPT0hMSkmJihyW2F8fEVdPVRBKHMpKX1sZXQgZz0ocyxFKT0+bi5mb3JFYWNoKHMsKEMsbyk9PmkoQyxvLEUpKTtpZihuLmlzUGxhaW5PYmplY3QoZSl8fGUgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKWcoZSx0KTtlbHNlIGlmKG4uaXNTdHJpbmcoZSkmJihlPWUudHJpbSgpKSYmIWRyKGUpKWcobHQoZSksdCk7ZWxzZSBpZihuLmlzT2JqZWN0KGUpJiZuLmlzSXRlcmFibGUoZSkpe2xldCBzPXt9LEUsQztmb3IobGV0IG8gb2YgZSl7aWYoIW4uaXNBcnJheShvKSl0aHJvdyBUeXBlRXJyb3IoIk9iamVjdCBpdGVyYXRvciBtdXN0IHJldHVybiBhIGtleS12YWx1ZSBwYWlyIik7c1tDPW9bMF1dPShFPXNbQ10pP24uaXNBcnJheShFKT9bLi4uRSxvWzFdXTpbRSxvWzFdXTpvWzFdfWcocyx0KX1lbHNlIGUhPW51bGwmJmkodCxlLEkpO3JldHVybiB0aGlzfWdldChlLHQpe2lmKGU9Y0EoZSksZSl7bGV0IEk9bi5maW5kS2V5KHRoaXMsZSk7aWYoSSl7bGV0IHI9dGhpc1tJXTtpZighdClyZXR1cm4gcjtpZih0PT09ITApcmV0dXJuIHVyKHIpO2lmKG4uaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMscixJKTtpZihuLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMocik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9Y0EoZSksZSl7bGV0IEk9bi5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEoSSYmdGhpc1tJXSE9PXZvaWQgMCYmKCF0fHxmZSh0aGlzLHRoaXNbSV0sSSx0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCBJPXRoaXMscj0hMTtmdW5jdGlvbiBpKGcpe2lmKGc9Y0EoZyksZyl7bGV0IHM9bi5maW5kS2V5KEksZyk7cyYmKCF0fHxmZShJLElbc10scyx0KSkmJihkZWxldGUgSVtzXSxyPSEwKX19cmV0dXJuIG4uaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxyfWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLEk9dC5sZW5ndGgscj0hMTtmb3IoO0ktLTspe2xldCBpPXRbSV07KCFlfHxmZSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxyPSEwKX1yZXR1cm4gcn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxJPXt9O3JldHVybiBuLmZvckVhY2godGhpcywocixpKT0+e2xldCBnPW4uZmluZEtleShJLGkpO2lmKGcpe3RbZ109VEEociksZGVsZXRlIHRbaV07cmV0dXJufWxldCBzPWU/cHIoaSk6U3RyaW5nKGkpLnRyaW0oKTtzIT09aSYmZGVsZXRlIHRbaV0sdFtzXT1UQShyKSxJW3NdPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIG4uZm9yRWFjaCh0aGlzLChJLHIpPT57SSE9bnVsbCYmSSE9PSExJiYodFtyXT1lJiZuLmlzQXJyYXkoSSk/SS5qb2luKCIsICIpOkkpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0U2V0Q29va2llKCl7cmV0dXJuIHRoaXMuZ2V0KCJzZXQtY29va2llIil8fFtdfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzP2U6bmV3IHRoaXMoZSl9c3RhdGljIGNvbmNhdChlLC4uLnQpe2xldCBJPW5ldyB0aGlzKGUpO3JldHVybiB0LmZvckVhY2gocj0+SS5zZXQocikpLEl9c3RhdGljIGFjY2Vzc29yKGUpe2xldCBJPSh0aGlzW2N0XT10aGlzW2N0XT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLHI9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gaShnKXtsZXQgcz1jQShnKTtJW3NdfHwoaHIocixnKSxJW3NdPSEwKX1yZXR1cm4gbi5pc0FycmF5KGUpP2UuZm9yRWFjaChpKTppKGUpLHRoaXN9fTtnQS5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7bi5yZWR1Y2VEZXNjcmlwdG9ycyhnQS5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KEkpe3RoaXNbdF09SX19fSk7bi5mcmVlemVNZXRob2RzKGdBKTt2YXIgbT1nQTtmdW5jdGlvbiBmQShBLGUpe2xldCB0PXRoaXN8fHJBLEk9ZXx8dCxyPW0uZnJvbShJLmhlYWRlcnMpLGk9SS5kYXRhO3JldHVybiBuLmZvckVhY2goQSxmdW5jdGlvbihzKXtpPXMuY2FsbCh0LGksci5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxyLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gdUEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBmdChBLGUsdCl7dS5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIix1LkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9bi5pbmhlcml0cyhmdCx1LHtfX0NBTkNFTF9fOiEwfSk7dmFyIHE9ZnQ7ZnVuY3Rpb24gZEEoQSxlLHQpe2xldCBJPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IUl8fEkodC5zdGF0dXMpP0EodCk6ZShuZXcgdSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFt1LkVSUl9CQURfUkVRVUVTVCx1LkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfWZ1bmN0aW9uIHVlKEEpe2xldCBlPS9eKFstK1x3XXsxLDI1fSkoOj9cL1wvfDopLy5leGVjKEEpO3JldHVybiBlJiZlWzFdfHwiIn1mdW5jdGlvbiBEcihBLGUpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLEk9bmV3IEFycmF5KEEpLHI9MCxpPTAsZztyZXR1cm4gZT1lIT09dm9pZCAwP2U6MWUzLGZ1bmN0aW9uKEUpe2xldCBDPURhdGUubm93KCksbz1JW2ldO2d8fChnPUMpLHRbcl09RSxJW3JdPUM7bGV0IGE9aSxjPTA7Zm9yKDthIT09cjspYys9dFthKytdLGE9YSVBO2lmKHI9KHIrMSklQSxyPT09aSYmKGk9KGkrMSklQSksQy1nPGUpcmV0dXJuO2xldCBCPW8mJkMtbztyZXR1cm4gQj9NYXRoLnJvdW5kKGMqMWUzL0IpOnZvaWQgMH19dmFyIHV0PURyO2Z1bmN0aW9uIHlyKEEsZSl7bGV0IHQ9MCxJPTFlMy9lLHIsaSxnPShDLG89RGF0ZS5ub3coKSk9Pnt0PW8scj1udWxsLGkmJihjbGVhclRpbWVvdXQoaSksaT1udWxsKSxBKC4uLkMpfTtyZXR1cm5bKC4uLkMpPT57bGV0IG89RGF0ZS5ub3coKSxhPW8tdDthPj1JP2coQyxvKToocj1DLGl8fChpPXNldFRpbWVvdXQoKCk9PntpPW51bGwsZyhyKX0sSS1hKSkpfSwoKT0+ciYmZyhyKV19dmFyIGR0PXlyO3ZhciBpQT0oQSxlLHQ9Myk9PntsZXQgST0wLHI9dXQoNTAsMjUwKTtyZXR1cm4gZHQoaT0+e2xldCBnPWkubG9hZGVkLHM9aS5sZW5ndGhDb21wdXRhYmxlP2kudG90YWw6dm9pZCAwLEU9Zy1JLEM9cihFKSxvPWc8PXM7ST1nO2xldCBhPXtsb2FkZWQ6Zyx0b3RhbDpzLHByb2dyZXNzOnM/Zy9zOnZvaWQgMCxieXRlczpFLHJhdGU6Q3x8dm9pZCAwLGVzdGltYXRlZDpDJiZzJiZvPyhzLWcpL0M6dm9pZCAwLGV2ZW50OmksbGVuZ3RoQ29tcHV0YWJsZTpzIT1udWxsLFtlPyJkb3dubG9hZCI6InVwbG9hZCJdOiEwfTtBKGEpfSx0KX0sZGU9KEEsZSk9PntsZXQgdD1BIT1udWxsO3JldHVybltJPT5lWzBdKHtsZW5ndGhDb21wdXRhYmxlOnQsdG90YWw6QSxsb2FkZWQ6SX0pLGVbMV1dfSxwZT1BPT4oLi4uZSk9Pm4uYXNhcCgoKT0+QSguLi5lKSk7dmFyIHB0PWguaGFzU3RhbmRhcmRCcm93c2VyRW52PygoQSxlKT0+dD0+KHQ9bmV3IFVSTCh0LGgub3JpZ2luKSxBLnByb3RvY29sPT09dC5wcm90b2NvbCYmQS5ob3N0PT09dC5ob3N0JiYoZXx8QS5wb3J0PT09dC5wb3J0KSkpKG5ldyBVUkwoaC5vcmlnaW4pLGgubmF2aWdhdG9yJiYvKG1zaWV8dHJpZGVudCkvaS50ZXN0KGgubmF2aWdhdG9yLnVzZXJBZ2VudCkpOigpPT4hMDt2YXIgaHQ9aC5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LEkscixpKXtsZXQgZz1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTtuLmlzTnVtYmVyKHQpJiZnLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxuLmlzU3RyaW5nKEkpJiZnLnB1c2goInBhdGg9IitJKSxuLmlzU3RyaW5nKHIpJiZnLnB1c2goImRvbWFpbj0iK3IpLGk9PT0hMCYmZy5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9Zy5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gaGUoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiBEZShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8/XC8kLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gcEEoQSxlLHQpe2xldCBJPSFoZShlKTtyZXR1cm4gQSYmKEl8fHQ9PSExKT9EZShBLGUpOmV9dmFyIER0PUE9PkEgaW5zdGFuY2VvZiBtP3suLi5BfTpBO2Z1bmN0aW9uIEooQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIEkoQyxvLGEsYyl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdChDKSYmbi5pc1BsYWluT2JqZWN0KG8pP24ubWVyZ2UuY2FsbCh7Y2FzZWxlc3M6Y30sQyxvKTpuLmlzUGxhaW5PYmplY3Qobyk/bi5tZXJnZSh7fSxvKTpuLmlzQXJyYXkobyk/by5zbGljZSgpOm99ZnVuY3Rpb24gcihDLG8sYSxjKXtpZihuLmlzVW5kZWZpbmVkKG8pKXtpZighbi5pc1VuZGVmaW5lZChDKSlyZXR1cm4gSSh2b2lkIDAsQyxhLGMpfWVsc2UgcmV0dXJuIEkoQyxvLGEsYyl9ZnVuY3Rpb24gaShDLG8pe2lmKCFuLmlzVW5kZWZpbmVkKG8pKXJldHVybiBJKHZvaWQgMCxvKX1mdW5jdGlvbiBnKEMsbyl7aWYobi5pc1VuZGVmaW5lZChvKSl7aWYoIW4uaXNVbmRlZmluZWQoQykpcmV0dXJuIEkodm9pZCAwLEMpfWVsc2UgcmV0dXJuIEkodm9pZCAwLG8pfWZ1bmN0aW9uIHMoQyxvLGEpe2lmKGEgaW4gZSlyZXR1cm4gSShDLG8pO2lmKGEgaW4gQSlyZXR1cm4gSSh2b2lkIDAsQyl9bGV0IEU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOmcsdHJhbnNmb3JtUmVxdWVzdDpnLHRyYW5zZm9ybVJlc3BvbnNlOmcscGFyYW1zU2VyaWFsaXplcjpnLHRpbWVvdXQ6Zyx0aW1lb3V0TWVzc2FnZTpnLHdpdGhDcmVkZW50aWFsczpnLHdpdGhYU1JGVG9rZW46ZyxhZGFwdGVyOmcscmVzcG9uc2VUeXBlOmcseHNyZkNvb2tpZU5hbWU6Zyx4c3JmSGVhZGVyTmFtZTpnLG9uVXBsb2FkUHJvZ3Jlc3M6ZyxvbkRvd25sb2FkUHJvZ3Jlc3M6ZyxkZWNvbXByZXNzOmcsbWF4Q29udGVudExlbmd0aDpnLG1heEJvZHlMZW5ndGg6ZyxiZWZvcmVSZWRpcmVjdDpnLHRyYW5zcG9ydDpnLGh0dHBBZ2VudDpnLGh0dHBzQWdlbnQ6ZyxjYW5jZWxUb2tlbjpnLHNvY2tldFBhdGg6ZyxyZXNwb25zZUVuY29kaW5nOmcsdmFsaWRhdGVTdGF0dXM6cyxoZWFkZXJzOihDLG8sYSk9PnIoRHQoQyksRHQobyksYSwhMCl9O3JldHVybiBuLmZvckVhY2goT2JqZWN0LmtleXMoey4uLkEsLi4uZX0pLGZ1bmN0aW9uKG8pe2xldCBhPUVbb118fHIsYz1hKEFbb10sZVtvXSxvKTtuLmlzVW5kZWZpbmVkKGMpJiZhIT09c3x8KHRbb109Yyl9KSx0fXZhciB4QT1BPT57bGV0IGU9Sih7fSxBKSx7ZGF0YTp0LHdpdGhYU1JGVG9rZW46SSx4c3JmSGVhZGVyTmFtZTpyLHhzcmZDb29raWVOYW1lOmksaGVhZGVyczpnLGF1dGg6c309ZTtpZihlLmhlYWRlcnM9Zz1tLmZyb20oZyksZS51cmw9bEEocEEoZS5iYXNlVVJMLGUudXJsLGUuYWxsb3dBYnNvbHV0ZVVybHMpLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplcikscyYmZy5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoKHMudXNlcm5hbWV8fCIiKSsiOiIrKHMucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMucGFzc3dvcmQpKToiIikpKSxuLmlzRm9ybURhdGEodCkpe2lmKGguaGFzU3RhbmRhcmRCcm93c2VyRW52fHxoLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilnLnNldENvbnRlbnRUeXBlKHZvaWQgMCk7ZWxzZSBpZihuLmlzRnVuY3Rpb24odC5nZXRIZWFkZXJzKSl7bGV0IEU9dC5nZXRIZWFkZXJzKCksQz1bImNvbnRlbnQtdHlwZSIsImNvbnRlbnQtbGVuZ3RoIl07T2JqZWN0LmVudHJpZXMoRSkuZm9yRWFjaCgoW28sYV0pPT57Qy5pbmNsdWRlcyhvLnRvTG93ZXJDYXNlKCkpJiZnLnNldChvLGEpfSl9fWlmKGguaGFzU3RhbmRhcmRCcm93c2VyRW52JiYoSSYmbi5pc0Z1bmN0aW9uKEkpJiYoST1JKGUpKSxJfHxJIT09ITEmJnB0KGUudXJsKSkpe2xldCBFPXImJmkmJmh0LnJlYWQoaSk7RSYmZy5zZXQocixFKX1yZXR1cm4gZX07dmFyIHdyPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIseXQ9d3ImJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LEkpe2xldCByPXhBKEEpLGk9ci5kYXRhLGc9bS5mcm9tKHIuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpzLG9uVXBsb2FkUHJvZ3Jlc3M6RSxvbkRvd25sb2FkUHJvZ3Jlc3M6Q309cixvLGEsYyxCLFE7ZnVuY3Rpb24gZigpe0ImJkIoKSxRJiZRKCksci5jYW5jZWxUb2tlbiYmci5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvKSxyLnNpZ25hbCYmci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG8pfWxldCBsPW5ldyBYTUxIdHRwUmVxdWVzdDtsLm9wZW4oci5tZXRob2QudG9VcHBlckNhc2UoKSxyLnVybCwhMCksbC50aW1lb3V0PXIudGltZW91dDtmdW5jdGlvbiBwKCl7aWYoIWwpcmV0dXJuO2xldCBEPW0uZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGwmJmwuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLEw9e2RhdGE6IXN8fHM9PT0idGV4dCJ8fHM9PT0ianNvbiI/bC5yZXNwb25zZVRleHQ6bC5yZXNwb25zZSxzdGF0dXM6bC5zdGF0dXMsc3RhdHVzVGV4dDpsLnN0YXR1c1RleHQsaGVhZGVyczpELGNvbmZpZzpBLHJlcXVlc3Q6bH07ZEEoZnVuY3Rpb24oTil7dChOKSxmKCl9LGZ1bmN0aW9uKE4pe0koTiksZigpfSxMKSxsPW51bGx9Im9ubG9hZGVuZCJpbiBsP2wub25sb2FkZW5kPXA6bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshbHx8bC5yZWFkeVN0YXRlIT09NHx8bC5zdGF0dXM9PT0wJiYhKGwucmVzcG9uc2VVUkwmJmwucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KHApfSxsLm9uYWJvcnQ9ZnVuY3Rpb24oKXtsJiYoSShuZXcgdSgiUmVxdWVzdCBhYm9ydGVkIix1LkVDT05OQUJPUlRFRCxBLGwpKSxsPW51bGwpfSxsLm9uZXJyb3I9ZnVuY3Rpb24oUil7bGV0IEw9UiYmUi5tZXNzYWdlP1IubWVzc2FnZToiTmV0d29yayBFcnJvciIsWj1uZXcgdShMLHUuRVJSX05FVFdPUkssQSxsKTtaLmV2ZW50PVJ8fG51bGwsSShaKSxsPW51bGx9LGwub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IFI9ci50aW1lb3V0PyJ0aW1lb3V0IG9mICIrci50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLEw9ci50cmFuc2l0aW9uYWx8fEtBO3IudGltZW91dEVycm9yTWVzc2FnZSYmKFI9ci50aW1lb3V0RXJyb3JNZXNzYWdlKSxJKG5ldyB1KFIsTC5jbGFyaWZ5VGltZW91dEVycm9yP3UuRVRJTUVET1VUOnUuRUNPTk5BQk9SVEVELEEsbCkpLGw9bnVsbH0saT09PXZvaWQgMCYmZy5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBsJiZuLmZvckVhY2goZy50b0pTT04oKSxmdW5jdGlvbihSLEwpe2wuc2V0UmVxdWVzdEhlYWRlcihMLFIpfSksbi5pc1VuZGVmaW5lZChyLndpdGhDcmVkZW50aWFscyl8fChsLndpdGhDcmVkZW50aWFscz0hIXIud2l0aENyZWRlbnRpYWxzKSxzJiZzIT09Impzb24iJiYobC5yZXNwb25zZVR5cGU9ci5yZXNwb25zZVR5cGUpLEMmJihbYyxRXT1pQShDLCEwKSxsLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixjKSksRSYmbC51cGxvYWQmJihbYSxCXT1pQShFKSxsLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYSksbC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVuZCIsQikpLChyLmNhbmNlbFRva2VufHxyLnNpZ25hbCkmJihvPUQ9PntsJiYoSSghRHx8RC50eXBlP25ldyBxKG51bGwsQSxsKTpEKSxsLmFib3J0KCksbD1udWxsKX0sci5jYW5jZWxUb2tlbiYmci5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobyksci5zaWduYWwmJihyLnNpZ25hbC5hYm9ydGVkP28oKTpyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbykpKTtsZXQgRj11ZShyLnVybCk7aWYoRiYmaC5wcm90b2NvbHMuaW5kZXhPZihGKT09PS0xKXtJKG5ldyB1KCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0YrIjoiLHUuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59bC5zZW5kKGl8fG51bGwpfSl9O3ZhciBtcj0oQSxlKT0+e2xldHtsZW5ndGg6dH09QT1BP0EuZmlsdGVyKEJvb2xlYW4pOltdO2lmKGV8fHQpe2xldCBJPW5ldyBBYm9ydENvbnRyb2xsZXIscixpPWZ1bmN0aW9uKEMpe2lmKCFyKXtyPSEwLHMoKTtsZXQgbz1DIGluc3RhbmNlb2YgRXJyb3I/Qzp0aGlzLnJlYXNvbjtJLmFib3J0KG8gaW5zdGFuY2VvZiB1P286bmV3IHEobyBpbnN0YW5jZW9mIEVycm9yP28ubWVzc2FnZTpvKSl9fSxnPWUmJnNldFRpbWVvdXQoKCk9PntnPW51bGwsaShuZXcgdShgdGltZW91dCAke2V9IG9mIG1zIGV4Y2VlZGVkYCx1LkVUSU1FRE9VVCkpfSxlKSxzPSgpPT57QSYmKGcmJmNsZWFyVGltZW91dChnKSxnPW51bGwsQS5mb3JFYWNoKEM9PntDLnVuc3Vic2NyaWJlP0MudW5zdWJzY3JpYmUoaSk6Qy5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsaSl9KSxBPW51bGwpfTtBLmZvckVhY2goQz0+Qy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsaSkpO2xldHtzaWduYWw6RX09STtyZXR1cm4gRS51bnN1YnNjcmliZT0oKT0+bi5hc2FwKHMpLEV9fSx3dD1tcjt2YXIgU3I9ZnVuY3Rpb24qKEEsZSl7bGV0IHQ9QS5ieXRlTGVuZ3RoO2lmKCFlfHx0PGUpe3lpZWxkIEE7cmV0dXJufWxldCBJPTAscjtmb3IoO0k8dDspcj1JK2UseWllbGQgQS5zbGljZShJLHIpLEk9cn0sRnI9YXN5bmMgZnVuY3Rpb24qKEEsZSl7Zm9yIGF3YWl0KGxldCB0IG9mIFJyKEEpKXlpZWxkKlNyKHQsZSl9LFJyPWFzeW5jIGZ1bmN0aW9uKihBKXtpZihBW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSl7eWllbGQqQTtyZXR1cm59bGV0IGU9QS5nZXRSZWFkZXIoKTt0cnl7Zm9yKDs7KXtsZXR7ZG9uZTp0LHZhbHVlOkl9PWF3YWl0IGUucmVhZCgpO2lmKHQpYnJlYWs7eWllbGQgSX19ZmluYWxseXthd2FpdCBlLmNhbmNlbCgpfX0seWU9KEEsZSx0LEkpPT57bGV0IHI9RnIoQSxlKSxpPTAsZyxzPUU9PntnfHwoZz0hMCxJJiZJKEUpKX07cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7YXN5bmMgcHVsbChFKXt0cnl7bGV0e2RvbmU6Qyx2YWx1ZTpvfT1hd2FpdCByLm5leHQoKTtpZihDKXtzKCksRS5jbG9zZSgpO3JldHVybn1sZXQgYT1vLmJ5dGVMZW5ndGg7aWYodCl7bGV0IGM9aSs9YTt0KGMpfUUuZW5xdWV1ZShuZXcgVWludDhBcnJheShvKSl9Y2F0Y2goQyl7dGhyb3cgcyhDKSxDfX0sY2FuY2VsKEUpe3JldHVybiBzKEUpLHIucmV0dXJuKCl9fSx7aGlnaFdhdGVyTWFyazoyfSl9O3ZhciBtdD02NCoxMDI0LHtpc0Z1bmN0aW9uOlBBfT1uLGt0PSgoe2ZldGNoOkEsUmVxdWVzdDplLFJlc3BvbnNlOnR9KT0+KHtmZXRjaDpBLFJlcXVlc3Q6ZSxSZXNwb25zZTp0fSkpKG4uZ2xvYmFsKSx7UmVhZGFibGVTdHJlYW06U3QsVGV4dEVuY29kZXI6RnR9PW4uZ2xvYmFsLFJ0PShBLC4uLmUpPT57dHJ5e3JldHVybiEhQSguLi5lKX1jYXRjaHtyZXR1cm4hMX19LGtyPUE9PntsZXR7ZmV0Y2g6ZSxSZXF1ZXN0OnQsUmVzcG9uc2U6SX09T2JqZWN0LmFzc2lnbih7fSxrdCxBKSxyPVBBKGUpLGk9UEEodCksZz1QQShJKTtpZighcilyZXR1cm4hMTtsZXQgcz1yJiZQQShTdCksRT1yJiYodHlwZW9mIEZ0PT0iZnVuY3Rpb24iPyhRPT5mPT5RLmVuY29kZShmKSkobmV3IEZ0KTphc3luYyBRPT5uZXcgVWludDhBcnJheShhd2FpdCBuZXcgdChRKS5hcnJheUJ1ZmZlcigpKSksQz1pJiZzJiZSdCgoKT0+e2xldCBRPSExLGY9bmV3IHQoaC5vcmlnaW4se2JvZHk6bmV3IFN0LG1ldGhvZDoiUE9TVCIsZ2V0IGR1cGxleCgpe3JldHVybiBRPSEwLCJoYWxmIn19KS5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIik7cmV0dXJuIFEmJiFmfSksbz1nJiZzJiZSdCgoKT0+bi5pc1JlYWRhYmxlU3RyZWFtKG5ldyBJKCIiKS5ib2R5KSksYT17c3RyZWFtOm8mJihRPT5RLmJvZHkpfTtyJiZbInRleHQiLCJhcnJheUJ1ZmZlciIsImJsb2IiLCJmb3JtRGF0YSIsInN0cmVhbSJdLmZvckVhY2goUT0+eyFhW1FdJiYoYVtRXT0oZixsKT0+e2xldCBwPWYmJmZbUV07aWYocClyZXR1cm4gcC5jYWxsKGYpO3Rocm93IG5ldyB1KGBSZXNwb25zZSB0eXBlICcke1F9JyBpcyBub3Qgc3VwcG9ydGVkYCx1LkVSUl9OT1RfU1VQUE9SVCxsKX0pfSk7bGV0IGM9YXN5bmMgUT0+e2lmKFE9PW51bGwpcmV0dXJuIDA7aWYobi5pc0Jsb2IoUSkpcmV0dXJuIFEuc2l6ZTtpZihuLmlzU3BlY0NvbXBsaWFudEZvcm0oUSkpcmV0dXJuKGF3YWl0IG5ldyB0KGgub3JpZ2luLHttZXRob2Q6IlBPU1QiLGJvZHk6UX0pLmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7aWYobi5pc0FycmF5QnVmZmVyVmlldyhRKXx8bi5pc0FycmF5QnVmZmVyKFEpKXJldHVybiBRLmJ5dGVMZW5ndGg7aWYobi5pc1VSTFNlYXJjaFBhcmFtcyhRKSYmKFE9USsiIiksbi5pc1N0cmluZyhRKSlyZXR1cm4oYXdhaXQgRShRKSkuYnl0ZUxlbmd0aH0sQj1hc3luYyhRLGYpPT57bGV0IGw9bi50b0Zpbml0ZU51bWJlcihRLmdldENvbnRlbnRMZW5ndGgoKSk7cmV0dXJuIGw/P2MoZil9O3JldHVybiBhc3luYyBRPT57bGV0e3VybDpmLG1ldGhvZDpsLGRhdGE6cCxzaWduYWw6RixjYW5jZWxUb2tlbjpELHRpbWVvdXQ6UixvbkRvd25sb2FkUHJvZ3Jlc3M6TCxvblVwbG9hZFByb2dyZXNzOloscmVzcG9uc2VUeXBlOk4saGVhZGVyczokQSx3aXRoQ3JlZGVudGlhbHM6U0E9InNhbWUtb3JpZ2luIixmZXRjaE9wdGlvbnM6WWV9PXhBKFEpO049Tj8oTisiIikudG9Mb3dlckNhc2UoKToidGV4dCI7bGV0IEZBPXd0KFtGLEQmJkQudG9BYm9ydFNpZ25hbCgpXSxSKSxzQT1udWxsLFY9RkEmJkZBLnVuc3Vic2NyaWJlJiYoKCk9PntGQS51bnN1YnNjcmliZSgpfSksTWU7dHJ5e2lmKFomJkMmJmwhPT0iZ2V0IiYmbCE9PSJoZWFkIiYmKE1lPWF3YWl0IEIoJEEscCkpIT09MCl7bGV0IFc9bmV3IHQoZix7bWV0aG9kOiJQT1NUIixib2R5OnAsZHVwbGV4OiJoYWxmIn0pLCQ7aWYobi5pc0Zvcm1EYXRhKHApJiYoJD1XLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSkmJiRBLnNldENvbnRlbnRUeXBlKCQpLFcuYm9keSl7bGV0W0FlLFJBXT1kZShNZSxpQShwZShaKSkpO3A9eWUoVy5ib2R5LG10LEFlLFJBKX19bi5pc1N0cmluZyhTQSl8fChTQT1TQT8iaW5jbHVkZSI6Im9taXQiKTtsZXQgTT1pJiYiY3JlZGVudGlhbHMiaW4gdC5wcm90b3R5cGUsSGU9ey4uLlllLHNpZ25hbDpGQSxtZXRob2Q6bC50b1VwcGVyQ2FzZSgpLGhlYWRlcnM6JEEubm9ybWFsaXplKCkudG9KU09OKCksYm9keTpwLGR1cGxleDoiaGFsZiIsY3JlZGVudGlhbHM6TT9TQTp2b2lkIDB9O3NBPWkmJm5ldyB0KGYsSGUpO2xldCBQPWF3YWl0KGk/ZShzQSxZZSk6ZShmLEhlKSkscWU9byYmKE49PT0ic3RyZWFtInx8Tj09PSJyZXNwb25zZSIpO2lmKG8mJihMfHxxZSYmVikpe2xldCBXPXt9O1sic3RhdHVzIiwic3RhdHVzVGV4dCIsImhlYWRlcnMiXS5mb3JFYWNoKEtlPT57V1tLZV09UFtLZV19KTtsZXQgJD1uLnRvRmluaXRlTnVtYmVyKFAuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIikpLFtBZSxSQV09TCYmZGUoJCxpQShwZShMKSwhMCkpfHxbXTtQPW5ldyBJKHllKFAuYm9keSxtdCxBZSwoKT0+e1JBJiZSQSgpLFYmJlYoKX0pLFcpfU49Tnx8InRleHQiO2xldCBJST1hd2FpdCBhW24uZmluZEtleShhLE4pfHwidGV4dCJdKFAsUSk7cmV0dXJuIXFlJiZWJiZWKCksYXdhaXQgbmV3IFByb21pc2UoKFcsJCk9PntkQShXLCQse2RhdGE6SUksaGVhZGVyczptLmZyb20oUC5oZWFkZXJzKSxzdGF0dXM6UC5zdGF0dXMsc3RhdHVzVGV4dDpQLnN0YXR1c1RleHQsY29uZmlnOlEscmVxdWVzdDpzQX0pfSl9Y2F0Y2goTSl7dGhyb3cgViYmVigpLE0mJk0ubmFtZT09PSJUeXBlRXJyb3IiJiYvTG9hZCBmYWlsZWR8ZmV0Y2gvaS50ZXN0KE0ubWVzc2FnZSk/T2JqZWN0LmFzc2lnbihuZXcgdSgiTmV0d29yayBFcnJvciIsdS5FUlJfTkVUV09SSyxRLHNBKSx7Y2F1c2U6TS5jYXVzZXx8TX0pOnUuZnJvbShNLE0mJk0uY29kZSxRLHNBKX19fSxVcj1uZXcgTWFwLHdlPUE9PntsZXQgZT1uLm1lcmdlLmNhbGwoe3NraXBVbmRlZmluZWQ6ITB9LGt0LEE/QS5lbnY6bnVsbCkse2ZldGNoOnQsUmVxdWVzdDpJLFJlc3BvbnNlOnJ9PWUsaT1bSSxyLHRdLGc9aS5sZW5ndGgscz1nLEUsQyxvPVVyO2Zvcig7cy0tOylFPWlbc10sQz1vLmdldChFKSxDPT09dm9pZCAwJiZvLnNldChFLEM9cz9uZXcgTWFwOmtyKGUpKSxvPUM7cmV0dXJuIEN9LEZvPXdlKCk7dmFyIG1lPXtodHRwOkhBLHhocjp5dCxmZXRjaDp7Z2V0OndlfX07bi5mb3JFYWNoKG1lLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIFV0PUE9PmAtICR7QX1gLEdyPUE9Pm4uaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxXQT17Z2V0QWRhcHRlcjooQSxlKT0+e0E9bi5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6dH09QSxJLHIsaT17fTtmb3IobGV0IGc9MDtnPHQ7ZysrKXtJPUFbZ107bGV0IHM7aWYocj1JLCFHcihJKSYmKHI9bWVbKHM9U3RyaW5nKEkpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgdShgVW5rbm93biBhZGFwdGVyICcke3N9J2ApO2lmKHImJihuLmlzRnVuY3Rpb24ocil8fChyPXIuZ2V0KGUpKSkpYnJlYWs7aVtzfHwiIyIrZ109cn1pZighcil7bGV0IGc9T2JqZWN0LmVudHJpZXMoaSkubWFwKChbRSxDXSk9PmBhZGFwdGVyICR7RX0gYCsoQz09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLHM9dD9nLmxlbmd0aD4xP2BzaW5jZSA6CmArZy5tYXAoVXQpLmpvaW4oYApgKToiICIrVXQoZ1swXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgdSgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK3MsIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiByfSxhZGFwdGVyczptZX07ZnVuY3Rpb24gU2UoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IHEobnVsbCxBKX1mdW5jdGlvbiBqQShBKXtyZXR1cm4gU2UoQSksQS5oZWFkZXJzPW0uZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1mQS5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksV0EuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fHJBLmFkYXB0ZXIsQSkoQSkudGhlbihmdW5jdGlvbihJKXtyZXR1cm4gU2UoQSksSS5kYXRhPWZBLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLEkpLEkuaGVhZGVycz1tLmZyb20oSS5oZWFkZXJzKSxJfSxmdW5jdGlvbihJKXtyZXR1cm4gdUEoSSl8fChTZShBKSxJJiZJLnJlc3BvbnNlJiYoSS5yZXNwb25zZS5kYXRhPWZBLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLEkucmVzcG9uc2UpLEkucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oSS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KEkpfSl9dmFyIHZBPSIxLjEyLjAiO3ZhciBaQT17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKEEsZSk9PntaQVtBXT1mdW5jdGlvbihJKXtyZXR1cm4gdHlwZW9mIEk9PT1BfHwiYSIrKGU8MT8ibiAiOiIgIikrQX19KTt2YXIgTnQ9e307WkEudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxJKXtmdW5jdGlvbiByKGksZyl7cmV0dXJuIltBeGlvcyB2Iit2QSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2krIiciK2crKEk/Ii4gIitJOiIiKX1yZXR1cm4oaSxnLHMpPT57aWYoZT09PSExKXRocm93IG5ldyB1KHIoZywiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSksdS5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHQmJiFOdFtnXSYmKE50W2ddPSEwLGNvbnNvbGUud2FybihyKGcsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksZT9lKGksZyxzKTohMH19O1pBLnNwZWxsaW5nPWZ1bmN0aW9uKGUpe3JldHVybih0LEkpPT4oY29uc29sZS53YXJuKGAke0l9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7ZX1gKSwhMCl9O2Z1bmN0aW9uIExyKEEsZSx0KXtpZih0eXBlb2YgQSE9Im9iamVjdCIpdGhyb3cgbmV3IHUoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLHUuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2xldCBJPU9iamVjdC5rZXlzKEEpLHI9SS5sZW5ndGg7Zm9yKDtyLS0gPjA7KXtsZXQgaT1JW3JdLGc9ZVtpXTtpZihnKXtsZXQgcz1BW2ldLEU9cz09PXZvaWQgMHx8ZyhzLGksQSk7aWYoRSE9PSEwKXRocm93IG5ldyB1KCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK0UsdS5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYodCE9PSEwKXRocm93IG5ldyB1KCJVbmtub3duIG9wdGlvbiAiK2ksdS5FUlJfQkFEX09QVElPTil9fXZhciBoQT17YXNzZXJ0T3B0aW9uczpMcix2YWxpZGF0b3JzOlpBfTt2YXIgSz1oQS52YWxpZGF0b3JzLG9BPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZXx8e30sdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IENlLHJlc3BvbnNlOm5ldyBDZX19YXN5bmMgcmVxdWVzdChlLHQpe3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5fcmVxdWVzdChlLHQpfWNhdGNoKEkpe2lmKEkgaW5zdGFuY2VvZiBFcnJvcil7bGV0IHI9e307RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Uocik6cj1uZXcgRXJyb3I7bGV0IGk9ci5zdGFjaz9yLnN0YWNrLnJlcGxhY2UoL14uK1xuLywiIik6IiI7dHJ5e0kuc3RhY2s/aSYmIVN0cmluZyhJLnN0YWNrKS5lbmRzV2l0aChpLnJlcGxhY2UoL14uK1xuLitcbi8sIiIpKSYmKEkuc3RhY2srPWAKYCtpKTpJLnN0YWNrPWl9Y2F0Y2h7fX10aHJvdyBJfX1fcmVxdWVzdChlLHQpe3R5cGVvZiBlPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1lKTp0PWV8fHt9LHQ9Sih0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6SSxwYXJhbXNTZXJpYWxpemVyOnIsaGVhZGVyczppfT10O0khPT12b2lkIDAmJmhBLmFzc2VydE9wdGlvbnMoSSx7c2lsZW50SlNPTlBhcnNpbmc6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpLLnRyYW5zaXRpb25hbChLLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKX0sITEpLHIhPW51bGwmJihuLmlzRnVuY3Rpb24ocik/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6cn06aEEuYXNzZXJ0T3B0aW9ucyhyLHtlbmNvZGU6Sy5mdW5jdGlvbixzZXJpYWxpemU6Sy5mdW5jdGlvbn0sITApKSx0LmFsbG93QWJzb2x1dGVVcmxzIT09dm9pZCAwfHwodGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscyE9PXZvaWQgMD90LmFsbG93QWJzb2x1dGVVcmxzPXRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHM6dC5hbGxvd0Fic29sdXRlVXJscz0hMCksaEEuYXNzZXJ0T3B0aW9ucyh0LHtiYXNlVXJsOksuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOksuc3BlbGxpbmcoIndpdGhYU1JGVG9rZW4iKX0sITApLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBnPWkmJm4ubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJm4uZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxRPT57ZGVsZXRlIGlbUV19KSx0LmhlYWRlcnM9bS5jb25jYXQoZyxpKTtsZXQgcz1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihmKXt0eXBlb2YgZi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZmLnJ1bldoZW4odCk9PT0hMXx8KEU9RSYmZi5zeW5jaHJvbm91cyxzLnVuc2hpZnQoZi5mdWxmaWxsZWQsZi5yZWplY3RlZCkpfSk7bGV0IEM9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihmKXtDLnB1c2goZi5mdWxmaWxsZWQsZi5yZWplY3RlZCl9KTtsZXQgbyxhPTAsYztpZighRSl7bGV0IFE9W2pBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoUS51bnNoaWZ0KC4uLnMpLFEucHVzaCguLi5DKSxjPVEubGVuZ3RoLG89UHJvbWlzZS5yZXNvbHZlKHQpO2E8Yzspbz1vLnRoZW4oUVthKytdLFFbYSsrXSk7cmV0dXJuIG99Yz1zLmxlbmd0aDtsZXQgQj10O2ZvcihhPTA7YTxjOyl7bGV0IFE9c1thKytdLGY9c1thKytdO3RyeXtCPVEoQil9Y2F0Y2gobCl7Zi5jYWxsKHRoaXMsbCk7YnJlYWt9fXRyeXtvPWpBLmNhbGwodGhpcyxCKX1jYXRjaChRKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoUSl9Zm9yKGE9MCxjPUMubGVuZ3RoO2E8Yzspbz1vLnRoZW4oQ1thKytdLENbYSsrXSk7cmV0dXJuIG99Z2V0VXJpKGUpe2U9Sih0aGlzLmRlZmF1bHRzLGUpO2xldCB0PXBBKGUuYmFzZVVSTCxlLnVybCxlLmFsbG93QWJzb2x1dGVVcmxzKTtyZXR1cm4gbEEodCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpfX07bi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihlKXtvQS5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxJKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEooSXx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KEl8fHt9KS5kYXRhfSkpfX0pO24uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoSSl7cmV0dXJuIGZ1bmN0aW9uKGksZyxzKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEooc3x8e30se21ldGhvZDplLGhlYWRlcnM6ST97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6aSxkYXRhOmd9KSl9fW9BLnByb3RvdHlwZVtlXT10KCksb0EucHJvdG90eXBlW2UrIkZvcm0iXT10KCEwKX0pO3ZhciBEQT1vQTt2YXIgRmU9Y2xhc3MgQXtjb25zdHJ1Y3RvcihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGkpe3Q9aX0pO2xldCBJPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4ocj0+e2lmKCFJLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBpPUkuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtpLS0gPjA7KUkuX2xpc3RlbmVyc1tpXShyKTtJLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPXI9PntsZXQgaSxnPW5ldyBQcm9taXNlKHM9PntJLnN1YnNjcmliZShzKSxpPXN9KS50aGVuKHIpO3JldHVybiBnLmNhbmNlbD1mdW5jdGlvbigpe0kudW5zdWJzY3JpYmUoaSl9LGd9LGUoZnVuY3Rpb24oaSxnLHMpe0kucmVhc29ufHwoSS5yZWFzb249bmV3IHEoaSxnLHMpLHQoSS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoZSl7aWYodGhpcy5yZWFzb24pe2UodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX11bnN1YnNjcmliZShlKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX10b0Fib3J0U2lnbmFsKCl7bGV0IGU9bmV3IEFib3J0Q29udHJvbGxlcix0PUk9PntlLmFib3J0KEkpfTtyZXR1cm4gdGhpcy5zdWJzY3JpYmUodCksZS5zaWduYWwudW5zdWJzY3JpYmU9KCk9PnRoaXMudW5zdWJzY3JpYmUodCksZS5zaWduYWx9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihyKXtlPXJ9KSxjYW5jZWw6ZX19fSxHdD1GZTtmdW5jdGlvbiBSZShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24ga2UoQSl7cmV0dXJuIG4uaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIFVlPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhVZSkuZm9yRWFjaCgoW0EsZV0pPT57VWVbZV09QX0pO3ZhciBMdD1VZTtmdW5jdGlvbiBidChBKXtsZXQgZT1uZXcgREEoQSksdD1DQShEQS5wcm90b3R5cGUucmVxdWVzdCxlKTtyZXR1cm4gbi5leHRlbmQodCxEQS5wcm90b3R5cGUsZSx7YWxsT3duS2V5czohMH0pLG4uZXh0ZW5kKHQsZSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGJ0KEooQSxyKSl9LHR9dmFyIHk9YnQockEpO3kuQXhpb3M9REE7eS5DYW5jZWxlZEVycm9yPXE7eS5DYW5jZWxUb2tlbj1HdDt5LmlzQ2FuY2VsPXVBO3kuVkVSU0lPTj12QTt5LnRvRm9ybURhdGE9ajt5LkF4aW9zRXJyb3I9dTt5LkNhbmNlbD15LkNhbmNlbGVkRXJyb3I7eS5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTt5LnNwcmVhZD1SZTt5LmlzQXhpb3NFcnJvcj1rZTt5Lm1lcmdlQ29uZmlnPUo7eS5BeGlvc0hlYWRlcnM9bTt5LmZvcm1Ub0pTT049QT0+T0Eobi5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTt5LmdldEFkYXB0ZXI9V0EuZ2V0QWRhcHRlcjt5Lkh0dHBTdGF0dXNDb2RlPUx0O3kuZGVmYXVsdD15O3ZhciBuQT15O3ZhcntBeGlvczptbixBeGlvc0Vycm9yOlNuLENhbmNlbGVkRXJyb3I6Rm4saXNDYW5jZWw6Um4sQ2FuY2VsVG9rZW46a24sVkVSU0lPTjpVbixhbGw6Tm4sQ2FuY2VsOkduLGlzQXhpb3NFcnJvcjpMbixzcHJlYWQ6Ym4sdG9Gb3JtRGF0YTpKbixBeGlvc0hlYWRlcnM6WW4sSHR0cFN0YXR1c0NvZGU6TW4sZm9ybVRvSlNPTjpIbixnZXRBZGFwdGVyOnFuLG1lcmdlQ29uZmlnOktufT1uQTthc3luYyBmdW5jdGlvbiBicihBLGUpe2xldCB0PUEsST1udWxsO2lmKHQ9PW51bGwpST1uZXcgV29ya2VyKG5ldyBVUkwoIi4vd2ViLXdvcmtlcnMvaXRrLXdhc20tcGlwZWxpbmUud29ya2VyLmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUifSk7ZWxzZSBpZih0LnN0YXJ0c1dpdGgoImh0dHAiKSl7bGV0IHI9YXdhaXQgbkEuZ2V0KHQse3Jlc3BvbnNlVHlwZToiYmxvYiIscGFyYW1zOmV9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwoci5kYXRhKTtJPW5ldyBXb3JrZXIoaSx7dHlwZToibW9kdWxlIn0pfWVsc2UgST1uZXcgV29ya2VyKHQse3R5cGU6Im1vZHVsZSJ9KTtyZXR1cm4gSX12YXIgeUE9YnI7ZnVuY3Rpb24gSnQoQSl7bGV0IGU9Z2UoQSksdD1BO3JldHVybiB0LnRlcm1pbmF0ZWQ9ITEsdC53b3JrZXJQcm94eT1lLHQub3JpZ2luYWxUZXJtaW5hdGU9dC50ZXJtaW5hdGUsdC50ZXJtaW5hdGU9KCk9Pnt0LnRlcm1pbmF0ZWQ9ITAsdC53b3JrZXJQcm94eVtyZV0oKSx0Lm9yaWdpbmFsVGVybWluYXRlKCl9LHt3b3JrZXJQcm94eTplLHdvcmtlcjp0fX1hc3luYyBmdW5jdGlvbiBKcihBLGUsdCl7bGV0IEk7aWYoQSE9bnVsbCl7bGV0IGk9QTtyZXR1cm4gaS53b3JrZXJQcm94eSE9PXZvaWQgMD8oST1pLndvcmtlclByb3h5LHt3b3JrZXJQcm94eTpJLHdvcmtlcjppfSk6SnQoQSl9bGV0IHI9YXdhaXQgeUEoZSx0KTtyZXR1cm4gSnQocil9dmFyIFl0PUpyO3ZhciB3QSx4LEdlLE5lPXtlbnY6e2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGg6ZnVuY3Rpb24oQSl7R2U9bmV3IFVpbnQ4QXJyYXkoeC5leHBvcnRzLm1lbW9yeS5idWZmZXIpfX19LFZBPWNsYXNze2luaXQoKXtyZXR1cm4gd0F8fCh0eXBlb2YgZmV0Y2g8InUiP3dBPWZldGNoKCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LCIrTXQpLnRoZW4oZT0+ZS5hcnJheUJ1ZmZlcigpKS50aGVuKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGUsTmUpKS50aGVuKHRoaXMuX2luaXQpOndBPVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEJ1ZmZlci5mcm9tKE10LCJiYXNlNjQiKSxOZSkudGhlbih0aGlzLl9pbml0KSx3QSl9X2luaXQoZSl7eD1lLmluc3RhbmNlLE5lLmVudi5lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKDApfWRlY29kZShlLHQ9MCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJaU1RERGVjb2RlcjogQXdhaXQgLmluaXQoKSBiZWZvcmUgZGVjb2RpbmcuIik7bGV0IEk9ZS5ieXRlTGVuZ3RoLHI9eC5leHBvcnRzLm1hbGxvYyhJKTtHZS5zZXQoZSxyKSx0PXR8fE51bWJlcih4LmV4cG9ydHMuWlNURF9maW5kRGVjb21wcmVzc2VkU2l6ZShyLEkpKTtsZXQgaT14LmV4cG9ydHMubWFsbG9jKHQpLGc9eC5leHBvcnRzLlpTVERfZGVjb21wcmVzcyhpLHQscixJKSxzPUdlLnNsaWNlKGksaStnKTtyZXR1cm4geC5leHBvcnRzLmZyZWUocikseC5leHBvcnRzLmZyZWUoaSksc319LE10PSJBR0Z6YlFFQUFBQUJiZzVnQTM5L2Z3Ri9ZQUYvQVg5Z0FuOS9BR0FCZndCZ0JYOS9mMzkvQVg5Z0EzOS9md0JnQkg5L2YzOEJmMkFBQVg5Z0FuOS9BWDlnQjM5L2YzOS9mMzhCZjJBQ2YzOEJmbUFJZjM5L2YzOS9mMzhCZjJBRmYzOS9mMzhBWUE1L2YzOS9mMzkvZjM5L2YzOS9md0YvQWljQkEyVnVkaDlsYlhOamNtbHdkR1Z1WDI1dmRHbG1lVjl0WlcxdmNubGZaM0p2ZDNSb0FBTURJeUlIQUFBQkFRTUhBd0VBQ1FRQUJRRUlDQUVGQmdRRUJBTUdBQUFLQUFVTERBMEdCQVVCY0FFQkFRVUhBUUdBQW9DQUFnWUlBWDhCUVlDakJBc0hyZ0VMQm0xbGJXOXllUUlBQm0xaGJHeHZZd0FGQkdaeVpXVUFCZ3hhVTFSRVgybHpSWEp5YjNJQUVobGFVMVJFWDJacGJtUkVaV052YlhCeVpYTnpaV1JUYVhwbEFCd1BXbE5VUkY5a1pXTnZiWEJ5WlhOekFDSVpYMTlwYm1ScGNtVmpkRjltZFc1amRHbHZibDkwWVdKc1pRRUFFRjlmWlhKeWJtOWZiRzlqWVhScGIyNEFBUWx6ZEdGamExTmhkbVVBQnd4emRHRmphMUpsYzNSdmNtVUFDQXB6ZEdGamEwRnNiRzlqQUFrS2kvSUJJZ1VBUVlRZkN6TUJBWDhnQWdSQUlBQWhBd05BSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJJQUpCQVdzaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXRzQVFKL1FZQWZLQUlBSWdFZ0FFRUhha0Y0Y1NJQ2FpRUFBa0FnQWtFQUlBQWdBVTBiRFFBZ0FEOEFRUkIwU3dSQUlBQS9BRUVRZEd0Qi8vOERha0VRZGtBQVFYOUdCSDlCQUFWQkFCQUFRUUVMUlEwQkMwR0FIeUFBTmdJQUlBRVBDMEdFSDBFd05nSUFRWDhMdVNjQkMzOGpBRUVRYXlJS0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCOUFGTkJFQkJpQjhvQWdBaUJrRVFJQUJCQzJwQmVIRWdBRUVMU1JzaUJVRURkaUlBZGlJQlFRTnhCRUFDUUNBQlFYOXpRUUZ4SUFCcUlnSkJBM1FpQVVHd0gyb2lBQ0FCUWJnZmFpZ0NBQ0lCS0FJSUlnUkdCRUJCaUI4Z0JrRitJQUozY1RZQ0FBd0JDeUFFSUFBMkFnd2dBQ0FFTmdJSUN5QUJRUWhxSVFBZ0FTQUNRUU4wSWdKQkEzSTJBZ1FnQVNBQ2FpSUJJQUVvQWdSQkFYSTJBZ1FNRHdzZ0JVR1FIeWdDQUNJSFRRMEJJQUVFUUFKQVFRSWdBSFFpQWtFQUlBSnJjaUFCSUFCMGNXZ2lBVUVEZENJQVFiQWZhaUlDSUFCQnVCOXFLQUlBSWdBb0FnZ2lCRVlFUUVHSUh5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRRkJuQjhvQWdBaEFnSi9JQVpCQVNBSFFRTjJkQ0lEY1VVRVFFR0lIeUFESUFaeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQXlBQklBSTJBZ2dnQXlBQ05nSU1JQUlnQVRZQ0RDQUNJQU0yQWdnTElBQkJDR29oQUVHY0h5QUlOZ0lBUVpBZklBUTJBZ0FNRHd0QmpCOG9BZ0FpQzBVTkFTQUxhRUVDZEVHNElXb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFaZ2ZLQUlBR2lBQ0tBSUlJZ0FnQkRZQ0RDQUVJQUEyQWdnTURnc2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRVFSUnFJZ0VvQWdBaUFBMEFJQVJCRUdvaEFTQUVLQUlRSWdBTkFBc2dDRUVBTmdJQURBMExRWDhoQlNBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFRlFZd2ZLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFRzRJV29vQWdBaUFVVUVRRUVBSVFBTUFRdEJBQ0VBSUFWQkdTQUhRUUYyYTBFQUlBZEJIMGNiZENFQ0EwQUNRQ0FCS0FJRVFYaHhJQVZySWdZZ0EwOE5BQ0FCSVFRZ0JpSUREUUJCQUNFRElBRWhBQXdEQ3lBQUlBRW9BaFFpQmlBR0lBRWdBa0VkZGtFRWNXb29BaEFpQVVZYklBQWdCaHNoQUNBQ1FRRjBJUUlnQVEwQUN3c2dBQ0FFY2tVRVFFRUFJUVJCQWlBSGRDSUFRUUFnQUd0eUlBaHhJZ0JGRFFNZ0FHaEJBblJCdUNGcUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJQ0lBTkpJUUVnQWlBRElBRWJJUU1nQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBRFFaQWZLQUlBSUFWclR3MEFJQVFvQWhnaEJ5QUVJQVFvQWd3aUFrY0VRRUdZSHlnQ0FCb2dCQ2dDQ0NJQUlBSTJBZ3dnQWlBQU5nSUlEQXdMSUFSQkZHb2lBU2dDQUNJQVJRUkFJQVFvQWhBaUFFVU5BeUFFUVJCcUlRRUxBMEFnQVNFR0lBQWlBa0VVYWlJQktBSUFJZ0FOQUNBQ1FSQnFJUUVnQWlnQ0VDSUFEUUFMSUFaQkFEWUNBQXdMQ3lBRlFaQWZLQUlBSWdSTkJFQkJuQjhvQWdBaEFBSkFJQVFnQldzaUFVRVFUd1JBSUFBZ0JXb2lBaUFCUVFGeU5nSUVJQUFnQkdvZ0FUWUNBQ0FBSUFWQkEzSTJBZ1FNQVFzZ0FDQUVRUU55TmdJRUlBQWdCR29pQVNBQktBSUVRUUZ5TmdJRVFRQWhBa0VBSVFFTFFaQWZJQUUyQWdCQm5COGdBallDQUNBQVFRaHFJUUFNRFFzZ0JVR1VIeWdDQUNJQ1NRUkFRWlFmSUFJZ0JXc2lBVFlDQUVHZ0gwR2dIeWdDQUNJQUlBVnFJZ0kyQWdBZ0FpQUJRUUZ5TmdJRUlBQWdCVUVEY2pZQ0JDQUFRUWhxSVFBTURRdEJBQ0VBSUFWQkwyb2lBd0ovUWVBaUtBSUFCRUJCNkNJb0FnQU1BUXRCN0NKQ2Z6Y0NBRUhrSWtLQW9JQ0FnSUFFTndJQVFlQWlJQXBCREdwQmNIRkIyS3JWcWdWek5nSUFRZlFpUVFBMkFnQkJ4Q0pCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdoeElnRWdCVTBOREVIQUlpZ0NBQ0lFQkVCQnVDSW9BZ0FpQnlBQmFpSUpJQWROSUFRZ0NVbHlEUTBMQWtCQnhDSXRBQUJCQkhGRkJFQUNRQUpBQWtBQ1FFR2dIeWdDQUNJRUJFQkJ5Q0loQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFQVFpQWtGL1JnMERJQUVoQmtIa0lpZ0NBQ0lBUVFGcklnUWdBbkVFUUNBQklBSnJJQUlnQkdwQkFDQUFhM0ZxSVFZTElBVWdCazhOQTBIQUlpZ0NBQ0lBQkVCQnVDSW9BZ0FpQkNBR2FpSUlJQVJOSUFBZ0NFbHlEUVFMSUFZUUJDSUFJQUpIRFFFTUJRc2dCaUFDYXlBSWNTSUdFQVFpQWlBQUtBSUFJQUFvQWdScVJnMEJJQUloQUFzZ0FFRi9SZzBCSUFWQk1Hb2dCazBFUUNBQUlRSU1CQXRCNkNJb0FnQWlBaUFESUFacmFrRUFJQUpyY1NJQ0VBUkJmMFlOQVNBQ0lBWnFJUVlnQUNFQ0RBTUxJQUpCZjBjTkFndEJ4Q0pCeENJb0FnQkJCSEkyQWdBTElBRVFCQ0lDUVg5R1FRQVFCQ0lBUVg5R2NpQUFJQUpOY2cwRklBQWdBbXNpQmlBRlFTaHFUUTBGQzBHNElrRzRJaWdDQUNBR2FpSUFOZ0lBUWJ3aUtBSUFJQUJKQkVCQnZDSWdBRFlDQUFzQ1FFR2dIeWdDQUNJREJFQkJ5Q0loQUFOQUlBSWdBQ2dDQUNJQklBQW9BZ1FpQkdwR0RRSWdBQ2dDQ0NJQURRQUxEQVFMUVpnZktBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHWUh5QUNOZ0lBQzBFQUlRQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFhZ2ZRWDgyQWdCQnJCOUI0Q0lvQWdBMkFnQkIxQ0pCQURZQ0FBTkFJQUJCQTNRaUFVRzRIMm9nQVVHd0gyb2lCRFlDQUNBQlFid2ZhaUFFTmdJQUlBQkJBV29pQUVFZ1J3MEFDMEdVSHlBR1FTaHJJZ0JCZUNBQ2EwRUhjU0lCYXlJRU5nSUFRYUFmSUFFZ0Ftb2lBVFlDQUNBQklBUkJBWEkyQWdRZ0FDQUNha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQVFMSUFJZ0EwMGdBU0FEUzNJTkFpQUFLQUlNUVFoeERRSWdBQ0FFSUFacU5nSUVRYUFmSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUVpRZlFaUWZLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFNTFFRQWhCQXdLQzBFQUlRSU1DQXRCbUI4b0FnQWdBa3NFUUVHWUh5QUNOZ0lBQ3lBQ0lBWnFJUUZCeUNJaEFBSkFBa0FDUUFOQUlBRWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QnlDSWhBQU5BSUFNZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUJDQURTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUpCZUNBQ2EwRUhjV29pQnlBRlFRTnlOZ0lFSUFGQmVDQUJhMEVIY1dvaUJpQUZJQWRxSWdWcklRQWdBeUFHUmdSQVFhQWZJQVUyQWdCQmxCOUJsQjhvQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJuQjhvQWdBZ0JrWUVRRUdjSHlBRk5nSUFRWkFmUVpBZktBSUFJQUJxSWdBMkFnQWdCU0FBUVFGeU5nSUVJQUFnQldvZ0FEWUNBQXdJQ3lBR0tBSUVJZ05CQTNGQkFVY05CaUFEUVhoeElRa2dBMEgvQVUwRVFDQUdLQUlNSWdFZ0JpZ0NDQ0lDUmdSQVFZZ2ZRWWdmS0FJQVFYNGdBMEVEZG5keE5nSUFEQWNMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01CZ3NnQmlnQ0dDRUlJQVlnQmlnQ0RDSUNSd1JBSUFZb0FnZ2lBU0FDTmdJTUlBSWdBVFlDQ0F3RkN5QUdRUlJxSWdFb0FnQWlBMFVFUUNBR0tBSVFJZ05GRFFRZ0JrRVFhaUVCQ3dOQUlBRWhCQ0FESWdKQkZHb2lBU2dDQUNJRERRQWdBa0VRYWlFQklBSW9BaEFpQXcwQUN5QUVRUUEyQWdBTUJBdEJsQjhnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFR2dIeUFCSUFKcUlnRTJBZ0FnQVNBSVFRRnlOZ0lFSUFBZ0FtcEJLRFlDQkVHa0gwSHdJaWdDQURZQ0FDQURJQVJCSnlBRWEwRUhjV3BCTDJzaUFDQUFJQU5CRUdwSkd5SUJRUnMyQWdRZ0FVSFFJaWtDQURjQ0VDQUJRY2dpS1FJQU53SUlRZEFpSUFGQkNHbzJBZ0JCekNJZ0JqWUNBRUhJSWlBQ05nSUFRZFFpUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29nQUVFRWFpRUFJQVJKRFFBTElBRWdBMFlOQUNBQklBRW9BZ1JCZm5FMkFnUWdBeUFCSUFOcklnSkJBWEkyQWdRZ0FTQUNOZ0lBSUFKQi93Rk5CRUFnQWtGNGNVR3dIMm9oQUFKL1FZZ2ZLQUlBSWdGQkFTQUNRUU4yZENJQ2NVVUVRRUdJSHlBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFTQUFJQU0yQWdnZ0FTQUROZ0lNSUFNZ0FEWUNEQ0FESUFFMkFnZ01BUXRCSHlFQUlBSkIvLy8vQjAwRVFDQUNRU1lnQWtFSWRtY2lBR3QyUVFGeElBQkJBWFJyUVQ1cUlRQUxJQU1nQURZQ0hDQURRZ0EzQWhBZ0FFRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlCRUVCSUFCMElnWnhSUVJBUVl3ZklBUWdCbkkyQWdBZ0FTQUROZ0lBREFFTElBSkJHU0FBUVFGMmEwRUFJQUJCSDBjYmRDRUFJQUVvQWdBaEJBTkFJQVFpQVNnQ0JFRjRjU0FDUmcwQ0lBQkJIWFloQkNBQVFRRjBJUUFnQVNBRVFRUnhhaUlHS0FJUUlnUU5BQXNnQmlBRE5nSVFDeUFESUFFMkFoZ2dBeUFETmdJTUlBTWdBellDQ0F3QkN5QUJLQUlJSWdBZ0F6WUNEQ0FCSUFNMkFnZ2dBMEVBTmdJWUlBTWdBVFlDRENBRElBQTJBZ2dMUVpRZktBSUFJZ0FnQlUwTkFFR1VIeUFBSUFWcklnRTJBZ0JCb0I5Qm9COG9BZ0FpQUNBRmFpSUNOZ0lBSUFJZ0FVRUJjallDQkNBQUlBVkJBM0kyQWdRZ0FFRUlhaUVBREFnTFFZUWZRVEEyQWdCQkFDRUFEQWNMUVFBaEFnc2dDRVVOQUFKQUlBWW9BaHdpQVVFQ2RFRzRJV29pQkNnQ0FDQUdSZ1JBSUFRZ0FqWUNBQ0FDRFFGQmpCOUJqQjhvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUd3SDJvaEFRSi9RWWdmS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHSUh5QUFJQUp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBQ0FCSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBVFlDRENBRklBQTJBZ2dNQVF0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFVZ0F6WUNIQ0FGUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQWtFQklBTjBJZ1J4UlFSQVFZd2ZJQUlnQkhJMkFnQWdBU0FGTmdJQURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBZ05BSUFJaUFTZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0FTQUNRUVJ4YWlJRUtBSVFJZ0lOQUFzZ0JDQUZOZ0lRQ3lBRklBRTJBaGdnQlNBRk5nSU1JQVVnQlRZQ0NBd0JDeUFCS0FJSUlnQWdCVFlDRENBQklBVTJBZ2dnQlVFQU5nSVlJQVVnQVRZQ0RDQUZJQUEyQWdnTElBZEJDR29oQUF3Q0N3SkFJQWRGRFFBQ1FDQUVLQUljSWdCQkFuUkJ1Q0ZxSWdFb0FnQWdCRVlFUUNBQklBSTJBZ0FnQWcwQlFZd2ZJQWhCZmlBQWQzRWlDRFlDQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQVJHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQWMyQWhnZ0JDZ0NFQ0lBQkVBZ0FpQUFOZ0lRSUFBZ0FqWUNHQXNnQkNnQ0ZDSUFSUTBBSUFJZ0FEWUNGQ0FBSUFJMkFoZ0xBa0FnQTBFUFRRUkFJQVFnQXlBRmFpSUFRUU55TmdJRUlBQWdCR29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQVFnQlVFRGNqWUNCQ0FFSUFWcUlnSWdBMEVCY2pZQ0JDQUNJQU5xSUFNMkFnQWdBMEgvQVUwRVFDQURRWGh4UWJBZmFpRUFBbjlCaUI4b0FnQWlBVUVCSUFOQkEzWjBJZ054UlFSQVFZZ2ZJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFiZ2hhaUVCQWtBQ1FDQUlRUUVnQUhRaUJuRkZCRUJCakI4Z0JpQUljallDQUNBQklBSTJBZ0FNQVFzZ0EwRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRkEwQWdCU0lCS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVHSUFCQkFYUWhBQ0FCSUFaQkJIRnFJZ1lvQWhBaUJRMEFDeUFHSUFJMkFoQUxJQUlnQVRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFFTElBRW9BZ2dpQUNBQ05nSU1JQUVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUJOZ0lNSUFJZ0FEWUNDQXNnQkVFSWFpRUFEQUVMQWtBZ0NVVU5BQUpBSUFJb0Fod2lBRUVDZEVHNElXb2lBU2dDQUNBQ1JnUkFJQUVnQkRZQ0FDQUVEUUZCakI4Z0MwRitJQUIzY1RZQ0FBd0NDeUFKUVJCQkZDQUpLQUlRSUFKR0cyb2dCRFlDQUNBRVJRMEJDeUFFSUFrMkFoZ2dBaWdDRUNJQUJFQWdCQ0FBTmdJUUlBQWdCRFlDR0FzZ0FpZ0NGQ0lBUlEwQUlBUWdBRFlDRkNBQUlBUTJBaGdMQWtBZ0EwRVBUUVJBSUFJZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQW1vaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFJZ0JVRURjallDQkNBQ0lBVnFJZ1FnQTBFQmNqWUNCQ0FESUFScUlBTTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRQkJuQjhvQWdBaEFRSi9RUUVnQjBFRGRuUWlCU0FHY1VVRVFFR0lIeUFGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFad2ZJQVEyQWdCQmtCOGdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2U0N3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJtQjhvQWdCSkRRRWdBQ0FCYWlFQUFrQUNRRUdjSHlnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQUlvQWd3aUFTQUNLQUlJSWdOR0JFQkJpQjlCaUI4b0FnQkJmaUFFZDNFMkFnQU1CUXNnQXlBQk5nSU1JQUVnQXpZQ0NBd0VDeUFDS0FJWUlRWWdBaUFDS0FJTUlnRkhCRUFnQWlnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBSkJGR29pQkNnQ0FDSURSUVJBSUFJb0FoQWlBMFVOQWlBQ1FSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZLQUlFSWdGQkEzRkJBMGNOQWtHUUh5QUFOZ0lBSUFVZ0FVRitjVFlDQkNBQ0lBQkJBWEkyQWdRZ0JTQUFOZ0lBRHd0QkFDRUJDeUFHUlEwQUFrQWdBaWdDSENJRFFRSjBRYmdoYWlJRUtBSUFJQUpHQkVBZ0JDQUJOZ0lBSUFFTkFVR01IMEdNSHlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQUlBRWdBellDRkNBRElBRTJBaGdMSUFJZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FBSkFBa0FDUUNBQlFRSnhSUVJBUWFBZktBSUFJQVZHQkVCQm9COGdBallDQUVHVUgwR1VIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQ1Fad2ZLQUlBUncwR1FaQWZRUUEyQWdCQm5COUJBRFlDQUE4TFFad2ZLQUlBSUFWR0JFQkJuQjhnQWpZQ0FFR1FIMEdRSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFnQVVIL0FVMEVRQ0FCUVFOMklRUWdCU2dDRENJQklBVW9BZ2dpQTBZRVFFR0lIMEdJSHlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFFMkFnd2dBU0FETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFVY0VRRUdZSHlnQ0FCb2dCU2dDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFWQkZHb2lCQ2dDQUNJRFJRUkFJQVVvQWhBaUEwVU5BaUFGUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBd0RDMEVBSVFFTElBWkZEUUFDUUNBRktBSWNJZ05CQW5SQnVDRnFJZ1FvQWdBZ0JVWUVRQ0FFSUFFMkFnQWdBUTBCUVl3ZlFZd2ZLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUVp3ZktBSUFSdzBBUVpBZklBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJzQjlxSVFFQ2YwR0lIeWdDQUNJRFFRRWdBRUVEZG5RaUFIRkZCRUJCaUI4Z0FDQURjallDQUNBQkRBRUxJQUVvQWdnTElRQWdBU0FDTmdJSUlBQWdBallDRENBQ0lBRTJBZ3dnQWlBQU5nSUlEd3RCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQUlnQXpZQ0hDQUNRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0FDUUVHTUh5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQmpCOGdCQ0FIY2pZQ0FDQUJJQUkyQWdBZ0FpQUJOZ0lZREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQVNBRFFRRjBJUU1nQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUNOZ0lRSUFJZ0JEWUNHQXNnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFFS0FJSUlnQWdBallDRENBRUlBSTJBZ2dnQWtFQU5nSVlJQUlnQkRZQ0RDQUNJQUEyQWdnTFFhZ2ZRYWdmS0FJQVFRRnJJZ0JCZnlBQUd6WUNBQXNMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF0S0FRRi9JQUFnQVVrRVFDQUFJQUVnQWhBQ0R3c2dBZ1JBSUFBZ0Ftb2hBeUFCSUFKcUlRRURRQ0FEUVFGcklnTWdBVUVCYXlJQkxRQUFPZ0FBSUFKQkFXc2lBZzBBQ3dzZ0FBdjlEZ0lSZndGK0l3QkJNR3NpQnlRQVFiaC9JUWdDUUNBRlJRMEFJQVFzQUFBaUNVSC9BWEVoQ3dKQUlBbEJBRWdFUUNBTFFmNEFhMEVCZGlJR0lBVlBEUUpCYkNFSUlBdEIvd0JySWd0Qi93RkxEUUlnQkVFQmFpRUlRUUFoQlFOQUlBVWdDMDhFUUNBTElRZ2dCaUVMREFNRklBQWdCV29nQ0NBRlFRRjJhaUlFTFFBQVFRUjJPZ0FBSUFBZ0JVRUJjbW9nQkMwQUFFRVBjVG9BQUNBRlFRSnFJUVVNQVFzQUN3QUxJQVVnQzAwTkFTQUhRZjhCTmdJRUlBWWdCMEVFYWlBSFFRaHFJQVJCQVdvaURpQUxFQXdpQkVHSWYwc0VRQ0FFSVFnTUFndEJWQ0VJSUFjb0FnZ2lFRUVHU3cwQklBY29BZ1FpRVVFQmRDSUpRUUpxclVJQklCQ3RoaUlZUVFFZ0VIUWlEVUVCYWlJRnJVSUNobng4UWd0OFF2ei8vLy8vLy8vLy93Q0RRdVFDVmcwQlFWSWhDQ0FSUWY4QlN3MEJJQTFCZjNOQkFuUkI1QUpxclNBUlFRRnFJaFZCQVhTdElCaDhRZ2g4VkEwQklBc2dCR3NoRmlBRUlBNXFJUmNnQmtHQUJHb2lFaUFGUVFKMGFpSVJJQWxxUVFKcUlRNGdCa0dFQkdvaEUwR0FnQUlnRUhSQkVIWWhDVUVBSVFWQkFTRVBJQTFCQVdzaUZDRUtBMEFnQlNBVlJrVUVRQUpBSUFZZ0JVRUJkQ0lJYWk4QkFDSUVRZi8vQTBZRVFDQVRJQXBCQW5ScUlBVTZBQUlnQ2tFQmF5RUtRUUVoQkF3QkN5QVBRUUFnQ1NBRXdVb2JJUThMSUFnZ0VXb2dCRHNCQUNBRlFRRnFJUVVNQVFzTElBWWdEenNCZ2dRZ0JpQVFPd0dBQkFKQUlBb2dGRVlFUUNBTlFRTjJJUWhDQUNFWVFRQWhEd05BSUF3Z0ZVWUVRQ0FJSUExQkFYWnFRUU5xSWdsQkFYUWhDRUVBSVFSQkFDRUtBMEJCQUNFRklBb2dEVThOQkFOQUlBVkJBa1pGQkVBZ0V5QUZJQWxzSUFScUlCUnhRUUowYWlBT0lBVWdDbXBxTFFBQU9nQUNJQVZCQVdvaEJRd0JDd3NnQ2tFQ2FpRUtJQVFnQ0dvZ0ZIRWhCQXdBQ3dBRklBWWdERUVCZEdvdUFRQWhDU0FPSUE5cUlnUWdHRGNBQUVFSUlRVURRQ0FGSUFsT1JRUkFJQVFnQldvZ0dEY0FBQ0FGUVFocUlRVU1BUXNMSUJoQ2dZS0VpSkNnd0lBQmZDRVlJQXhCQVdvaERDQUpJQTlxSVE4TUFRc0FDd0FMSUExQkEzWWdEVUVCZG1wQkEyb2hDRUVBSVFVRFFDQU1JQlZHUlFSQVFRQWhDU0FHSUF4QkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FKUmtVRVFDQVRJQVZCQW5ScUlBdzZBQUlEUUNBRklBaHFJQlJ4SWdVZ0Nrc05BQXNnQ1VFQmFpRUpEQUVMQ3lBTVFRRnFJUXdNQVFzTFFYOGhDQ0FGRFFJTElCQkJBV29oQ0VFQUlRVURRQ0FGSUExR1JRUkFJQkVnRXlBRlFRSjBhaUlPTFFBQ1FRRjBhaUlFSUFRdkFRQWlDVUVCYWpzQkFDQU9JQWdnQ1dkQllITnFJZ1E2QUFNZ0RpQUpJQVIwSUExck93RUFJQVZCQVdvaEJRd0JDd3NDUUFKQUlBWXZBWUlFQkVBZ0IwRWNhaUlFSUJjZ0ZoQU5JZ2hCaUg5TERRSWdCMEVVYWlBRUlCSVFEaUFIUVF4cUlBUWdFaEFPUVFBaEJRTkFJQWRCSEdvaUJCQVBJQVZCK3dGTGNnMENJQUFnQldvaUJpQUhRUlJxSUFRUUVEb0FBQ0FHSUFkQkRHb2dCQkFRT2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVU1Bd1VnQUNBRWFpQUhRUlJxSUFkQkhHb2lCQkFRT2dBQUlBWWdCMEVNYWlBRUVCQTZBQU1nQlVFRWFpRUZEQUVMQUFzQUN5QUhRUnhxSWdRZ0Z5QVdFQTBpQ0VHSWYwc05BU0FIUVJScUlBUWdFaEFPSUFkQkRHb2dCQ0FTRUE1QkFDRUZBMEFnQjBFY2FpSUVFQThnQlVIN0FVdHlSUVJBSUFBZ0JXb2lCaUFIUVJScUlBUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVGSUFBZ0JHb2dCMEVVYWlBSFFSeHFJZ1FRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FESUFWQkJHb2hCUXdDQ3dzTEFuOERRRUc2ZnlFSUlBVkIvUUZMRFFNZ0FDQUZhaUlHSUFkQkZHb2dCMEVjYWlJSkVCRTZBQUFnQmtFQmFpRUVJQWtRRDBFRFJnUkFJQWRCREdvaENFRUNEQUlMSUFWQi9BRkxEUU1nQmlBSFFReHFJQWRCSEdvaUJCQVJPZ0FCSUFWQkFtb2hCU0FFRUE5QkEwY05BQXNnQUNBRmFpRUVJQWRCRkdvaENFRURDeUFFSUFnZ0IwRWNhaEFST2dBQUlBWnFJQUJySVFnTUFRc0Nmd05BUWJwL0lRZ2dCVUg5QVVzTkFpQUFJQVZxSWdZZ0IwRVVhaUFIUVJ4cUlna1FFRG9BQUNBR1FRRnFJUVFnQ1JBUFFRTkdCRUFnQjBFTWFpRUlRUUlNQWdzZ0JVSDhBVXNOQWlBR0lBZEJER29nQjBFY2FpSUVFQkE2QUFFZ0JVRUNhaUVGSUFRUUQwRURSdzBBQ3lBQUlBVnFJUVFnQjBFVWFpRUlRUU1MSUFRZ0NDQUhRUnhxRUJBNkFBQWdCbW9nQUdzaENBc2dDRUdJZjBzTkFRc2dDQ0VFUVFBaEJTQUJRUUJCTkJBRElRbEJBQ0VLQTBBZ0JDQUZSd1JBSUFBZ0JXb2lCaTBBQUNJQlFRdExCRUJCYkNFSURBTUZJQWtnQVVFQ2RHb2lBU0FCS0FJQVFRRnFOZ0lBSUFWQkFXb2hCVUVCSUFZdEFBQjBRUUYxSUFwcUlRb01BZ3NBQ3d0QmJDRUlJQXBGRFFBZ0NtY2lCVUVmY3lJQlFRdExEUUFnQTBFZ0lBVnJOZ0lBUVFGQkFpQUJkQ0FLYXlJRFowRWZjeUlCZENBRFJ3MEFJQUFnQkdvZ0FVRUJhaUlBT2dBQUlBa2dBRUVDZEdvaUFDQUFLQUlBUVFGcU5nSUFJQWtvQWdRaUFFRUNTU0FBUVFGeGNnMEFJQUlnQkVFQmFqWUNBQ0FMUVFGcUlRZ0xJQWRCTUdva0FDQUlDNkFGQVF4L0l3QkJFR3NpRENRQUFuOGdCRUVIVFFSQUlBeENBRGNEQ0NBTVFRaHFJZ1VnQXlBRUVBSWFRV3dnQUNBQklBSWdCVUVJRUF3aUFDQUFJQVJMR3lBQUlBQkJpWDlKR3d3QkN5QUFRUUFnQVNnQ0FFRUJhaUlOUVFGMEVBTWhEMEZVSUFNb0FBQWlCa0VQY1NJQVFRcExEUUFhSUFJZ0FFRUZhallDQUNBRElBUnFJZ0pCQkdzaEJ5QUNRUWRySVFzZ0FFRUdhaUVPUVFRaEFpQUdRUVIySVFWQklDQUFkQ0lJUVFGeUlRbEJBQ0VBUVFFaEJpQURJUVFEUUFKQUlBWkJBWEZGQkVBRFFDQUZRWDl6UVlDQWdJQjRjbWdpQmtFWVNVVUVRQ0FBUVNScUlRQWdCQ0FMVFFSL0lBUkJBMm9GSUFRZ0MydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xJQUlnQmtFZWNTSUtha0VDYWlFQ0lBWkJBWFpCQTJ3Z0FHb2dCU0FLZGtFRGNXb2lBQ0FOVHcwQkFuOGdCQ0FMU3lBQ1FRTjJJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBUWdCMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVUxJQVVnQ0VFQmEzRWlCaUFJUVFGMFFRRnJJZ29nQ1dzaUVFa0VmeUFPUVFGckJTQUZJQXB4SWdVZ0VFRUFJQVVnQ0U0YmF5RUdJQTRMSVFVZ0R5QUFRUUYwYWlBR1FRRnJJZ283QVFBZ0FFRUJhaUVBSUFJZ0JXb2hBaUFJUVFFZ0Jtc2dDaUFHUVFCS0d5QUphaUlKU2dSQUlBbEJBa2dOQVVFZ0lBbG5JZ1ZySVE1QkFTQUZRUjl6ZENFSUN5QUFJQTFQRFFBZ0NrRUFSeUVHQW44Z0JDQUxTeUFDUVFOMUlBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFJZ0JDQUhhMEVEZEdwQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xRV3dnQ1VFQlJ3MEFHa0ZRSUFBZ0RVc05BQnBCYkNBQ1FTQktEUUFhSUFFZ0FFRUJhellDQUNBRUlBSkJCMnBCQTNWcUlBTnJDeUFNUVJCcUpBQUw4Z0VCQVg4Z0FrVUVRQ0FBUWdBM0FnQWdBRUVBTmdJUUlBQkNBRGNDQ0VHNGZ3OExJQUFnQVRZQ0RDQUFJQUZCQkdvMkFoQWdBa0VFVHdSQUlBQWdBU0FDYWlJQlFRUnJJZ00yQWdnZ0FDQURLQUFBTmdJQUlBRkJBV3N0QUFBaUFRUkFJQUFnQVdkQkYyczJBZ1FnQWc4TElBQkJBRFlDQkVGL0R3c2dBQ0FCTmdJSUlBQWdBUzBBQUNJRE5nSUFBa0FDUUFKQUlBSkJBbXNPQWdFQUFnc2dBQ0FCTFFBQ1FSQjBJQU55SWdNMkFnQUxJQUFnQVMwQUFVRUlkQ0FEYWpZQ0FBc2dBU0FDYWtFQmF5MEFBQ0lCUlFSQUlBQkJBRFlDQkVGc0R3c2dBQ0FCWnlBQ1FRTjBhMEVKYWpZQ0JDQUNDMFFCQW44Z0FTQUNMd0VBSWdNZ0FTZ0NCR29pQkRZQ0JDQUFJQU5CQW5SQm9CMXFLQUlBSUFFb0FnQkJBQ0FFYTNaeE5nSUFJQUVRRHhvZ0FDQUNRUVJxTmdJRUM1OEJBUVIvUVFNaEFTQUFLQUlFSWdKQklFMEVRQ0FBS0FJSUlnRWdBQ2dDRUU4RVFDQUFJQUpCQjNFMkFnUWdBQ0FCSUFKQkEzWnJJZ0kyQWdnZ0FDQUNLQUFBTmdJQVFRQVBDeUFBS0FJTUlnTWdBVVlFUUVFQlFRSWdBa0VnU1JzUEN5QUFJQUVnQVNBRGF5QUNRUU4ySWdRZ0FTQUVheUFEU1NJQkd5SURheUlFTmdJSUlBQWdBaUFEUVFOMGF6WUNCQ0FBSUFRb0FBQTJBZ0FMSUFFTFNBRUVmeUFBS0FJRUlBQW9BZ0JCQW5ScUlnSXRBQUlnQWk4QkFDRUVJQUVnQVNnQ0JDSUZJQUl0QUFNaUFtbzJBZ1FnQUNBRUlBRW9BZ0FnQlhSQkFDQUNhM1pxTmdJQUMxSUJCSDhnQUNnQ0JDQUFLQUlBUVFKMGFpSUNMUUFDSUFJdkFRQWhCQ0FCSUFJdEFBTWlBaUFCS0FJRWFpSUZOZ0lFSUFBZ0JDQUNRUUowUWFBZGFpZ0NBQ0FCS0FJQVFRQWdCV3QyY1dvMkFnQUxDQUFnQUVHSWYwc0xHZ0FnQUFSQUlBRUVRQ0FDSUFBZ0FSRUNBQThMSUFBUUJnc0xwZ2dDRFg4QmZpTUFRUkJySWdra0FDQUpRUUEyQWd3Z0NVRUFOZ0lJQW44Q1FDQURRZWdKYWlBRElBbEJDR29nQ1VFTWFpQUJJQUlnQTBHQUFXb1FDeUlQUVloL1N3MEFRVlFnQ1NnQ0RDSUVJQUFvQWdBaUFVSC9BWEZCQVdwTERRRWFJQUJCQkdvaEN5QUFJQUZCLzRHQWVIRWdCRUVRZEVHQWdQd0hjWEkyQWdCQmZ5QUVJQVJCQUVnYlFRRnFJUUJCQUNFQklBa29BZ2doQlVFQUlRSURRQ0FBSUFKR0JFQWdCVUVEYXlFQlFRQWhBQU5BQWtCQkFDRUNJQUFnQVU0RVFBTkFJQUFnQlU0TkFpQURJQUFnQTJwQjZBbHFMUUFBUVFKMGFrRkFheUlCSUFFb0FnQWlBVUVCYWpZQ0FDQUJJQU5xSUFBNkFPZ0hJQUJCQVdvaEFBd0FDd0FGQTBBZ0FrRUVSa1VFUUNBRElBTWdBQ0FDYWlJSGFrSG9DV290QUFCQkFuUnFRVUJySWdnZ0NDZ0NBQ0lJUVFGcU5nSUFJQU1nQ0dvZ0J6b0E2QWNnQWtFQmFpRUNEQUVMQ3lBQVFRUnFJUUFNQWdzQUN3c2dCRUVCYWlFT0lBTW9BZ0FoQjBFQUlRQkJBU0VJQTBBZ0NDQU9SZzBESUE0Z0NHc2hCQ0FESUFoQkFuUnFLQUlBSVFVQ1FBSkFBa0FDUUFKQUFrQkJBU0FJZEVFQmRTSU5RUUZyRGdnQUFRUUNCQVFFQXdRTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBQUlRRURRQ0FDSUFaR0RRVWdBeUFDSUFkcWFpMEE2QWNoQ2lBTElBRkJBWFJxSWd3Z0JEb0FBU0FNSUFvNkFBQWdBa0VCYWlFQ0lBRkJBV29oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaENpQUFJUUVEUUNBQ0lBcEdEUVFnQ3lBQlFRRjBhaUlHSUFNZ0FpQUhhbW90QU9nSElndzZBQUlnQmlBRU9nQUJJQVlnRERvQUFDQUdJQVE2QUFNZ0FrRUJhaUVDSUFGQkFtb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBRVFRaDBRWUQrQTNFaEJDQUFJUUVEUUNBQ0lBWkdEUU1nQ3lBQlFRRjBhaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitOd0FBSUFKQkFXb2hBaUFCUVFScUlRRU1BQXNBQzBFQUlRSWdCVUVBSUFWQkFFb2JJUVlnQkVFSWRFR0EvZ054SVFRZ0FDRUJBMEFnQWlBR1JnMENJQXNnQVVFQmRHb2lDaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJaEUzQUFnZ0NpQVJOd0FBSUFKQkFXb2hBaUFCUVFocUlRRU1BQXNBQzBFQUlRRWdCVUVBSUFWQkFFb2JJUW9nQkVFSWRFR0EvZ054SVF3Z0FDRUVBMEFnQVNBS1JnMEJJQXNnQkVFQmRHb2hFQ0FNSUFNZ0FTQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJUkZCQUNFQ0EwQWdBaUFOVGtVRVFDQVFJQUpCQVhScUlnWWdFVGNBR0NBR0lCRTNBQkFnQmlBUk53QUlJQVlnRVRjQUFDQUNRUkJxSVFJTUFRc0xJQUZCQVdvaEFTQUVJQTFxSVFRTUFBc0FDeUFJUVFGcUlRZ2dCU0FIYWlFSElBVWdEV3dnQUdvaEFBd0FDd0FGSUFNZ0FrRUNkR29pQjBGQWF5QUJOZ0lBSUFKQkFXb2hBaUFIS0FJQUlBRnFJUUVNQVFzQUN3QUxJQThMSUFsQkVHb2tBQXZ5QWdFR2Z5TUFRU0JySWdVa0FDQUVLQUlBSVFZZ0JVRU1haUFDSUFNUURTSURRWWgvVFFSQUlBUkJCR29oQWlBQUlBRnFJZ2xCQTJzaEJFRUFJQVpCRUhaclFSOXhJUU1EUUNBRlFReHFFQThnQUNBRVQzSkZCRUFnQWlBRktBSU1JZ1lnQlNnQ0VDSUhkQ0FEZGtFQmRHb2lDQzBBQVNFS0lBQWdDQzBBQURvQUFDQUNJQVlnQnlBS2FpSUdkQ0FEZGtFQmRHb2lCeTBBQUNFSUlBVWdCaUFITFFBQmFqWUNFQ0FBSUFnNkFBRWdBRUVDYWlFQURBRUxDd05BSUFWQkRHb1FEeUVISUFVb0Fnd2hCaUFGS0FJUUlRUWdBQ0FKVHlBSGNrVUVRQ0FDSUFZZ0JIUWdBM1pCQVhScUlnWXRBQUFoQnlBRklBUWdCaTBBQVdvMkFoQWdBQ0FIT2dBQUlBQkJBV29oQUF3QkN3c0RRQ0FBSUFsUFJRUkFJQUlnQmlBRWRDQURka0VCZEdvaUJ5MEFBU0VJSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQkNBSWFpRUVEQUVMQzBGc1FXd2dBU0FGS0FJVUlBVW9BaGhIR3lBRVFTQkhHeUVEQ3lBRlFTQnFKQUFnQXd2UEZBRWpmeU1BUWRBQWF5SUZKQUJCYkNFSkFrQWdBMEVLU1EwQUFrQWdBeUFDTHdBRUlnY2dBaThBQUNJSUlBSXZBQUlpRFdwcVFRWnFJZ3hKRFFBZ0JDOEJBaUVHSUFWQlBHb2dBa0VHYWlJQ0lBZ1FEU0lKUVloL1N3MEJJQVZCS0dvZ0FpQUlhaUlDSUEwUURTSUpRWWgvU3cwQklBVkJGR29nQWlBTmFpSUNJQWNRRFNJSlFZaC9TdzBCSUFVZ0FpQUhhaUFESUF4ckVBMGlDVUdJZjBzTkFTQUVRUVJxSVFvZ0FDQUJhaUlmUVFOcklTQkJBQ0FHYTBFZmNTRUxJQVVvQWdnaEVTQUZLQUljSVJJZ0JTZ0NNQ0VUSUFVb0FrUWhGQ0FGS0FJRUlRa2dCU2dDR0NFTklBVW9BaXdoRENBRktBSkFJUVlnQlNnQ0VDRWhJQVVvQWlRaElpQUZLQUk0SVNNZ0JTZ0NUQ0VrSUFVb0FnQWhGU0FGS0FJVUlSWWdCU2dDS0NFWElBVW9BandoR0VFQklROGdBQ0FCUVFOcVFRSjJJZ1JxSWdNZ0JHb2lBaUFFYWlJWklRUWdBaUVJSUFNaEJ3TkFJQTlCQVhGRklBUWdJRTl5UlFSQUlBQWdDaUFZSUFaMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhHaUFPTFFBRElSQWdCeUFLSUJjZ0RIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0RpMEFBaUViSUE0dEFBTWhEeUFJSUFvZ0ZpQU5kQ0FMZGtFQ2RHb2lEaThCQURzQUFDQU9MUUFDSVJ3Z0RpMEFBeUVkSUFRZ0NpQVZJQWwwSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEhpQU9MUUFESVE0Z0FDQVFhaUlsSUFvZ0dDQUdJQnBxSWdaMElBdDJRUUowYWlJUUx3RUFPd0FBSUJBdEFBSWdFQzBBQXlFbUlBY2dEMm9pSnlBS0lCY2dEQ0FiYWlJYWRDQUxka0VDZEdvaUJ5OEJBRHNBQUNBSExRQUNJUXdnQnkwQUF5RVFJQWdnSFdvaUd5QUtJQllnRFNBY2FpSVBkQ0FMZGtFQ2RHb2lDQzhCQURzQUFDQUlMUUFDSVEwZ0NDMEFBeUVjSUFRZ0Rtb2lIU0FLSUJVZ0NTQWVhaUlPZENBTGRrRUNkR29pQ1M4QkFEc0FBQ0FHYWlFQVFRTWhCd0ovSUJRZ0pFa0VRQ0FBSVFaQkF3d0JDeUFBUVFkeElRWWdGQ0FBUVFOMmF5SVVLQUFBSVJoQkFBc2dDUzBBQXlFZUlBa3RBQUloQ0NBTUlCcHFJUUFnRXlBalNRUi9JQUFGSUJNZ0FFRURkbXNpRXlnQUFDRVhRUUFoQnlBQVFRZHhDeUVNSUEwZ0Qyb2hBQ0FIY2lFSlFRTWhEd0ovSUJJZ0lra0VRQ0FBSVExQkF3d0JDeUFBUVFkeElRMGdFaUFBUVFOMmF5SVNLQUFBSVJaQkFBc2dDQ0FPYWlFQUlBbHlJQkVnSVVrRWZ5QUFCU0FSSUFCQkEzWnJJaEVvQUFBaEZVRUFJUThnQUVFSGNRc2hDU0FsSUNacUlRQWdFQ0FuYWlFSElCc2dIR29oQ0NBZElCNXFJUVFnRDNKRklROE1BUXNMSUFVZ0REWUNMQ0FGSUFZMkFrQWdCU0FOTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBSWdCMGtnQUNBRFMzSU5BRUZzSVFrZ0NDQVpTdzBCSUFOQkEyc2hDUU5BSUFWQlBHb1FEMFVnQUNBSlNYRUVRQ0FBSUFvZ0JTZ0NQQ0lOSUFVb0FrQWlESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdBQ0FPTFFBRGFpSUdJQW9nRFNBTUlBNHRBQUpxSWdCMElBdDJRUUowYWlJTUx3RUFPd0FBSUFVZ0FDQU1MUUFDYWpZQ1FDQUdJQXd0QUFOcUlRQU1BUVVnQTBFQ2F5RU1BMEFnQlVFOGFoQVBJUVlnQlNnQ1BDRU5JQVVvQWtBaENTQUFJQXhMSUFaeVJRUkFJQUFnQ2lBTklBbDBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdDU0FHTFFBQ2FqWUNRQ0FBSUFZdEFBTnFJUUFNQVFzTEEwQWdBQ0FNUzBVRVFDQUFJQW9nRFNBSmRDQUxka0VDZEdvaUJpOEJBRHNBQUNBQUlBWXRBQU5xSVFBZ0NTQUdMUUFDYWlFSkRBRUxDd0pBSUFBZ0EwOE5BQ0FBSUFvZ0RTQUpkQ0FMZGlJQVFRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FKSUFNdEFBSnFJUWtNQVFzZ0NVRWZTdzBBUVNBZ0NTQUtJQUJCQW5ScUxRQUNhaUlBSUFCQklFOGJJUWtMSUFKQkEyc2hEQU5BSUFWQktHb1FEMFVnQnlBTVNYRUVRQ0FISUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lBSFFnQzNaQkFuUnFJZzB2QVFBN0FBQWdCeUFOTFFBRGFpSURJQW9nQmlBQUlBMHRBQUpxSWdCMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FDQUdMUUFDYWpZQ0xDQURJQVl0QUFOcUlRY01BUVVnQWtFQ2F5RUdBMEFnQlVFb2FoQVBJUU1nQlNnQ0tDRU1JQVVvQWl3aEFDQUdJQWRKSUFOeVJRUkFJQWNnQ2lBTUlBQjBJQXQyUVFKMGFpSURMd0VBT3dBQUlBVWdBQ0FETFFBQ2FqWUNMQ0FISUFNdEFBTnFJUWNNQVFzTEEwQWdCaUFIU1VVRVFDQUhJQW9nRENBQWRDQUxka0VDZEdvaUF5OEJBRHNBQUNBSElBTXRBQU5xSVFjZ0FDQURMUUFDYWlFQURBRUxDd0pBSUFJZ0IwME5BQ0FISUFvZ0RDQUFkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FBSUFNdEFBSnFJUUFNQVFzZ0FFRWZTdzBBUVNBZ0FDQUtJQUpCQW5ScUxRQUNhaUlBSUFCQklFOGJJUUFMSUJsQkEyc2hEQU5BSUFWQkZHb1FEMFVnQ0NBTVNYRUVRQ0FJSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lBblFnQzNaQkFuUnFJZzB2QVFBN0FBQWdDQ0FOTFFBRGFpSURJQW9nQmlBQ0lBMHRBQUpxSWdKMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FpQUdMUUFDYWpZQ0dDQURJQVl0QUFOcUlRZ01BUVVnR1VFQ2F5RURBMEFnQlVFVWFoQVBJUUlnQlNnQ0ZDRUdJQVVvQWhnaEJ5QURJQWhKSUFKeVJRUkFJQWdnQ2lBR0lBZDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBVWdCeUFDTFFBQ2FqWUNHQ0FJSUFJdEFBTnFJUWdNQVFzTEEwQWdBeUFJU1VVRVFDQUlJQW9nQmlBSGRDQUxka0VDZEdvaUFpOEJBRHNBQUNBSUlBSXRBQU5xSVFnZ0J5QUNMUUFDYWlFSERBRUxDd0pBSUFnZ0dVOE5BQ0FJSUFvZ0JpQUhkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FISUFNdEFBSnFJUWNNQVFzZ0IwRWZTdzBBUVNBZ0J5QUtJQUpCQW5ScUxRQUNhaUlDSUFKQklFOGJJUWNMQTBBZ0JSQVBSU0FFSUNCSmNRUkFJQVFnQ2lBRktBSUFJZ1lnQlNnQ0JDSUNkQ0FMZGtFQ2RHb2lEQzhCQURzQUFDQUVJQXd0QUFOcUlnTWdDaUFHSUFJZ0RDMEFBbW9pQW5RZ0MzWkJBblJxSWdRdkFRQTdBQUFnQlNBQ0lBUXRBQUpxTmdJRUlBTWdCQzBBQTJvaEJBd0JCU0FmUVFKcklRTURRQ0FGRUE4aEFpQUZLQUlBSVFZZ0JTZ0NCQ0VJSUFNZ0JFa2dBbkpGQkVBZ0JDQUtJQVlnQ0hRZ0MzWkJBblJxSWdJdkFRQTdBQUFnQlNBSUlBSXRBQUpxTmdJRUlBUWdBaTBBQTJvaEJBd0JDd3NEUUNBRElBUkpSUVJBSUFRZ0NpQUdJQWgwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVFnQWkwQUEyb2hCQ0FJSUFJdEFBSnFJUWdNQVFzTEFrQWdCQ0FmVHcwQUlBUWdDaUFHSUFoMElBdDJJZ0pCQW5ScUlnTXRBQUE2QUFBZ0F5MEFBMEVCUmdSQUlBZ2dBeTBBQW1vaENBd0JDeUFJUVI5TERRQkJJQ0FJSUFvZ0FrRUNkR290QUFKcUlnSWdBa0VnVHhzaENBdEJiRUZzUVd4QmJFRnNRV3hCYkVGc0lBRWdDRUVnUnhzZ0JTZ0NDQ0FGS0FJTVJ4c2dCMEVnUnhzZ0JTZ0NIQ0FGS0FJZ1J4c2dBRUVnUnhzZ0JTZ0NNQ0FGS0FJMFJ4c2dDVUVnUnhzZ0JTZ0NSQ0FGS0FKSVJ4c2hDUXdKQ3dBTEFBc0FDd0FMQUFzQUN3QUxBQXRCYkNFSkN5QUZRZEFBYWlRQUlBa0w3QkFCSG44akFFSFFBR3NpQlNRQVFXd2hDUUpBSUFOQkNra05BQUpBSUFNZ0FpOEFCQ0lHSUFJdkFBQWlCeUFDTHdBQ0lnaHFha0VHYWlJT1NRMEFJQVF2QVFJaER5QUZRVHhxSUFKQkJtb2lBaUFIRUEwaUNVR0lmMHNOQVNBRlFTaHFJQUlnQjJvaUFpQUlFQTBpQ1VHSWYwc05BU0FGUVJScUlBSWdDR29pQWlBR0VBMGlDVUdJZjBzTkFTQUZJQUlnQm1vZ0F5QU9heEFOSWdsQmlIOUxEUUVnQkVFRWFpRUtJQUFnQVdvaUhFRURheUVkUVFBZ0QydEJIM0VoQ3lBRktBSUlJUkVnQlNnQ0hDRVNJQVVvQWpBaEV5QUZLQUpFSVJRZ0JTZ0NCQ0VKSUFVb0FoZ2hCaUFGS0FJc0lRY2dCU2dDUUNFSUlBVW9BaEFoSGlBRktBSWtJUjhnQlNnQ09DRWdJQVVvQWt3aElTQUZLQUlBSVJVZ0JTZ0NGQ0VXSUFVb0FpZ2hGeUFGS0FJOElSaEJBU0VOSUFBZ0FVRURha0VDZGlJQ2FpSU9JQUpxSWc4Z0Ftb2lHU0VFSUE4aEFpQU9JUU1EUUNBTlJTQUVJQjFQY2tVRVFDQUtJQmdnQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUFnQ2lBWElBZDBJQXQyUVFGMGFpSU1MUUFCSVJBZ0F5QU1MUUFBT2dBQUlBb2dGaUFHZENBTGRrRUJkR29pREMwQUFTRWFJQUlnREMwQUFEb0FBQ0FLSUJVZ0NYUWdDM1pCQVhScUlnd3RBQUVoR3lBRUlBd3RBQUE2QUFBZ0NpQVlJQWdnRFdvaUNIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFFZ0NpQVhJQWNnRUdvaUIzUWdDM1pCQVhScUlnd3RBQUVoRUNBRElBd3RBQUE2QUFFZ0NpQVdJQVlnR21vaURIUWdDM1pCQVhScUlnWXRBQUVoR2lBQ0lBWXRBQUE2QUFFZ0NpQVZJQWtnRzJvaUczUWdDM1pCQVhScUlna3RBQUVoSWlBRUlBa3RBQUE2QUFFZ0NDQU5haUVHUVFNaENRSi9JQlFnSVVrRVFFRURJUTBnQmd3QkN5QVVJQVpCQTNackloUW9BQUFoR0VFQUlRMGdCa0VIY1FzaENDQUhJQkJxSVFZZ0V5QWdTUVIvSUFZRklCTWdCa0VEZG1zaUV5Z0FBQ0VYUVFBaENTQUdRUWR4Q3lFSElBd2dHbW9oRENBSklBMXlJUkJCQXlFTkFuOGdFaUFmU1FSQUlBd2hCa0VEREFFTElBeEJCM0VoQmlBU0lBeEJBM1pySWhJb0FBQWhGa0VBQ3lBYklDSnFJUXdnRUhJaEVDQVJJQjVKQkg4Z0RBVWdFU0FNUVFOMmF5SVJLQUFBSVJWQkFDRU5JQXhCQjNFTElRa2dCRUVDYWlFRUlBSkJBbW9oQWlBRFFRSnFJUU1nQUVFQ2FpRUFJQTBnRUhKRklRME1BUXNMSUFVZ0J6WUNMQ0FGSUFnMkFrQWdCU0FHTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBQWdEa3NnQXlBUFMzSU5BRUZzSVFrZ0FpQVpTdzBCSUE1QkEyc2hDUU5BSUFWQlBHb1FEeUFBSUFsUGNrVUVRQ0FLSUFVb0Fqd2lCaUFGS0FKQUlnZDBJQXQyUVFGMGFpSUlMUUFCSVF3Z0FDQUlMUUFBT2dBQUlBb2dCaUFISUF4cUlnWjBJQXQyUVFGMGFpSUhMUUFBSVFnZ0JTQUdJQWN0QUFGcU5nSkFJQUFnQ0RvQUFTQUFRUUpxSVFBTUFRc0xBMEFnQlVFOGFoQVBJUWNnQlNnQ1BDRUdJQVVvQWtBaENTQUFJQTVQSUFkeVJRUkFJQW9nQmlBSmRDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0NTQUdMUUFCYWpZQ1FDQUFJQWM2QUFBZ0FFRUJhaUVBREFFTEN3TkFJQUFnRGs5RkJFQWdDaUFHSUFsMElBdDJRUUYwYWlJSExRQUJJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdDV29oQ1F3QkN3c2dEMEVEYXlFQUEwQWdCVUVvYWhBUElBQWdBMDF5UlFSQUlBb2dCU2dDS0NJR0lBVW9BaXdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFESUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWl3Z0F5QUlPZ0FCSUFOQkFtb2hBd3dCQ3dzRFFDQUZRU2hxRUE4aEJ5QUZLQUlvSVFZZ0JTZ0NMQ0VBSUFNZ0QwOGdCM0pGQkVBZ0NpQUdJQUIwSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FBSUFZdEFBRnFOZ0lzSUFNZ0J6b0FBQ0FEUVFGcUlRTU1BUXNMQTBBZ0F5QVBUMFVFUUNBS0lBWWdBSFFnQzNaQkFYUnFJZ2N0QUFFaENDQURJQWN0QUFBNkFBQWdBMEVCYWlFRElBQWdDR29oQUF3QkN3c2dHVUVEYXlFREEwQWdCVUVVYWhBUElBSWdBMDl5UlFSQUlBb2dCU2dDRkNJR0lBVW9BaGdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFDSUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWhnZ0FpQUlPZ0FCSUFKQkFtb2hBZ3dCQ3dzRFFDQUZRUlJxRUE4aEJ5QUZLQUlVSVFZZ0JTZ0NHQ0VESUFJZ0dVOGdCM0pGQkVBZ0NpQUdJQU4wSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FESUFZdEFBRnFOZ0lZSUFJZ0J6b0FBQ0FDUVFGcUlRSU1BUXNMQTBBZ0FpQVpUMFVFUUNBS0lBWWdBM1FnQzNaQkFYUnFJZ2N0QUFFaENDQUNJQWN0QUFBNkFBQWdBa0VCYWlFQ0lBTWdDR29oQXd3QkN3c0RRQ0FGRUE4Z0JDQWRUM0pGQkVBZ0NpQUZLQUlBSWdJZ0JTZ0NCQ0lHZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FLSUFJZ0JpQUlhaUlDZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQWlBR0xRQUJhallDQkNBRUlBYzZBQUVnQkVFQ2FpRUVEQUVMQ3dOQUlBVVFEeUVISUFVb0FnQWhCaUFGS0FJRUlRSWdCQ0FjVHlBSGNrVUVRQ0FLSUFZZ0FuUWdDM1pCQVhScUlnWXRBQUFoQnlBRklBSWdCaTBBQVdvMkFnUWdCQ0FIT2dBQUlBUkJBV29oQkF3QkN3c0RRQ0FFSUJ4UFJRUkFJQW9nQmlBQ2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBRVFRRnFJUVFnQWlBSWFpRUNEQUVMQzBGc1FXeEJiRUZzUVd4QmJFRnNRV3dnQVNBQ1FTQkhHeUFGS0FJSUlBVW9BZ3hIR3lBRFFTQkhHeUFGS0FJY0lBVW9BaUJIR3lBQVFTQkhHeUFGS0FJd0lBVW9BalJIR3lBSlFTQkhHeUFGS0FKRUlBVW9Ba2hIR3lFSkRBRUxRV3doQ1FzZ0JVSFFBR29rQUNBSkMxZ0JBMzhDUUNBQUtBS1E2d0VpQVVVTkFDQUJLQUlBSUFGQnROVUJhaWdDQUNJQ0lBRkJ1TlVCYWlnQ0FDSURFQk1nQWdSQUlBTWdBU0FDRVFJQURBRUxJQUVRQmdzZ0FFRUFOZ0tnNndFZ0FFSUFOd09RNndFTDZRTUNCSDhDZmlBQVFRQkJLQkFESVFRZ0FrRUJRUVVnQXhzaUFFa0VRQ0FBRHdzZ0FVVUVRRUYvRHd0QkFTRUdBa0FDUUNBRFFRRkdEUUFnQXlFR0lBRW9BQUFpQlVHbzZyNXBSZzBBUVhZaEF5QUZRWEJ4UWREVXRNSUJSdzBCUVFnaEF5QUNRUWhKRFFFZ0FUVUFCQ0VJSUFSQkFUWUNGQ0FFSUFnM0F3QkJBQThMSUFFZ0FpQUdFQm9pQXlBQ1N3MEFJQVFnQXpZQ0dFRnlJUU1nQUNBQmFpSUZRUUZyTFFBQUlnSkJDSEVOQUNBQ1FTQnhJZ1pGQkVCQmNDRURJQVV0QUFBaUJVR25BVXNOQVNBRlFRZHhyVUlCSUFWQkEzWkJDbXF0aGlJSVFnT0lmaUFJZkNFSklBQkJBV29oQUFzZ0FrRUdkaUVGSUFKQkFuWkJBQ0VEQWtBQ1FBSkFBa0FnQWtFRGNVRUJhdzREQUFFQ0F3c2dBQ0FCYWkwQUFDRURJQUJCQVdvaEFBd0NDeUFBSUFGcUx3QUFJUU1nQUVFQ2FpRUFEQUVMSUFBZ0FXb29BQUFoQXlBQVFRUnFJUUFMUVFGeElRSUNmZ0pBQWtBQ1FBSkFJQVZCQVdzT0F3RUNBd0FMUW44Z0JrVU5BeG9nQUNBQmFqRUFBQXdEQ3lBQUlBRnFNd0FBUW9BQ2ZBd0NDeUFBSUFGcU5RQUFEQUVMSUFBZ0FXb3BBQUFMSVFnZ0JDQUNOZ0lnSUFRZ0F6WUNIQ0FFSUFnM0F3QkJBQ0VESUFSQkFEWUNGQ0FFSUFnZ0NTQUdHeUlJTndNSUlBUkNnSUFJSUFnZ0NFS0FnQWhhR3o0Q0VBc2dBd3RmQVFGL1FiaC9JUU1nQVVFQlFRVWdBaHNpQWs4RWZ5QUFJQUpxUVFGckxRQUFJZ0JCQTNGQkFuUkJvQjVxS0FJQUlBSnFJQUJCQkhaQkRIRkJzQjVxS0FJQWFpQUFRU0J4SWdGRmFpQUJRUVYySUFCQndBQkpjV29GUWJoL0N3c01BQ0FBSUFFZ0FrRUFFQmtMbHdNQ0JYOENmaU1BUVVCcUlnUWtBQUpBQTBBZ0FVRUZUd1JBQWtBZ0FDZ0FBRUZ3Y1VIUTFMVENBVVlFUUVKK0lRY2dBVUVJU1EwRUlBQW9BQVFpQWtGM1N3MEVJQUpCQ0dvaUF5QUJTdzBFSUFKQmdYOUpEUUVNQkFzZ0JFRVlhaUFBSUFFUUd5RUNRbjRnQkNrREdFSUFJQVFvQWl4QkFVY2JJQUliSWdkQ2ZWWU5BeUFISUFoOElnZ2dCMVJDZmlFSERRTUNRQUpBSUFGQkNFa05BQ0FBS0FBQVFYQnhRZERVdE1JQlJ3MEFJQUFvQUFRaUFrRjNTdzBGUWJoL0lBSkJDR29pQWlBQklBSkpHeUVEREFFTElBUkJHR29nQUNBQkVCc2lBa0dJZjBzRVFDQUNJUU1NQVF0QnVIOGhBeUFDRFFBZ0FTQUVLQUl3SWdKcklRVWdBQ0FDYWlFR0EwQWdCaUFGSUFSQkRHb1FIU0lEUVloL1N3MEJJQU5CQTJvaUFpQUZTd1JBUWJoL0lRTU1BZ3NnQlNBQ2F5RUZJQUlnQm1vaEJpQUVLQUlRUlEwQUN5QUVLQUk0Qkg5QnVIOGhBeUFGUVFSSkRRRWdCa0VFYWdVZ0Jnc2dBR3NoQXdzZ0EwR0lmMHNOQXdzZ0FTQURheUVCSUFBZ0Eyb2hBQXdCQ3d0Q2ZpQUlJQUViSVFjTElBUkJRR3NrQUNBSEMyUUJBWDlCdUg4aEF3SkFJQUZCQTBrTkFDQUFMUUFDSVFFZ0FpQUFMd0FBSWdCQkFYRTJBZ1FnQWlBQVFRRjJRUU54SWdNMkFnQWdBaUFBSUFGQkVIUnlRUU4ySWdBMkFnZ0NRQUpBSUFOQkFXc09Bd0lCQUFFTFFXd1BDeUFBSVFNTElBTUxSQUVDZnlBQklBSW9BZ1FpQXlBQktBSUVhaUlFTmdJRUlBQWdBMEVDZEVHZ0hXb29BZ0FnQVNnQ0FFRUFJQVJyZG5FMkFnQWdBUkFQR2lBQUlBSkJDR28yQWdRTHpnRUJCbjlCdW44aENnSkFJQUlvQWdRaUNDQUNLQUlBSWdscUlnMGdBU0FBYTBzTkFFRnNJUW9nQ1NBRUlBTW9BZ0FpQzJ0TERRQWdBQ0FKYWlJRUlBSW9BZ2dpREdzaEFpQUFJQUZCSUdzaUFDQUxJQWxCQUJBZ0lBTWdDU0FMYWpZQ0FBSkFBa0FnQkNBRmF5QU1Ud1JBSUFJaEJRd0JDeUFNSUFRZ0JtdExEUUlnQnlBSElBSWdCV3NpQW1vaUFTQUlhazhFUUNBRUlBRWdDQkFLR2d3Q0N5QUNJQWhxSVFnZ0JDQUJRUUFnQW1zUUNpQUNheUVFQ3lBRUlBQWdCU0FJUVFFUUlBc2dEU0VLQ3lBS0M4Y0VBUUovSUFBZ0Eyb2hCZ0pBSUFOQkIwd0VRQU5BSUFBZ0JrOE5BaUFBSUFJdEFBQTZBQUFnQUVFQmFpRUFJQUpCQVdvaEFnd0FDd0FMSUFSQkFVWUVRQUpBSUFBZ0Ftc2lCVUVIVFFSQUlBQWdBaTBBQURvQUFDQUFJQUl0QUFFNkFBRWdBQ0FDTFFBQ09nQUNJQUFnQWkwQUF6b0FBeUFBSUFJZ0JVRUNkQ0lGUWNBZWFpZ0NBR29pQWlnQUFEWUFCQ0FDSUFWQjRCNXFLQUlBYXlFQ0RBRUxJQUFnQWlrQUFEY0FBQXNnQWtFSWFpRUNJQUJCQ0dvaEFBc2dBU0FHVHdSQUlBQWdBMm9oQVNBRVFRRkhJQUFnQW10QkQwcHlSUVJBQTBBZ0FDQUNLUUFBTndBQUlBSkJDR29oQWlBQVFRaHFJZ0FnQVVrTkFBd0RDd0FMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0EwRVJTUTBCSUFCQkVHb2hBQU5BSUFBZ0Fpa0FFRGNBQUNBQUlBSXBBQmczQUFnZ0FDQUNLUUFnTndBUUlBQWdBaWtBS0RjQUdDQUNRU0JxSVFJZ0FFRWdhaUlBSUFGSkRRQUxEQUVMQWtBZ0FDQUJTd1JBSUFBaEFRd0JDeUFCSUFCcklRVUNRQ0FFUVFGSElBQWdBbXRCRDBweVJRUkFJQUloQXdOQUlBQWdBeWtBQURjQUFDQURRUWhxSVFNZ0FFRUlhaUlBSUFGSkRRQUxEQUVMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0JVRVJTQTBBSUFCQkVHb2hBQ0FDSVFNRFFDQUFJQU1wQUJBM0FBQWdBQ0FES1FBWU53QUlJQUFnQXlrQUlEY0FFQ0FBSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUJCSUdvaUFDQUJTUTBBQ3dzZ0FpQUZhaUVDQ3dOQUlBRWdCazhOQVNBQklBSXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2hBZ3dBQ3dBTEM2NEhBZ1YvQVg0akFFR0FBV3NpRVNRQUlCRWdBellDZkVGL0lROENRQUpBQWtBQ1FBSkFJQUlPQkFFQUF3SUVDeUFHUlFSQVFiaC9JUThNQkF0QmJDRVBJQVV0QUFBaUFpQURTdzBESUFnZ0FrRUNkQ0lDYWlnQ0FDRURJQUlnQjJvb0FnQWhBaUFBUVFBNkFBc2dBRUlBTndJQUlBQWdBallDRENBQUlBTTZBQW9nQUVFQU93RUlJQUVnQURZQ0FFRUJJUThNQXdzZ0FTQUpOZ0lBUVFBaER3d0NDeUFLUlFSQVFXd2hEd3dDQzBFQUlROGdDMFVnREVFWlNISU5BVUVJSUFSMFFRaHFJUUJCQUNFREEwQWdBQ0FEVFEwQ0lBTkJRR3NoQXd3QUN3QUxRV3doRHlBUklCRkIvQUJxSUJGQitBQnFJQVVnQmhBTUlnTkJpSDlMRFFBZ0VTZ0NlQ0lDSUFSTERRQWdFU2dDZkVFQmFpRUpJQUJCQ0dvaEMwR0FnQUlnQW5SQkVIVWhCVUVCSVJCQkFTQUNkQ0lQUVFGcklnb2hFZ05BSUFrZ0RrY0VRQUpBSUJFZ0RrRUJkQ0lFYWk4QkFDSU1RZi8vQTBZRVFDQUxJQkpCQTNScUlBNDJBZ1FnRWtFQmF5RVNRUUVoREF3QkN5QVFRUUFnQlNBTXdVb2JJUkFMSUFRZ0RXb2dERHNCQUNBT1FRRnFJUTRNQVFzTElBQWdBallDQkNBQUlCQTJBZ0FDUUNBS0lCSkdCRUFnRFVIcUFHb2hCa0VBSVJCQkFDRU1BMEFnQ1NBUVJnUkFJQTlCQTNZZ0QwRUJkbXBCQTJvaUJVRUJkQ0VFUVFBaERFRUFJUklEUUVFQUlRNGdEeUFTVFEwRUEwQWdEa0VDUndSQUlBc2dCU0FPYkNBTWFpQUtjVUVEZEdvZ0JpQU9JQkpxYWkwQUFEWUNCQ0FPUVFGcUlRNE1BUXNMSUJKQkFtb2hFaUFFSUF4cUlBcHhJUXdNQUFzQUJTQVJJQkJCQVhScUxnRUFJUVVnQmlBTWFpSUVJQk0zQUFCQkNDRU9BMEFnQlNBT1NnUkFJQVFnRG1vZ0V6Y0FBQ0FPUVFocUlRNE1BUXNMSUJOQ2dZS0VpSkNnd0lBQmZDRVRJQkJCQVdvaEVDQUZJQXhxSVF3TUFRc0FDd0FMSUE5QkEzWWdEMEVCZG1wQkEyb2hCVUVBSVJCQkFDRU9BMEFnQ1NBUVJnMEJRUUFoRENBUklCQkJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBTVJ3UkFJQXNnRGtFRGRHb2dFRFlDQkFOQUlBVWdEbW9nQ25FaURpQVNTdzBBQ3lBTVFRRnFJUXdNQVFzTElCQkJBV29oRUF3QUN3QUxJQUpCQVdvaEJVRUFJUXdEUUNBTUlBOUhCRUFnRFNBTElBeEJBM1JxSWdrb0FnUWlCRUVCZEdvaUFpQUNMd0VBSWdaQkFXbzdBUUFnQ1NBRklBWm5RV0J6YWlJQ09nQURJQWtnQmlBQ2RDQVBhenNCQUNBSklBZ2dCRUVDZENJQ2FpZ0NBRG9BQWlBSklBSWdCMm9vQWdBMkFnUWdERUVCYWlFTURBRUxDeUFCSUFBMkFnQWdBeUVQQ3lBUlFZQUJhaVFBSUE4TDdWb0NPMzhHZmlNQVFlQUJheUlFSkFBQ1FFR3c3QWtRQlNJRlJRUkFRVUFoQnd3QkN5QUZRZ0EzQXZUcUFTQUZRUUEyQXNUckFTQUZRUUEyQXJUckFTQUZRZ0EzQXB6ckFTQUZRUUEyQXJqcEFTQUZRUUEyQXF6c0NTQUZRZ0EzQXRUckFTQUZRZ0EzQXF6ckFTQUZRZ0EzQTRqckFTQUZRZ0EzQXVUcUFTQUZRZ0EzQXVUckFTQUZRWUdBZ01BQU5nSzg2d0VnQlVJQU53S2s2d0VnQlVIODZnRnFRUUEyQWdBZ0JVR1E2d0ZxUWdBM0F3QWdCUkFZSUFWQnJOVUJhaUVVSUFWQitPc0JhaUVjSUFWQnNPb0JhaUVpSUFWQm9EQnFJU29nQlVHWUlHb2hLeUFGUWFqUUFHb2hIaUFGUVJCcUlTd2dCVUVJYWlFb0lBVkJCR29oTFNBRlFjRHBBV29oS1NBRlFZanJBV29nQkVHVUFXb2hMeUFFUVl3QmFpRXdJQVJCaEFGcUlURWdCRUhjQUdvaE1pQUVRZFFBYWlFeklBUkJ6QUJxSVRRZ0FDRWRBa0FDUUFKQUFrQUNRQU5BUVFGQkJTQUZLQUxrNmdFYklRWUNRQU5BSUFNZ0Jra05BU0FDS0FBQVFYQnhRZERVdE1JQlJnUkFRYmgvSVFjZ0EwRUlTUTBJSUFJb0FBUWlEa0YzU3dSQVFYSWhCd3dKQ3lBRElBNUJDR29pQ1VrTkNDQU9RWUIvU3dSQUlBa2hCd3dKQ3lBRElBbHJJUU1nQWlBSmFpRUNEQUVMQ3lBRlFnQTNBcXpwQVNBRlFnQTNBK2pwQVNBRlFRQTJBcGpyQVNBRlFnQTNBNERxQVNBRlFnTTNBL2pwQVNBRlFiVHBBV3BDQURjQ0FDQUZRZkRwQVdwQ0FEY0RBQ0FGUWFqUUFHb2lDVUdNZ0lEZ0FEWUNBQ0FGUWF6UUFXcEI0QklwQWdBM0FnQWdCVUcwMEFGcVFlZ1NLQUlBTmdJQUlBVWdCVUVRYWpZQ0FDQUZJQVZCb0RCcU5nSUVJQVVnQlVHWUlHbzJBZ2dnQlNBSk5nSU1JQVZCQVVFRklBVW9BdVRxQVJzMkFyenBBUUpBSUFGRkRRQWdCU2dDck9rQklna2dIVVlOQUNBRklBazJBcmpwQVNBRklCMDJBcXpwQVNBRktBS3c2UUVoRGlBRklCMDJBckRwQVNBRklCMGdEaUFKYTJvMkFyVHBBUXRCdUg4aENTQURRUVZCQ1NBRktBTGs2Z0VpQmh0SkRRVWdBa0VCUVFVZ0Joc2dCaEFhSWc1QmlIOUxCRUFnRGlFSkRBVUxJQU1nRGtFRGFra05CU0FwSUFJZ0RpQUdFQmtpQmtHSWYwc0VRQ0FHSVFrTUJRc2dCZzBGQWtBQ1FDQUZLQUtvNndGQkFVY05BQ0FGS0FLazZ3RWlDVVVOQUNBRktBS1U2d0ZGRFFBZ0NTZ0NCRUVCYXlJSElBVW9BdHpwQVNJS3JVS0hsYSt2bUxiZW01NS9ma0xKejlteThlVzY2aWVGUWhlSlFzL1cwNzdTeDZ2WlFuNUMrZlBkOFpuMm1hc1dmQ0kvUWlHSUlEK0ZRcy9XMDc3U3g2dlpRbjRpUDBJZGlDQS9oVUw1ODkzeG1mYVpxeForSWo5Q0lJZ2dQNFduY1NFR0lBa29BZ0FoRlFOQVFRQWhDQUpBSUJVZ0JrRUNkR29vQWdBaUNVVU5BQ0FKS0FJSVFRaEpEUUFnQ1NnQ0JDSVNLQUFBUWJmSXd1RitSdzBBSUJJb0FBUWhDQXNnQ0NBS1J3UkFJQVlnQjNGQkFXb2hCaUFJRFFFTEN5QUpSUTBBSUFVUUdDQUZRWDgyQXFEckFTQUZJQWsyQXBUckFTQUZJQVVvQXR6cEFTSUlOZ0tZNndFTUFRc2dCU2dDM09rQklRZ0xBa0FnQ0VVTkFDQUZLQUtZNndFZ0NFWU5BRUZnSVFrTUJnc0NRQ0FGS0FMZzZRRUVRQ0FGSUFVb0F1anFBU0lKUlRZQzdPb0JJQWtOQVNBRlF2bnEwTkRueWFIazRRQTNBNmpxQVNBRlFnQTNBNkRxQVNBRlFzL1cwNzdTeDZ2WlFqY0RtT29CSUFWQzF1dUM3dXI5aWZYZ0FEY0RrT29CSUFWQ0FEY0RpT29CSUNKQkFFRW9FQU1hREFFTElBVkJBRFlDN09vQkN5QUJJQjFxSVNVZ0JTQUZLUVBvNlFFZ0RxMThOd1BvNlFFZ0F5QU9heUVESUFJZ0Rtb2hBaUFkSVE0RFFDQUNJQU1nQkVFc2FoQWRJaFZCaUg5TEJFQWdGU0VKREFZTElBTkJBMnNpTlNBVlNRMEVJQUpCQTJvaEcwRnNJUWtDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUlzRGdNQ0FRQVZDeUFWUWYvL0Iwc05FeUFWUVFOSkRSSWdCU2tEeU9rQklUOENRQUpBSUJzdEFBQWlDVUVEY1NJYVFRRnJEZ01HQVFBSEN5QUZLQUtBNmdFTkFFRmlJUWtNRlFzZ0ZVRUZTUTBTSUJzb0FBQWhBd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRWlDVUVDYXc0Q0FRSUFDeUFKUVFCSElRY2dBMEVFZGtIL0IzRWhDMEVESVFZZ0EwRU9ka0gvQjNFTUFndEJCQ0VHSUFOQkJIWkIvLzhBY1NFTFFRRWhCeUFEUVJKMkRBRUxJQU5CQkhaQi8vOFBjU0lMUVlDQUNFc05FMEVCSVFkQkJTRUdJQUl0QUFkQkNuUWdBMEVXZG5JTElnZ2dCbW9pQ1NBVlN3MFNBa0FnQzBHQkJra05BQ0FGS0FLYzZ3RkZEUUJCQUNFREEwQWdBMEdEZ0FGTERRRWdBMEZBYXlFRERBQUxBQXNnQmlBYmFpRVBJQnBCQTBjTkJpQUZLQUlNSWdJdEFBRkJDSFFoQXlBSERRY2dBMFVOQ0NBRVFmQUFhaUFQSUFnUURTSURRWWgvU3cwSklBSkJCR29oQmlBTElCeHFJaEpCQTJzaENrRUFJQUl2QVFKclFSOXhJUWNnSENFREEwQWdCRUh3QUdvUUQwVWdBeUFLU1hFRVFDQURJQVlnQkNnQ2NDSUlJQVFvQW5RaUQzUWdCM1pCQW5ScUlnSXZBUUE3QUFBZ0F5QUNMUUFEYWlJRElBWWdDQ0FQSUFJdEFBSnFJZ2gwSUFkMlFRSjBhaUlDTHdFQU93QUFJQVFnQ0NBQ0xRQUNhallDZENBRElBSXRBQU5xSVFNTUFRVWdFa0VDYXlFSUEwQWdCRUh3QUdvUUR5RVBJQVFvQW5BaENpQUVLQUowSVFJZ0F5QUlTeUFQY2tVRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUNpOEJBRHNBQUNBRUlBSWdDaTBBQW1vMkFuUWdBeUFLTFFBRGFpRUREQUVMQ3dOQUlBTWdDRTBFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pRHk4QkFEc0FBQ0FESUE4dEFBTnFJUU1nQWlBUExRQUNhaUVDREFFTEN3SkFJQU1nRWs4TkFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUF5MEFBRG9BQUNBRExRQURRUUZHQkVBZ0FpQURMUUFDYWlFQ0RBRUxJQUpCSDBzTkFFRWdJQUlnQXkwQUFtb2lBaUFDUVNCUEd5RUNDMEZzUVd3Z0N5QUVLQUo0SUFRb0FueEhHeUFDUVNCSEd5RUREQXNMQUFzQUN5QUVLQUkwSWdJZ0pTQU9hMHNOQ2lBT1JRUkFRUUFoQ1NBQ0RRSU1EZ3NnRGlBYkxRQUFJQUlRQXhvZ0FpRUpEQXdMSUJVZ0pTQU9hMHNOQ1NBT0RRRkJBQ0VKSUJWRkRRd0xRYlovSVFrTUVRc2dEaUFiSUJVUUFob2dGU0VKREFvTElCd2dHd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRkJBV3NPQXdFQUFnQUxJQWxCQTNZaEEwRUJEQUlMSUJzdkFBQkJCSFloQTBFQ0RBRUxJQlZCQkVrTkRpQUNMd0FESUFJdEFBVkJFSFJ5SWdKQmo0Q0FBVXNORGlBQ1FRUjJJUU5CQXdzaUFtb3RBQUFnQTBFZ2FoQURJUWtnQlNBRE5nS0E2d0VnQlNBSk5nTHc2Z0VnQWtFQmFpRUpEQVVMSUJVQ2Z3SkFBa0FDUUNBSlFRSjJRUU54UVFGckRnTUJBQUlBQ3lBSlFRTjJJUU5CQVF3Q0N5QWJMd0FBUVFSMklRTkJBZ3dCQ3lBQ0x3QURJQUl0QUFWQkVIUnlRUVIySVFOQkF3c2lBaUFEYWlJSlFTQnFTUVJBSUFrZ0ZVc05EU0FjSUFJZ0cyb2dBeEFDSVFJZ0JTQUROZ0tBNndFZ0JTQUNOZ0x3NmdFZ0FpQURhaUlDUWdBM0FCZ2dBa0lBTndBUUlBSkNBRGNBQ0NBQ1FnQTNBQUFNQlFzZ0JTQUROZ0tBNndFZ0JTQUNJQnRxTmdMdzZnRU1CQXNnQjBVRVFDQWVJQThnQ0NBVUVCUWlBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRlNFRERBTUxJQXRGSUFoRmNnMExJQXRCQ0hZaUF5QUlJQXRKQkg4Z0NFRUVkQ0FMYmdWQkR3dEJHR3dpQWtHTUNHb29BZ0JzSUFKQmlBaHFLQUlBYWlJR1FRTjJJQVpxSUFKQmdBaHFLQUlBSUFKQmhBaHFLQUlBSUFOc2Fra0VRQ01BUVJCckloQWtBQ0FlS0FJQUlRTWdGRUh3QkdwQkFFSHNBQkFESVFaQlZDRUNBa0FnQTBIL0FYRWlERUVNU3cwQUFrQWdGRUhjQ1dvZ0JpQVFRUWhxSUJCQkRHb2dEeUFJSUJSQjNBdHFJaGNRQ3lJU1FZaC9TdzBBSUJBb0Fnd2lCaUFNU3cwQklCUkJxQVZxSVEwZ0ZFR2tCV29oTmlBZVFRUnFJUkVnQTBHQWdJQjRjU0UzSUFaQkFXb2lFeUVDSUFZaEF3TkFJQUlpQjBFQmF5RUNJQU1pQ2tFQmF5RURJQlFnQ2tFQ2RHb29BdkFFUlEwQUMwRUJJQWNnQjBFQlRSc2hGa0VBSVFkQkFTRUNBMEFnQWlBV1J3UkFJQlFnQWtFQ2RDSURhaWdDOEFRaEdDQURJQTFxSUFjMkFnQWdBa0VCYWlFQ0lBY2dHR29oQnd3QkN3c2dEU0FITmdJQVFRQWhBaUFRS0FJSUlRTURRQ0FDSUFOSEJFQWdEU0FDSUJScVFkd0phaTBBQUNJWVFRSjBhaUlaSUJrb0FnQWlHVUVCYWpZQ0FDQVVJQmxCQVhScUloa2dHRG9BM1FVZ0dTQUNPZ0RjQlNBQ1FRRnFJUUlNQVFzTFFRQWhBeUFOUVFBMkFnQWdEQ0FHUVg5emFpRUdRUUVoQWdOQUlBSWdGa2NFUUNBVUlBSkJBblJxSWcwZ0F6WUNBQ0FOS0FMd0JDQUNJQVpxZENBRGFpRURJQUpCQVdvaEFnd0JDd3NnRENBVElBcHJJZ1pyUVFGcUlRb2dCaUVEQTBBZ0F5QUtTUVJBSUJRZ0EwRTBiR29oRFVFQklRSURRQ0FDSUJaSEJFQWdEU0FDUVFKMEloaHFJQlFnR0dvb0FnQWdBM1kyQWdBZ0FrRUJhaUVDREFFTEN5QURRUUZxSVFNTUFRc0xJQmNnRkVFMEVBSWhPQ0FVUVpBTWFpRTVJQk1nREdzaE9pQVVRZHdGYWlFWFFRQWhDZ05BQWtBQ1FDQUhJQXBIQkVCQkFTQU1JQk1nRnlBS1FRRjBhaUlDTFFBQklnMXJJZ05ySWhoMElSa2dBaTBBQUNFV0lEZ2dEVUVDZEdvaUh5Z0NBQ0VDSUFZZ0dFMEVRQ0EyUVFFZ0F5QTZhaUlOSUExQkFVd2JJaUJCQW5RaUpHb29BZ0FoRFNBNUlCUWdBMEUwYkdwQk5CQUNJU0VnRFVFQmRDRW1JQkVnQWtFQ2RHb2hJeUFnUVFGTkRRSWdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVnSUNFZ0pHb29BZ0FoSkVFQUlRSURRQ0FDSUNSR0RRTWdJeUFDUVFKMGFpQWdOZ0VBSUFKQkFXb2hBZ3dBQ3dBTElBSWdBaUFaYWlJTklBSWdEVXNiSVEwZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRURBMEFnQWlBTlJnMERJQkVnQWtFQ2RHb2dBellCQUNBQ1FRRnFJUUlNQUFzQUN5QWVJQXhCRUhRZ04zSWdESEpCZ0FKeU5nSUFEQU1MSUFjZ0RXc2hKQ0FYSUNacUlTWkJBQ0VOQTBBZ0RTQWtSZzBCUVFFZ0dDQVRJQ1lnRFVFQmRHb2lKeTBBQVNJQ2F5STdhM1FpUENBaElBSkJBblJxSWlBb0FnQWlBbW9oUFNBRElEdHFRUkIwUVlDQS9BZHhJQ2N0QUFCQkNIUnlJQlp5UVlDQWdCQnlJU2NEUUNBaklBSkJBblJxSUNjMkFRQWdBa0VCYWlJQ0lEMUpEUUFMSUNBZ0lDZ0NBQ0E4YWpZQ0FDQU5RUUZxSVEwTUFBc0FDeUFmSUI4b0FnQWdHV28yQWdBZ0NrRUJhaUVLREFBTEFBc2dFaUVDQ3lBUVFSQnFKQUFnQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZpRUREQU1MSUI0Z0R5QUlJQlFRRkNJQ1FZaC9TeUFDSUFoUGNnMExJQndnQ3lBQ0lBOXFJQWdnQW1zZ0hoQVhJUU1NQWdzZ0F3UkFJQndnQ3lBUElBZ2dBaEFXSVFNTUFnc2dIQ0FMSUE4Z0NDQUNFQmNoQXd3QkN5QWNJQXNnRHlBSUlBSVFGU0VEQ3lBRFFZaC9TdzBJSUFVZ0N6WUNnT3NCSUFVZ0hEWUM4T29CSUFWQkFUWUNnT29CSUJwQkFrWUVRQ0FGSUI0MkFnd0xJQXNnSEdvaUFrSUFOd0FBSUFKQ0FEY0FHQ0FDUWdBM0FCQWdBa0lBTndBSUlBbEJpSDlMRFFvTElBa2dGVVlOQ0NBVklBbHJJUVlnQlNnQ25Pc0JJUW9DUUNBSklCdHFJZ010QUFBaUQwVUVRRUVCSVFKQkFDRVBRYmgvSVFrZ0JrRUJSZzBCREFzTEFuOGdBMEVCYWlBUHdDSUNRUUJPRFFBYUlBSkJmMFlFUUNBR1FRTklEUXNnQXk4QUFVR0EvZ0ZxSVE4Z0EwRURhZ3dCQ3lBR1FRSklEUW9nQXkwQUFTQVBRUWgwY2tHQWdBSnJJUThnQTBFQ2Fnc2hFa0c0ZnlFSklCSkJBV29pQWlBVklCdHFJZ2RMRFFvZ0xDQUZJQkl0QUFBaUVrRUdka0VqUVFrZ0FpQUhJQUpyUWNBUVFkQVJRZkFTSUFVb0FvVHFBU0FLSUE4Z0ZCQWhJZ2xCaUg5TERRZ2dLeUFvSUJKQkJIWkJBM0ZCSDBFSUlBSWdDV29pQWlBSElBSnJRWUFMUVlBTVFZQVhJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQ0VHSWYwc05DRUZzSVFrZ0tpQXRJQkpCQW5aQkEzRkJORUVKSUFJZ0NHb2lBaUFISUFKclFZQU5RZUFPUVpBWklBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlCMEdJZjBzTkNpQUNJQWRxSUFOcklnSWhDU0FDUVloL1N3MEtDeUFPSUE5QkFFeHlEUUVMUWJwL0lRa01DQXNnSlNBT2F5RUpJQVlnQW1zaEJpQUNJQU5xSVFjQ1FBSkFBa0FnQ2tVRVFDQVBRUWxJSUFVcEE4anBBVUtCZ0lBSVZISU5BaUFvS0FJQUlnSkJDR29oRWlBQ0tBSUVJUXBCQUNFRFFRQWhBZ05BSUFNZ0NuWkZCRUFnQWlBU0lBTkJBM1JxTFFBQ1FSWkxhaUVDSUFOQkFXb2hBd3dCQ3dzZ0JVRUFOZ0tjNndFZ0FrRUlJQXByZEVFVVR3MEJEQU1MSUFWQkFEWUNuT3NCQ3lBRUlBVW9BdkRxQVNJRE5nTGNBU0FKSUE1cUlSWWdBeUFGS0FLQTZ3RnFJUmNDUUNBUFJRUkFJQTRoQnd3QkN5QUZLQUs0NlFFaEdpQUZLQUswNlFFaEdDQUZLQUt3NlFFaEVpQUZRUUUyQW9UcUFVRUFJUU1EUUNBRFFRTkhCRUFnQkNBRFFRSjBJZ0pxSUFJZ0JXcEJyTkFCYWlnQ0FEWUNaQ0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRVGhxSWdJZ0J5QUdFQTFCaUg5TERRTkJDQ0FQSUE5QkNFNGJJUjhnTkNBQ0lBVW9BZ0FRSGlBeklBSWdCU2dDQ0JBZUlESWdBaUFGS0FJRUVCNGdEaUFTYXlFWlFRQWhDQU5BSUFSQk9Hb1FEMEVEUmlBSUlCOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnZEJFSFlpRVVIL0FYRWhDeUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWd4QkVIWWlJVUgvQVhFaEVDQUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFZZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDa0gvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJS2F5SU5JQUlnQWlBTlN4c2lFeUFLYWpZQ1BDQUdJQVFvQWpnZ0NuUkJBQ0FUYTNZZ0FpQVRheUlUZEdvaENpQUVRVGhxRUE4YUlBSWdEVTBOQVNBRUlBUW9BandpQWlBVGFqWUNQQ0FFS0FJNElBSjBRUUFnRTJ0MklBcHFJUW9NQVFzZ0JDQUNJQVFvQWp3aURXbzJBandnQkNnQ09DQU5kRUVBSUFwcmRpQUdhaUVLSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUFvMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQURCRUFnQkNnQ1pDRUtEQU1MSUFRb0FtZ2hDZ3dCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFZZ0EwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnWkZJQVpxSVFvZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQW8yQW1RTHB5RUNJRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUJCcU5nSThJQVFvQWpnZ0JuUkJBQ0FoYTNZZ0Ftb2hBZ3NnQ3lBUWFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lBdHFOZ0k4SUFRb0FqZ2dCblJCQUNBUmEzWWdBMm9oQXdzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQmtFQUlBZEJHSFlpQ3lBRUtBSThhaUlRYTNZZ0MwRUNkRUdnSFdvb0FnQnhJQWRCLy84RGNXbzJBa3dnQkNBUUlBeEJHSFlpQjJvaUN6WUNQQ0FFSUFkQkFuUkJvQjFxS0FJQUlBWkJBQ0FMYTNaeElBeEIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdaQkdIWWlCeUFFS0FJOGFpSUxOZ0k4SUFRZ0IwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBdHJkbkVnQmtILy93TnhhallDVkNBRVFmQUFhaUFJUVF4c2FpSUdJQW8yQWdnZ0JpQUNOZ0lFSUFZZ0F6WUNBQ0FJUVFGcUlRZ2dBeUFaYWlBQ2FpRVpEQUVMQ3lBSUlCOUlEUU1nRmtFZ2F5RWhJQTRoQndOQUlBUkJPR29RRDBFRFJpQUlJQTlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ1pCRUhZaUkwSC9BWEVoQ2lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklnMUJFSFlpSUVIL0FYRWhFeUFFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRTWdRVUlnaUNCQVFpQ0lweUVMQWtBZ1FrSVFpS2NpREVIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSU1heUlSSUFJZ0FpQVJTeHNpRUNBTWFqWUNQQ0FESUFRb0FqZ2dESFJCQUNBUWEzWWdBaUFRYXlJTWRHb2hFQ0FFUVRocUVBOGFJQUlnRVUwTkFTQUVJQVFvQWp3aUFpQU1hallDUENBRUtBSTRJQUowUVFBZ0RHdDJJQkJxSVJBTUFRc2dCQ0FDSUFRb0Fqd2lFR28yQWp3Z0JDZ0NPQ0FRZEVFQUlBeHJkaUFEYWlFUUlBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlCQTJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FMQkVBZ0JDZ0NaQ0VRREFNTElBUW9BbWdoRUF3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBTWdDMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ05GSUFOcUlSQWdBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUJBMkFtUUxweUVNSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lCTnFOZ0k4SUFRb0FqZ2dBblJCQUNBZ2EzWWdER29oREFzZ0NpQVRha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQXBxTmdJOElBUW9BamdnQW5SQkFDQWphM1lnQzJvaEN3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUFrRUFJQVpCR0hZaUF5QUVLQUk4YWlJS2EzWWdBMEVDZEVHZ0hXb29BZ0J4SUFaQi8vOERjV28yQWt3Z0JDQUtJQTFCR0hZaUEyb2lCallDUENBRUlBTkJBblJCb0IxcUtBSUFJQUpCQUNBR2EzWnhJQTFCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnSkJHSFlpQXlBRUtBSThhaUlHTmdJOElBUWdBMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQVpyZG5FZ0FrSC8vd054YWpZQ1ZBSkFBa0FDUUNBRUtBTGNBU0lESUFSQjhBQnFJQWhCQjNGQkRHeHFJaE1vQWdBaUVXb2lJeUFYU3cwQUlBY2dFeWdDQkNJTklCRnFJZ3BxSUNGTERRQWdDa0VnYWlBV0lBZHJUUTBCQ3lBRUlCTW9BZ2cyQWhnZ0JDQVRLUUlBTndNUUlBY2dGaUFFUVJCcUlBUkIzQUZxSUJjZ0VpQVlJQm9RSHlFS0RBRUxJQWNnRVdvaEFpQVRLQUlJSVFZZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNBSkFJQkZCRVVrTkFDQUhJQU1wQUJBM0FCQWdCeUFES1FBWU53QVlJQkZCRUd0QkVVZ05BQ0FEUVJCcUlRTWdCMEVnYWlFUkEwQWdFU0FES1FBUU53QUFJQkVnQXlrQUdEY0FDQ0FSSUFNcEFDQTNBQkFnRVNBREtRQW9Od0FZSUFOQklHb2hBeUFSUVNCcUloRWdBa2tOQUFzTElBSWdCbXNoQXlBRUlDTTJBdHdCSUFJZ0Vtc2dCa2tFUUNBR0lBSWdHR3RMRFFjZ0dpQWFJQU1nRW1zaUEyb2lFU0FOYWs4RVFDQUNJQkVnRFJBS0dnd0NDeUFESUExcUlRMGdBaUFSUVFBZ0Eyc1FDaUFEYXlFQ0lCSWhBd3NnQmtFUVR3UkFJQUlnQXlrQUFEY0FBQ0FDSUFNcEFBZzNBQWdnRFVFUlNBMEJJQUlnRFdvaEJpQUNRUkJxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQUdTUTBBQ3d3QkN3SkFJQVpCQjAwRVFDQUNJQU10QUFBNkFBQWdBaUFETFFBQk9nQUJJQUlnQXkwQUFqb0FBaUFDSUFNdEFBTTZBQU1nQWlBRElBWkJBblFpQmtIQUhtb29BZ0JxSWdNb0FBQTJBQVFnQXlBR1FlQWVhaWdDQUdzaEF3d0JDeUFDSUFNcEFBQTNBQUFMSUExQkNVa05BQ0FDSUExcUlSRWdBa0VJYWlJR0lBTkJDR29pQTJ0QkQwd0VRQU5BSUFZZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQmtFSWFpSUdJQkZKRFFBTUFnc0FDeUFHSUFNcEFBQTNBQUFnQmlBREtRQUlOd0FJSUExQkdVZ05BQ0FDUVJocUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFSU1EwQUN3c2dDa0dJZjBzRVFDQUtJUWtNQmdVZ0V5QVFOZ0lJSUJNZ0REWUNCQ0FUSUFzMkFnQWdDRUVCYWlFSUlBY2dDbW9oQnlBTElCbHFJQXhxSVJrTUFnc0FDd3NnQ0NBUFNBMERJQWdnSDJzaEJnTkFBa0FnQmlBUFRnUkFRUUFoQXdOQUlBTkJBMFlOQWlBRklBTkJBblFpQW1wQnJOQUJhaUFDSUFScUtBSmtOZ0lBSUFOQkFXb2hBd3dBQ3dBTEFrQUNRQUpBSUFRb0F0d0JJZ01nQkVId0FHb2dCa0VIY1VFTWJHb2lDQ2dDQUNJTWFpSVFJQmRMRFFBZ0J5QUlLQUlFSWdzZ0RHb2lDbW9nSVVzTkFDQUtRU0JxSUJZZ0IydE5EUUVMSUFRZ0NDZ0NDRFlDS0NBRUlBZ3BBZ0EzQXlBZ0J5QVdJQVJCSUdvZ0JFSGNBV29nRnlBU0lCZ2dHaEFmSVFvTUFRc2dCeUFNYWlFQ0lBZ29BZ2doQ0NBSElBTXBBQUEzQUFBZ0J5QURLUUFJTndBSUFrQWdERUVSU1EwQUlBY2dBeWtBRURjQUVDQUhJQU1wQUJnM0FCZ2dERUVRYTBFUlNBMEFJQU5CRUdvaEF5QUhRU0JxSVF3RFFDQU1JQU1wQUJBM0FBQWdEQ0FES1FBWU53QUlJQXdnQXlrQUlEY0FFQ0FNSUFNcEFDZzNBQmdnQTBFZ2FpRURJQXhCSUdvaURDQUNTUTBBQ3dzZ0FpQUlheUVESUFRZ0VEWUMzQUVnQWlBU2F5QUlTUVJBSUFnZ0FpQVlhMHNOQnlBYUlCb2dBeUFTYXlJRGFpSU1JQXRxVHdSQUlBSWdEQ0FMRUFvYURBSUxJQU1nQzJvaEN5QUNJQXhCQUNBRGF4QUtJQU5ySVFJZ0VpRURDeUFJUVJCUEJFQWdBaUFES1FBQU53QUFJQUlnQXlrQUNEY0FDQ0FMUVJGSURRRWdBaUFMYWlFSUlBSkJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBSWdBeTBBQURvQUFDQUNJQU10QUFFNkFBRWdBaUFETFFBQ09nQUNJQUlnQXkwQUF6b0FBeUFDSUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQUlnQXlrQUFEY0FBQXNnQzBFSlNRMEFJQUlnQzJvaERDQUNRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dERWtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQzBFWlNBMEFJQUpCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXhKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdHQlNBR1FRRnFJUVlnQnlBS2FpRUhEQUlMQUFzTElBUW9BdHdCSVFNTFFicC9JUWtnRnlBRGF5SUNJQllnQjJ0TERRSWdCd1IvSUFjZ0F5QUNFQUlnQW1vRlFRQUxJQTVySVFrTUFnc2dCVUVBTmdLYzZ3RUxJQVFnQlNnQzhPb0JJZ00yQXR3QklBa2dEbW9oRENBRElBVW9Bb0RyQVdvaEVBSkFJQTlGQkVBZ0RpRUdEQUVMSUFVb0FyanBBU0VOSUFVb0FyVHBBU0VUSUFVb0FyRHBBU0VTSUFWQkFUWUNoT29CUVFBaEF3TkFJQU5CQTBjRVFDQUVJQU5CQW5RaUFtb2dBaUFGYWtHczBBRnFLQUlBTmdLY0FTQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFmQUFhaUlDSUFjZ0JoQU5RWWgvU3cwQklERWdBaUFGS0FJQUVCNGdNQ0FDSUFVb0FnZ1FIaUF2SUFJZ0JTZ0NCQkFlSUF4QklHc2hHQ0FPSVFZRFFDQUVLQUtJQVNBRUtBS0VBVUVEZEdvcEFnQWlRS2NpQ2tFUWRpSVpRZjhCY1NFTElBUW9BcGdCSUFRb0FwUUJRUU4wYWlrQ0FDSkJweUlXUVJCMkloOUIvd0Z4SVJvZ0JDZ0NrQUVnQkNnQ2pBRkJBM1JxS1FJQUlrSkNJSWluSVFjZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDRUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDZENJSWF5SVJJQUlnQWlBUlN4c2lGeUFJYWpZQ2RDQUhJQVFvQW5BZ0NIUkJBQ0FYYTNZZ0FpQVhheUlYZEdvaENDQUVRZkFBYWhBUEdpQUNJQkZORFFFZ0JDQUVLQUowSWdJZ0YybzJBblFnQkNnQ2NDQUNkRUVBSUJkcmRpQUlhaUVJREFFTElBUWdBaUFFS0FKMEloRnFOZ0owSUFRb0FuQWdFWFJCQUNBSWEzWWdCMm9oQ0NBRVFmQUFhaEFQR2dzZ0JDa0NuQUVoUkNBRUlBZzJBcHdCSUFRZ1JEY0NvQUVNQVFzQ1FDQUNSUVJBSUFNRVFDQUVLQUtjQVNFSURBTUxJQVFvQXFBQklRZ01BUXNnQkNBRUtBSjBJZ0pCQVdvMkFuUUNmeUFISUFORmFpQUVLQUp3SUFKMFFSOTJhaUlDUVFOR0JFQWdCQ2dDbkFGQkFXc01BUXNnQWtFQ2RDQUVhaWdDbkFFTElnZEZJQWRxSVFnZ0FrRUJSd1JBSUFRZ0JDZ0NvQUUyQXFRQkN3c2dCQ0FFS0FLY0FUWUNvQUVnQkNBSU5nS2NBUXVuSVFJZ1FVS0FnUHdIZzFCRkJFQWdCQ0FFS0FKMElnY2dHbW8yQW5RZ0JDZ0NjQ0FIZEVFQUlCOXJkaUFDYWlFQ0N5QUxJQnBxUVJSUEJFQWdCRUh3QUdvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NkQ0lISUF0cU5nSjBJQVFvQW5BZ0IzUkJBQ0FaYTNZZ0Eyb2hBd3NnQkVId0FHb1FEeG9nQkNBRUtBSndJZ2RCQUNBS1FSaDJJZ3NnQkNnQ2RHb2lHbXQySUF0QkFuUkJvQjFxS0FJQWNTQUtRZi8vQTNGcU5nS0VBU0FFSUJvZ0ZrRVlkaUlLYWlJTE5nSjBJQVFnQ2tFQ2RFR2dIV29vQWdBZ0IwRUFJQXRyZG5FZ0ZrSC8vd054YWpZQ2xBRWdCRUh3QUdvUUR4b2dCQ0JDcHlJSFFSaDJJZ29nQkNnQ2RHb2lDellDZENBRUlBcEJBblJCb0IxcUtBSUFJQVFvQW5CQkFDQUxhM1p4SUFkQi8vOERjV28yQW93QklBUWdBellDT0NBRUlBSTJBandnQkNBSU5nSkFBa0FDUUFKQUlBUW9BdHdCSWdzZ0Eyb2lGaUFRU3cwQUlBWWdBaUFEYWlJS2FpQVlTdzBBSUFwQklHb2dEQ0FHYTAwTkFRc2dCQ0FFUVVCcktBSUFOZ0lJSUFRZ0JDa0RPRGNEQUNBR0lBd2dCQ0FFUWR3QmFpQVFJQklnRXlBTkVCOGhDZ3dCQ3lBRElBWnFJUWNnQmlBTEtRQUFOd0FBSUFZZ0N5a0FDRGNBQ0FKQUlBTkJFVWtOQUNBR0lBc3BBQkEzQUJBZ0JpQUxLUUFZTndBWUlBTkJFR3RCRVVnTkFDQUxRUkJxSVFNZ0JrRWdhaUVMQTBBZ0N5QURLUUFRTndBQUlBc2dBeWtBR0RjQUNDQUxJQU1wQUNBM0FCQWdDeUFES1FBb053QVlJQU5CSUdvaEF5QUxRU0JxSWdzZ0Iwa05BQXNMSUFjZ0NHc2hBeUFFSUJZMkF0d0JJQWNnRW1zZ0NFa0VRQ0FJSUFjZ0UydExEUVFnRFNBTklBTWdFbXNpQTJvaUN5QUNhazhFUUNBSElBc2dBaEFLR2d3Q0N5QUhJQXRCQUNBRGF4QUtJQVFnQWlBRGFpSUNOZ0k4SUFOcklRY2dFaUVEQ3lBSVFSQlBCRUFnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0NBQ1FSRklEUUVnQWlBSGFpRUlJQWRCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQWNnQXkwQUFEb0FBQ0FISUFNdEFBRTZBQUVnQnlBRExRQUNPZ0FDSUFjZ0F5MEFBem9BQXlBSElBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFjZ0F5a0FBRGNBQUFzZ0FrRUpTUTBBSUFJZ0Iyb2hDeUFIUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnQzBrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0FrRVpTQTBBSUFkQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF0SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3REN5QUdJQXBxSVFZZ0JFSHdBR29RRHlFRElBOUJBV3NpRHcwQUMwRUFJUUlnQTBFQ1NRMEJBMEFnQWtFRFJ3UkFJQVVnQWtFQ2RDSURha0dzMEFGcUlBTWdCR29vQXB3Qk5nSUFJQUpCQVdvaEFnd0JDd3NnQkNnQzNBRWhBd3RCdW44aENTQVFJQU5ySWdJZ0RDQUdhMHNOQUNBR0JIOGdCaUFESUFJUUFpQUNhZ1ZCQUFzZ0Rtc2hDUXNnQ1VHSWYwc05CZ3NDUUNBRktBTHM2Z0ZGRFFBZ0JTQUZLUU9JNmdFZ0NhMThOd09JNmdFQ1FDQUZLQUxRNmdFaUFpQUphaUlJUVI5TkJFQWdEa1VOQVNBQ0lDSnFJQTRnQ1JBQ0dpQUZLQUxRNmdFZ0NXb2hDQXdCQ3lBT0lRTWdBZ1JBSUFJZ0ltb2dBMEVnSUFKckVBSWFJQVVvQXREcUFTRUNJQVZCQURZQzBPb0JJQVVnQlNrRGtPb0JJQVVwQUxEcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RrT29CSUFVZ0JTa0RtT29CSUFVcEFManFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEbU9vQklBVWdCU2tEb09vQklBVXBBTURxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG9Pb0JJQVVnQlNrRHFPb0JJQVVwQU1qcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RxT29CSUFNZ0FtdEJJR29oQXdzZ0NTQU9haUlDSUFOQklHcFBCRUFnQWtFZ2F5RUdJQVVwQTZqcUFTRS9JQVVwQTZEcUFTRkFJQVVwQTVqcUFTRkJJQVVwQTVEcUFTRkNBMEFnQXlrQUdFTFAxdE8rMHNlcjJVSitJRDk4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVDhnQXlrQUVFTFAxdE8rMHNlcjJVSitJRUI4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUFnQXlrQUNFTFAxdE8rMHNlcjJVSitJRUY4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUVnQXlrQUFFTFAxdE8rMHNlcjJVSitJRUo4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUlnQTBFZ2FpSURJQVpORFFBTElBVWdQemNEcU9vQklBVWdRRGNEb09vQklBVWdRVGNEbU9vQklBVWdRamNEa09vQkN5QUNJQU5ORFFFZ0lpQURJQUlnQTJzaUNCQUNHZ3NnQlNBSU5nTFE2Z0VMSURVZ0ZXc2hBeUFWSUJ0cUlRSWdDU0FPYWlFT0lBUW9BakJGRFFBTElDa3BBd0FpUDBKL1VTQS9JQTRnSFd1c1VYSkZCRUJCYkNFSkRBWUxJQVVvQXVEcEFRUkFRV29oQ1NBRFFRUkpEUVlnQlNnQzZPb0JSUVJBSUNJZ0JTZ0MwT29CYWlFS0FuNGdCU2tEaU9vQklqOUNJRm9FUUNBRktRT1k2Z0VpUUVJSGlTQUZLUU9RNmdFaVFVSUJpWHdnQlNrRG9Pb0JJa0pDRElsOElBVXBBNmpxQVNKRFFoS0pmQ0JCUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJRUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIMGdRa0xQMXRPKzBzZXIyVUorUWgrSlFvZVZyNitZdHQ2Ym5uOStoVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTQkRRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOURBRUxJQVVwQTZEcUFVTEZ6OW15OGVXNjZpZDhDeUEvZkNFL0lDSWhCZ05BSUFvZ0JrRUlhaUlIVHdSQUlBWXBBQUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9maUEvaFVJYmlVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNFL0lBY2hCZ3dCQ3dzQ1FDQUtJQVpCQkdvaUNFa0VRQ0FHSVFnTUFRc2dCalVBQUVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUlYaVVMUDF0Tyswc2VyMlVKK1F2bnozZkdaOXBtckZud2hQd3NEUUNBSUlBcEpCRUFnQ0RFQUFFTEZ6OW15OGVXNjZpZCtJRCtGUWd1SlFvZVZyNitZdHQ2Ym5uOStJVDhnQ0VFQmFpRUlEQUVMQ3lBQ0tBQUFJRDlDSVlnZ1A0VkN6OWJUdnRMSHE5bENmaUkvUWgySUlEK0ZRdm56M2ZHWjlwbXJGbjRpUDBJZ2lDQS9oYWRIRFFjTElBTkJCR3NoQXlBQ1FRUnFJUUlMSUE0Z0hXc2lDVUdKZjA4TkJDQUJJQWxySVFFZ0NTQWRhaUVkUVFFaFBnd0JDd3RCdUg4aEJ5QUREUVFnSFNBQWF5RUhEQVFMUVd3aENRd0JDMEc0ZnlFSkMwRzRmeUVISUFsQmRrWWdQbkVOQVFzZ0NTRUhDeWdDQUEwQUlBVkIvT29CYWlnQ0FDRUJJQVZCK09vQmFpZ0NBQ0VBSUFVUUdDQUZLQUt3NndFZ0FDQUJFQk1nQlVFQU5nS3c2d0VnQlNnQ3BPc0JJZ0lFUUFKQUFrQUNRQUpBSUFJb0FnQWlBd1JBSUFCRkRRSWdBU0FESUFBUkFnQU1BUXNnQUVVTkFnc2dBU0FDSUFBUkFnQU1BZ3NnQXhBR0N5QUNFQVlMSUFWQkFEWUNwT3NCQ3lBQUJFQWdBU0FGSUFBUkFnQU1BUXNnQlJBR0N5QUVRZUFCYWlRQUlBY0xDNmdWQ1FCQmlBZ0xEUUVBQUFBQkFBQUFBZ0FBQUFJQVFhQUlDN01HQVFBQUFBRUFBQUFDQUFBQUFnQUFBQ1lBQUFDQ0FBQUFJUVVBQUVvQUFBQm5DQUFBSmdBQUFNQUJBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFLUUFBQUN3Q0FBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUx3QUFBTW9DQUFDQUFBQUFpZ1VBQUVvQUFBQ0VDUUFBTlFBQUFITURBQUNBQUFBQW5RVUFBRW9BQUFDZ0NRQUFQUUFBQUlFREFBQ0FBQUFBNndVQUFFc0FBQUErQ2dBQVJBQUFBSjREQUFDQUFBQUFUUVlBQUVzQUFBQ3FDZ0FBU3dBQUFMTURBQUNBQUFBQXdRWUFBRTBBQUFBZkRRQUFUUUFBQUZNRUFBQ0FBQUFBSXdnQUFGRUFBQUNtRHdBQVZBQUFBSmtFQUFDQUFBQUFTd2tBQUZjQUFBQ3hFZ0FBV0FBQUFOb0VBQUNBQUFBQWJ3a0FBRjBBQUFBakZBQUFWQUFBQUVVRkFBQ0FBQUFBVkFvQUFHb0FBQUNNRkFBQWFnQUFBSzhGQUFDQUFBQUFkZ2tBQUh3QUFBQk9FQUFBZkFBQUFOSUNBQUNBQUFBQVl3Y0FBSkVBQUFDUUJ3QUFrZ0FBQUFBQUFBQUJBQUFBQVFBQUFBVUFBQUFOQUFBQUhRQUFBRDBBQUFCOUFBQUEvUUFBQVAwQkFBRDlBd0FBL1FjQUFQMFBBQUQ5SHdBQS9UOEFBUDEvQUFEOS93QUEvZjhCQVAzL0F3RDkvd2NBL2Y4UEFQMy9Id0Q5L3o4QS9mOS9BUDMvL3dEOS8vOEIvZi8vQS8zLy93ZjkvLzhQL2YvL0gvMy8vei85Ly85L0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQURBQUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBbEFBQUFKd0FBQUNrQUFBQXJBQUFBTHdBQUFETUFBQUE3QUFBQVF3QUFBRk1BQUFCakFBQUFnd0FBQUFNQkFBQURBZ0FBQXdRQUFBTUlBQUFERUFBQUF5QUFBQU5BQUFBRGdBQUFBd0FCQUVIZ0R3dFJBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCQUFBQUFVQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBRUhFRUF1TEFRRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVNBQUFBRkFBQUFCWUFBQUFZQUFBQUhBQUFBQ0FBQUFBb0FBQUFNQUFBQUVBQUFBQ0FBQUFBQUFFQUFBQUNBQUFBQkFBQUFBZ0FBQUFRQUFBQUlBQUFBRUFBQUFDQUFBQUFBQUVBUVpBU0MrWUVBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQUJBQUFBQkFBQUFBZ0FBQUFBQUFBQUFRQUJBUVlBQUFBQUFBQUVBQUFBQUJBQUFBUUFBQUFBSUFBQUJRRUFBQUFBQUFBRkF3QUFBQUFBQUFVRUFBQUFBQUFBQlFZQUFBQUFBQUFGQndBQUFBQUFBQVVKQUFBQUFBQUFCUW9BQUFBQUFBQUZEQUFBQUFBQUFBWU9BQUFBQUFBQkJSQUFBQUFBQUFFRkZBQUFBQUFBQVFVV0FBQUFBQUFDQlJ3QUFBQUFBQU1GSUFBQUFBQUFCQVV3QUFBQUlBQUdCVUFBQUFBQUFBY0ZnQUFBQUFBQUNBWUFBUUFBQUFBS0JnQUVBQUFBQUF3R0FCQUFBQ0FBQUFRQUFBQUFBQUFBQkFFQUFBQUFBQUFGQWdBQUFDQUFBQVVFQUFBQUFBQUFCUVVBQUFBZ0FBQUZCd0FBQUFBQUFBVUlBQUFBSUFBQUJRb0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFJQUFCQlJBQUFBQUFBQUVGRWdBQUFDQUFBUVVXQUFBQUFBQUNCUmdBQUFBZ0FBTUZJQUFBQUFBQUF3VW9BQUFBQUFBR0JFQUFBQUFRQUFZRVFBQUFBQ0FBQndXQUFBQUFBQUFKQmdBQ0FBQUFBQXNHQUFnQUFEQUFBQVFBQUFBQUVBQUFCQUVBQUFBZ0FBQUZBZ0FBQUNBQUFBVURBQUFBSUFBQUJRVUFBQUFnQUFBRkJnQUFBQ0FBQUFVSUFBQUFJQUFBQlFrQUFBQWdBQUFGQ3dBQUFDQUFBQVVNQUFBQUFBQUFCZzhBQUFBZ0FBRUZFZ0FBQUNBQUFRVVVBQUFBSUFBQ0JSZ0FBQUFnQUFJRkhBQUFBQ0FBQXdVb0FBQUFJQUFFQlRBQUFBQUFBQkFHQUFBQkFBQUFEd1lBZ0FBQUFBQU9CZ0JBQUFBQUFBMEdBQ0FBUVlBWEM0Y0NBUUFCQVFVQUFBQUFBQUFGQUFBQUFBQUFCZ1E5QUFBQUFBQUpCZjBCQUFBQUFBOEYvWDhBQUFBQUZRWDkveDhBQUFBREJRVUFBQUFBQUFjRWZRQUFBQUFBREFYOUR3QUFBQUFTQmYzL0F3QUFBQmNGL2Y5L0FBQUFCUVVkQUFBQUFBQUlCUDBBQUFBQUFBNEYvVDhBQUFBQUZBWDkvdzhBQUFBQ0JRRUFBQUFRQUFjRWZRQUFBQUFBQ3dYOUJ3QUFBQUFSQmYzL0FRQUFBQllGL2Y4L0FBQUFCQVVOQUFBQUVBQUlCUDBBQUFBQUFBMEYvUjhBQUFBQUV3WDkvd2NBQUFBQkJRRUFBQUFRQUFZRVBRQUFBQUFBQ2dYOUF3QUFBQUFRQmYzL0FBQUFBQndGL2YvL0R3QUFHd1g5Ly84SEFBQWFCZjMvL3dNQUFCa0YvZi8vQVFBQUdBWDkvLzhBUVpBWkM0WUVBUUFCQVFZQUFBQUFBQUFHQXdBQUFBQUFBQVFFQUFBQUlBQUFCUVVBQUFBQUFBQUZCZ0FBQUFBQUFBVUlBQUFBQUFBQUJRa0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFBQUFBQmhBQUFBQUFBQUFHRXdBQUFBQUFBQVlXQUFBQUFBQUFCaGtBQUFBQUFBQUdIQUFBQUFBQUFBWWZBQUFBQUFBQUJpSUFBQUFBQUFFR0pRQUFBQUFBQVFZcEFBQUFBQUFDQmk4QUFBQUFBQU1HT3dBQUFBQUFCQVpUQUFBQUFBQUhCb01BQUFBQUFBa0dBd0lBQUJBQUFBUUVBQUFBQUFBQUJBVUFBQUFnQUFBRkJnQUFBQUFBQUFVSEFBQUFJQUFBQlFrQUFBQUFBQUFGQ2dBQUFBQUFBQVlNQUFBQUFBQUFCZzhBQUFBQUFBQUdFZ0FBQUFBQUFBWVZBQUFBQUFBQUJoZ0FBQUFBQUFBR0d3QUFBQUFBQUFZZUFBQUFBQUFBQmlFQUFBQUFBQUVHSXdBQUFBQUFBUVluQUFBQUFBQUNCaXNBQUFBQUFBTUdNd0FBQUFBQUJBWkRBQUFBQUFBRkJtTUFBQUFBQUFnR0F3RUFBQ0FBQUFRRUFBQUFNQUFBQkFRQUFBQVFBQUFFQlFBQUFDQUFBQVVIQUFBQUlBQUFCUWdBQUFBZ0FBQUZDZ0FBQUNBQUFBVUxBQUFBQUFBQUJnNEFBQUFBQUFBR0VRQUFBQUFBQUFZVUFBQUFBQUFBQmhjQUFBQUFBQUFHR2dBQUFBQUFBQVlkQUFBQUFBQUFCaUFBQUFBQUFCQUdBd0FCQUFBQUR3WURnQUFBQUFBT0JnTkFBQUFBQUEwR0F5QUFBQUFBREFZREVBQUFBQUFMQmdNSUFBQUFBQW9HQXdRQVFhUWRDOWtCQVFBQUFBTUFBQUFIQUFBQUR3QUFBQjhBQUFBL0FBQUFmd0FBQVA4QUFBRC9BUUFBL3dNQUFQOEhBQUQvRHdBQS94OEFBUDgvQUFEL2Z3QUEvLzhBQVAvL0FRRC8vd01BLy84SEFQLy9Ed0QvL3g4QS8vOC9BUC8vZndELy8vOEEvLy8vQWYvLy93UC8vLzhILy8vL0QvLy8veC8vLy84Ly8vLy9md0FBQUFBQkFBQUFBZ0FBQUFRQUFBQUFBQUFBQWdBQUFBUUFBQUFJQUFBQUFBQUFBQUVBQUFBQ0FBQUFBUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dCQmdCOExBNEFSQVE9PSI7dmFyIEh0PW5ldyBWQSxxdD0hMTthc3luYyBmdW5jdGlvbiBZcihBLGUsdCl7bGV0IEk9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9JPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9JPUE6ST10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxJLmVuZHNXaXRoKCIuanMiKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC0zKSksSS5lbmRzV2l0aCgiLndhc20iKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC01KSksSS5lbmRzV2l0aCgiLndhc20uenN0IikmJihJPUkuc3Vic3RyaW5nKDAsSS5sZW5ndGgtOSkpO2xldCByPWAke0l9Lndhc21gLGk9YXdhaXQgbkEuZ2V0KGAke3J9LnpzdGAse3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSk7cXR8fChhd2FpdCBIdC5pbml0KCkscXQ9ITApO2xldCBzPUh0LmRlY29kZShuZXcgVWludDhBcnJheShpLmRhdGEpKS5idWZmZXI7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtJfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5OnN9KX12YXIgS3Q9WXI7dmFyIE90PWFzeW5jKCk9PldlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDUsMSw5NiwwLDEsMTIzLDMsMiwxLDAsMTAsMTAsMSw4LDAsNjUsMCwyNTMsMTUsMjUzLDk4LDExXSkpO3ZhciBQdD10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixUdD1uZXcgVGV4dEVuY29kZXIseHQ9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIE1yKEEsZSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sST1BLmZzX29wZW4oZSx0LmZsYWdzKSxpPUEuZnNfc3RhdChlKS5zaXplLGc9bnVsbDtQdD9nPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihpKTpnPW5ldyBBcnJheUJ1ZmZlcihpKTtsZXQgcz1uZXcgVWludDhBcnJheShnKTtyZXR1cm4gQS5mc19yZWFkKEkscywwLGksMCksQS5mc19jbG9zZShJKSxzfWZ1bmN0aW9uIFd0KEEsZSx0KXtsZXQgST1udWxsO1B0P0k9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOkk9bmV3IEFycmF5QnVmZmVyKHQpO2xldCByPW5ldyBVaW50OEFycmF5KEkpLGk9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGUsdCk7cmV0dXJuIHIuc2V0KGkpLHJ9ZnVuY3Rpb24gdyhBLGUsdCxJKXtsZXQgcj0wO3JldHVybiBlIT09bnVsbCYmKHI9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxJLGUuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpLHIpKSxyfWZ1bmN0aW9uIHYoQSxlLHQpe2xldCBJPUpTT04uc3RyaW5naWZ5KGUpLHI9QS5sZW5ndGhCeXRlc1VURjgoSSkrMSxpPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyXSk7QS5zdHJpbmdUb1VURjgoSSxpLHIpfWZ1bmN0aW9uIFMoQSxlLHQsSSl7bGV0IHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxnPVd0KEEscixpKTtyZXR1cm4gSChJLGcuYnVmZmVyKX1mdW5jdGlvbiBtQShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLEk9QS5VVEY4VG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2UoSSl9ZnVuY3Rpb24gSHIoQSxlLHQsSSl7SSE9bnVsbCYmSS5sZW5ndGg+MCYmSS5mb3JFYWNoKGZ1bmN0aW9uKEMsbyl7c3dpdGNoKEMudHlwZSl7Y2FzZSBkLlRleHRTdHJlYW06e2xldCBhPVR0LmVuY29kZShDLmRhdGEuZGF0YSksYz13KEEsYSxvLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTt2KEEsQixvKTticmVha31jYXNlIGQuSnNvbkNvbXBhdGlibGU6e2xldCBhPVR0LmVuY29kZShKU09OLnN0cmluZ2lmeShDLmRhdGEpKSxjPXcoQSxhLG8sMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O3YoQSxCLG8pO2JyZWFrfWNhc2UgZC5CaW5hcnlTdHJlYW06e2xldCBhPUMuZGF0YS5kYXRhLGM9dyhBLGEsbywwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07dihBLEIsbyk7YnJlYWt9Y2FzZSBkLlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShDLmRhdGEucGF0aCxDLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBkLkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKEMuZGF0YS5wYXRoLEMuZGF0YS5kYXRhKTticmVha31jYXNlIGQuSW1hZ2U6e2xldCBhPUMuZGF0YSxjPXcoQSxhLmRhdGEsbywwKSxCPXcoQSxhLmRpcmVjdGlvbixvLDEpLFE9dHlwZW9mIGEubWV0YWRhdGE/LmVudHJpZXM8InUiP0FycmF5LmZyb20oYS5tZXRhZGF0YS5lbnRyaWVzKCkpOltdLGY9e2ltYWdlVHlwZTphLmltYWdlVHlwZSxuYW1lOmEubmFtZSxvcmlnaW46YS5vcmlnaW4sc3BhY2luZzphLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLHNpemU6YS5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsbWV0YWRhdGE6UX07dihBLGYsbyk7YnJlYWt9Y2FzZSBkLk1lc2g6e2xldCBhPUMuZGF0YSxjPXcoQSxhLnBvaW50cyxvLDApLEI9dyhBLGEuY2VsbHMsbywxKSxRPXcoQSxhLnBvaW50RGF0YSxvLDIpLGY9dyhBLGEuY2VsbERhdGEsbywzKSxsPXttZXNoVHlwZTphLm1lc2hUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mQ2VsbHM6YS5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLGNlbGxCdWZmZXJTaXplOmEuY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczphLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLG51bWJlck9mQ2VsbFBpeGVsczphLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07dihBLGwsbyk7YnJlYWt9Y2FzZSBkLlBvaW50U2V0OntsZXQgYT1DLmRhdGEsYz13KEEsYS5wb2ludHMsbywwKSxCPXcoQSxhLnBvaW50RGF0YSxvLDEpLFE9e3BvaW50U2V0VHlwZTphLnBvaW50U2V0VHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWB9O3YoQSxRLG8pO2JyZWFrfWNhc2UgZC5UcmFuc2Zvcm1MaXN0OntsZXQgYT1DLmRhdGEsYz1bXSxCPTA7YS5mb3JFYWNoKFE9PntsZXQgZj0iIixsPSIiO1EudHJhbnNmb3JtVHlwZS50cmFuc2Zvcm1QYXJhbWV0ZXJpemF0aW9uIT09IkNvbXBvc2l0ZSImJihmPWBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dyhBLFEuZml4ZWRQYXJhbWV0ZXJzLG8sQil9YCxCKz0xLGw9YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt3KEEsUS5wYXJhbWV0ZXJzLG8sQil9YCxCKz0xKTtsZXQgcD17dHJhbnNmb3JtVHlwZTpRLnRyYW5zZm9ybVR5cGUsbnVtYmVyT2ZGaXhlZFBhcmFtZXRlcnM6US5udW1iZXJPZkZpeGVkUGFyYW1ldGVycyxudW1iZXJPZlBhcmFtZXRlcnM6US5udW1iZXJPZlBhcmFtZXRlcnMsbmFtZTpRLm5hbWUsaW5wdXRTcGFjZU5hbWU6US5pbnB1dFNwYWNlTmFtZSxvdXRwdXRTcGFjZU5hbWU6US5vdXRwdXRTcGFjZU5hbWUscGFyYW1ldGVyczpsLGZpeGVkUGFyYW1ldGVyczpmfTtjLnB1c2gocCl9KSx2KEEsYyxvKTticmVha31jYXNlIGQuUG9seURhdGE6e2xldCBhPUMuZGF0YSxjPXcoQSxhLnBvaW50cyxvLDApLEI9dyhBLGEudmVydGljZXMsbywxKSxRPXcoQSxhLmxpbmVzLG8sMiksZj13KEEsYS5wb2x5Z29ucyxvLDMpLGw9dyhBLGEudHJpYW5nbGVTdHJpcHMsbyw0KSxwPXcoQSxhLnBvaW50RGF0YSxvLDUpLEY9dyhBLGEucG9pbnREYXRhLG8sNiksRD17cG9seURhdGFUeXBlOmEucG9seURhdGFUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHZlcnRpY2VzQnVmZmVyU2l6ZTphLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxsaW5lc0J1ZmZlclNpemU6YS5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAscG9seWdvbnNCdWZmZXJTaXplOmEucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTphLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Rn1gfTt2KEEsRCxvKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgcj1BLnN0YWNrU2F2ZSgpLGk9MDt0cnl7aT1BLmNhbGxNYWluKGUuc2xpY2UoKSl9Y2F0Y2goQyl7dGhyb3cgdHlwZW9mIEM9PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UoQykpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksQ31maW5hbGx5e0Euc3RhY2tSZXN0b3JlKHIpfWxldCBnPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLEU9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJmk9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24oQyxvKXtsZXQgYT1udWxsO3N3aXRjaChDLnR5cGUpe2Nhc2UgZC5UZXh0U3RyZWFtOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxvLDBdKSxRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLG8sMF0pLGY9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsUSk7YT17ZGF0YTp4dC5kZWNvZGUoZil9O2JyZWFrfWNhc2UgZC5Kc29uQ29tcGF0aWJsZTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsbywwXSksUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxvLDBdKSxmPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixCLFEpO2E9SlNPTi5wYXJzZSh4dC5kZWNvZGUoZikpO2JyZWFrfWNhc2UgZC5CaW5hcnlTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLG8sMF0pLFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsbywwXSk7YT17ZGF0YTpXdChBLEIsUSl9O2JyZWFrfWNhc2UgZC5UZXh0RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUoQy5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIGQuQmluYXJ5RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOk1yKEEsQy5kYXRhLnBhdGgpfTticmVha31jYXNlIGQuSW1hZ2U6e2xldCBCPW1BKEEsbyk7Qi5kYXRhPVMoQSxvLDAsQi5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksQi5kaXJlY3Rpb249UyhBLG8sMSxYLkZsb2F0NjQpLEIubWV0YWRhdGE9bmV3IE1hcChCLm1ldGFkYXRhKSxhPUI7YnJlYWt9Y2FzZSBkLk1lc2g6e2xldCBCPW1BKEEsbyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxvLDAsQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOkIucG9pbnRzPUgoQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbHM+MD9CLmNlbGxzPVMoQSxvLDEsQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6Qi5jZWxscz1IKEIubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1TKEEsbywyLEIubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUgoQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1TKEEsbywzLEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1IKEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31jYXNlIGQuUG9pbnRTZXQ6e2xldCBCPW1BKEEsbyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxvLDAsQi5wb2ludFNldFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpCLnBvaW50cz1IKEIucG9pbnRTZXRUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVMoQSxvLDEsQi5wb2ludFNldFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUgoQi5wb2ludFNldFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxhPUI7YnJlYWt9Y2FzZSBkLlRyYW5zZm9ybUxpc3Q6e2xldCBCPW1BKEEsbyksUT0wO0IuZm9yRWFjaCgoZixsKT0+e2YudHJhbnNmb3JtVHlwZS50cmFuc2Zvcm1QYXJhbWV0ZXJpemF0aW9uIT09IkNvbXBvc2l0ZSImJihmLm51bWJlck9mRml4ZWRQYXJhbWV0ZXJzPjAmJihCW2xdLmZpeGVkUGFyYW1ldGVycz1TKEEsbyxRLFguRmxvYXQ2NCkpLFErPTEsZi5udW1iZXJPZlBhcmFtZXRlcnM+MCYmKEJbbF0ucGFyYW1ldGVycz1TKEEsbyxRLGYudHJhbnNmb3JtVHlwZS5wYXJhbWV0ZXJzVmFsdWVUeXBlKSksUSs9MSl9KSxhPUI7YnJlYWt9Y2FzZSBkLlBvbHlEYXRhOntsZXQgQj1tQShBLG8pO0IubnVtYmVyT2ZQb2ludHM+MD9CLnBvaW50cz1TKEEsbywwLFguRmxvYXQzMik6Qi5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxCLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP0IudmVydGljZXM9UyhBLG8sMSxrLlVJbnQzMik6Qi52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksQi5saW5lc0J1ZmZlclNpemU+MD9CLmxpbmVzPVMoQSxvLDIsay5VSW50MzIpOkIubGluZXM9bmV3IFVpbnQzMkFycmF5LEIucG9seWdvbnNCdWZmZXJTaXplPjA/Qi5wb2x5Z29ucz1TKEEsbywzLGsuVUludDMyKTpCLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxCLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP0IudHJpYW5nbGVTdHJpcHM9UyhBLG8sNCxrLlVJbnQzMik6Qi50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksQi5udW1iZXJPZlBvaW50UGl4ZWxzPjA/Qi5wb2ludERhdGE9UyhBLG8sNSxCLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5wb2ludERhdGE9SChCLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1TKEEsbyw2LEIucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkIuY2VsbERhdGE9SChCLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1CO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGM9e3R5cGU6Qy50eXBlLGRhdGE6YX07RS5wdXNoKGMpfSkse3JldHVyblZhbHVlOmksc3Rkb3V0Omcsc3RkZXJyOnMsb3V0cHV0czpFfX12YXIganQ9SHI7dmFyIHFyPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBLcihBLGUpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCBJPTA7STxBLmxlbmd0aDtJKyspe2xldCByPU9yKEFbSV0sZSk7ciE9PW51bGwmJnQucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBPcihBLGUpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHFyJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDplP3Q6dC5zbGljZSgwKX12YXIgdnQ9S3I7ZnVuY3Rpb24gVHIoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIFp0PVRyO2Z1bmN0aW9uIHhyKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciBWdD14cjtmdW5jdGlvbiBQcihBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgWHQ9UHI7dmFyIFdyO2Z1bmN0aW9uIFhBKCl7cmV0dXJuIFdyfXZhciBqcjtmdW5jdGlvbiB6dCgpe3JldHVybiBqcn12YXIgdnI7ZnVuY3Rpb24gekEoKXtyZXR1cm4gdnJ9dmFyIExlPW5ldyBNYXA7ZnVuY3Rpb24gWnIoKXtsZXQgQT16QSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW51bGwpLEF9ZnVuY3Rpb24gX3QoKXtsZXQgQT1YQSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW5ldyBVUkwoIi9waXBlbGluZXMiLGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbikuaHJlZiksQX1mdW5jdGlvbiBfQSgpe2xldCBBPXp0KCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9e30pLEF9YXN5bmMgZnVuY3Rpb24gVnIoQSxlLHQpe2xldCBJPUEscj1BO2lmKHR5cGVvZiBBIT0ic3RyaW5nIiYmKEk9bmV3IFVSTChBLmhyZWYpLHI9SS5ocmVmKSxMZS5oYXMocikpcmV0dXJuIExlLmdldChyKTt7bGV0IGk9YXdhaXQgS3QoQSxlPy50b1N0cmluZygpPz9fdCgpLHQ/P19BKCkpO3JldHVybiBMZS5zZXQocixpKSxpfX1hc3luYyBmdW5jdGlvbiBYcihBLGUsdCxJLHIpe2lmKCFhd2FpdCBPdCgpKXtsZXQgbD0iV2ViQXNzZW1ibHkgU0lNRCBzdXBwb3J0IGlzIHJlcXVpcmVkIC0tIHBsZWFzZSB1cGRhdGUgeW91ciBicm93c2VyLiI7dGhyb3cgYWxlcnQobCksbmV3IEVycm9yKGwpfWxldCBpPXI/LndlYldvcmtlcj8/bnVsbDtpZihpPT09ITEpe2xldCBsPWF3YWl0IFZyKEEudG9TdHJpbmcoKSxyPy5waXBlbGluZUJhc2VVcmwscj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/X0EoKSk7cmV0dXJuIGp0KGwsZSx0LEkpfWxldCBnPWkscz1yPy5waXBlbGluZVdvcmtlclVybD8/WnIoKSxFPXR5cGVvZiBzIT0ic3RyaW5nIiYmdHlwZW9mIHM/LmhyZWY8InUiP3MuaHJlZjpzLHt3b3JrZXJQcm94eTpDLHdvcmtlcjpvfT1hd2FpdCBZdChnLEUscj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/X0EoKSk7Zz1vO2xldCBhPVtdO0khPW51bGwmJkkubGVuZ3RoPjAmJkkuZm9yRWFjaChmdW5jdGlvbihsKXtpZihsLnR5cGU9PT1kLkJpbmFyeVN0cmVhbSl7bGV0IHA9bC5kYXRhLmRhdGE7YS5wdXNoKHApfWVsc2UgaWYobC50eXBlPT09ZC5CaW5hcnlGaWxlKXtsZXQgcD1sLmRhdGEuZGF0YTthLnB1c2gocCl9ZWxzZSBpZihsLnR5cGU9PT1kLkltYWdlKXtsZXQgcD1sLmRhdGE7cC5kYXRhIT09bnVsbCYmYS5wdXNoKC4uLlp0KHApKX1lbHNlIGlmKGwudHlwZT09PWQuTWVzaCl7bGV0IHA9bC5kYXRhO2EucHVzaCguLi5WdChwKSl9ZWxzZSBpZihsLnR5cGU9PT1kLlBvbHlEYXRhKXtsZXQgcD1sLmRhdGE7YS5wdXNoKC4uLlh0KHApKX19KTtsZXQgYz1yPy5waXBlbGluZUJhc2VVcmw/P190KCksQj10eXBlb2YgYyE9InN0cmluZyImJnR5cGVvZiBjPy5ocmVmPCJ1Ij9jLmhyZWY6YyxRPUkhPW51bGw/aWUoSSx2dChhLHI/Lm5vQ29weSkpOm51bGwsZj1hd2FpdCBDLnJ1blBpcGVsaW5lKEEudG9TdHJpbmcoKSxCLGUsdCxRLHI/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P19BKCkpO3JldHVybntyZXR1cm5WYWx1ZTpmLnJldHVyblZhbHVlLHN0ZG91dDpmLnN0ZG91dCxzdGRlcnI6Zi5zdGRlcnIsb3V0cHV0czpmLm91dHB1dHMsd2ViV29ya2VyOmd9fXZhciBZPVhyO3ZhciB6cj1udWxsO2Z1bmN0aW9uICR0KCl7cmV0dXJuIHpyfXZhciBiZSxfcj1gaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaXRrLXdhc20vZG93bnNhbXBsZUAke2VlfS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gR2EoQSl7YmU9QX1mdW5jdGlvbiBPKCl7aWYodHlwZW9mIGJlPCJ1IilyZXR1cm4gYmU7bGV0IEE9WEEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6X3J9dmFyIEplLCRyPW51bGw7ZnVuY3Rpb24gQUkoQSl7SmU9QX1mdW5jdGlvbiBHKCl7aWYodHlwZW9mIEplPCJ1IilyZXR1cm4gSmU7bGV0IEE9ekEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6JHJ9dmFyIGFBPW51bGw7YXN5bmMgZnVuY3Rpb24gZUkoKXtsZXQgQT1HKCksZT10eXBlb2YgQSE9InN0cmluZyImJnR5cGVvZiBBPy5ocmVmPCJ1Ij9BLmhyZWY6QTthQT1hd2FpdCB5QShlKX1mdW5jdGlvbiBxYShBKXthQT1BfWFzeW5jIGZ1bmN0aW9uIFQoKXtpZihhQSE9PW51bGwpcmV0dXJuIGFBLnRlcm1pbmF0ZWQmJmF3YWl0IGVJKCksYUE7bGV0IEE9JHQoKTtyZXR1cm4gQSE9PW51bGw/QTooYXdhaXQgZUkoKSxhQSl9YXN5bmMgZnVuY3Rpb24gQWcoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmQuSW1hZ2V9XSxJPVt7dHlwZTpkLkltYWdlLGRhdGE6QX1dLHI9W107aWYoci5wdXNoKCIwIiksci5wdXNoKCIwIiksci5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmci5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgcz0iZG93bnNhbXBsZS1iaW4tc2hyaW5rIixFPWU/LndlYldvcmtlcjtFPT09dm9pZCAwJiYoRT1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpvLHN0ZGVycjphLG91dHB1dHM6Y309YXdhaXQgWShzLHIsdCxJLHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6RSxub0NvcHk6ZT8ubm9Db3B5fSk7aWYobyE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOmNbMF0/LmRhdGF9fXZhciBlZz1BZzthc3luYyBmdW5jdGlvbiB0ZyhBLGU9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgdD1be3R5cGU6ZC5JbWFnZX1dLEk9W3t0eXBlOmQuSW1hZ2UsZGF0YTpBfV0scj1bXTtpZihyLnB1c2goIjAiKSxyLnB1c2goIjAiKSxyLnB1c2goIi0tbWVtb3J5LWlvIiksZS5zaHJpbmtGYWN0b3JzKXtpZihlLnNocmlua0ZhY3RvcnMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCcic2hyaW5rLWZhY3RvcnMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7ci5wdXNoKCItLXNocmluay1mYWN0b3JzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5zaHJpbmtGYWN0b3JzLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9aWYoZS5jcm9wUmFkaXVzKXtpZihlLmNyb3BSYWRpdXMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCciY3JvcC1yYWRpdXMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7ci5wdXNoKCItLWNyb3AtcmFkaXVzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5jcm9wUmFkaXVzLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9bGV0IHM9ImRvd25zYW1wbGUtbGFiZWwtaW1hZ2UiLEU9ZT8ud2ViV29ya2VyO0U9PT12b2lkIDAmJihFPWF3YWl0IFQoKSk7bGV0e3dlYldvcmtlcjpDLHJldHVyblZhbHVlOm8sc3RkZXJyOmEsb3V0cHV0czpjfT1hd2FpdCBZKHMscix0LEkse3BpcGVsaW5lQmFzZVVybDpPKCkscGlwZWxpbmVXb3JrZXJVcmw6RygpLHdlYldvcmtlcjpFLG5vQ29weTplPy5ub0NvcHl9KTtpZihvIT09MCYmYSE9PSIiKXRocm93IG5ldyBFcnJvcihhKTtyZXR1cm57d2ViV29ya2VyOkMsZG93bnNhbXBsZWQ6Y1swXT8uZGF0YX19dmFyIElnPXRnO2FzeW5jIGZ1bmN0aW9uIHJnKEE9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgZT1be3R5cGU6ZC5Kc29uQ29tcGF0aWJsZX1dLHQ9W10sST1bXTtpZihJLnB1c2goIjAiKSxJLnB1c2goIi0tbWVtb3J5LWlvIiksdHlwZW9mIEEuc2hyaW5rRmFjdG9yczwidSIpe2lmKEEuc2hyaW5rRmFjdG9ycy5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaHJpbmstZmFjdG9ycyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2hyaW5rLWZhY3RvcnMiKSxhd2FpdCBQcm9taXNlLmFsbChBLnNocmlua0ZhY3RvcnMubWFwKGFzeW5jIGM9PntJLnB1c2goYy50b1N0cmluZygpKX0pKX1sZXQgaT0iZG93bnNhbXBsZS1zaWdtYSIsZz1BPy53ZWJXb3JrZXI7Zz09PXZvaWQgMCYmKGc9YXdhaXQgVCgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6RSxzdGRlcnI6QyxvdXRwdXRzOm99PWF3YWl0IFkoaSxJLGUsdCx7cGlwZWxpbmVCYXNlVXJsOk8oKSxwaXBlbGluZVdvcmtlclVybDpHKCksd2ViV29ya2VyOmcsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKEUhPT0wJiZDIT09IiIpdGhyb3cgbmV3IEVycm9yKEMpO3JldHVybnt3ZWJXb3JrZXI6cyxzaWdtYTpvWzBdPy5kYXRhfX12YXIgZ2c9cmc7YXN5bmMgZnVuY3Rpb24gaWcoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmQuSW1hZ2V9XSxJPVt7dHlwZTpkLkltYWdlLGRhdGE6QX1dLHI9W107aWYoci5wdXNoKCIwIiksci5wdXNoKCIwIiksci5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWlmKGUuY3JvcFJhZGl1cyl7aWYoZS5jcm9wUmFkaXVzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignImNyb3AtcmFkaXVzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO3IucHVzaCgiLS1jcm9wLXJhZGl1cyIpLGF3YWl0IFByb21pc2UuYWxsKGUuY3JvcFJhZGl1cy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWxldCBzPSJkb3duc2FtcGxlIixFPWU/LndlYldvcmtlcjtFPT09dm9pZCAwJiYoRT1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpvLHN0ZGVycjphLG91dHB1dHM6Y309YXdhaXQgWShzLHIsdCxJLHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6RSxub0NvcHk6ZT8ubm9Db3B5fSk7aWYobyE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOmNbMF0/LmRhdGF9fXZhciBvZz1pZzthc3luYyBmdW5jdGlvbiBuZyhBPXtzaXplOlsxLDFdLHNpZ21hOlsxLDFdfSl7bGV0IGU9W3t0eXBlOmQuSnNvbkNvbXBhdGlibGV9XSx0PVtdLEk9W107aWYoSS5wdXNoKCIwIiksSS5wdXNoKCItLW1lbW9yeS1pbyIpLHR5cGVvZiBBLnNpemU8InUiKXtpZihBLnNpemUubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKCcic2l6ZSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2l6ZSIpLGF3YWl0IFByb21pc2UuYWxsKEEuc2l6ZS5tYXAoYXN5bmMgYz0+e0kucHVzaChjLnRvU3RyaW5nKCkpfSkpfWlmKHR5cGVvZiBBLnNpZ21hPCJ1Iil7aWYoQS5zaWdtYS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaWdtYSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtJLnB1c2goIi0tc2lnbWEiKSxhd2FpdCBQcm9taXNlLmFsbChBLnNpZ21hLm1hcChhc3luYyBjPT57SS5wdXNoKGMudG9TdHJpbmcoKSl9KSl9dHlwZW9mIEEubWF4S2VybmVsV2lkdGg8InUiJiZJLnB1c2goIi0tbWF4LWtlcm5lbC13aWR0aCIsQS5tYXhLZXJuZWxXaWR0aC50b1N0cmluZygpKSx0eXBlb2YgQS5tYXhLZXJuZWxFcnJvcjwidSImJkkucHVzaCgiLS1tYXgta2VybmVsLWVycm9yIixBLm1heEtlcm5lbEVycm9yLnRvU3RyaW5nKCkpO2xldCBpPSJnYXVzc2lhbi1rZXJuZWwtcmFkaXVzIixnPUE/LndlYldvcmtlcjtnPT09dm9pZCAwJiYoZz1hd2FpdCBUKCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTpFLHN0ZGVycjpDLG91dHB1dHM6b309YXdhaXQgWShpLEksZSx0LHtwaXBlbGluZUJhc2VVcmw6TygpLHBpcGVsaW5lV29ya2VyVXJsOkcoKSx3ZWJXb3JrZXI6Zyxub0NvcHk6QT8ubm9Db3B5fSk7aWYoRSE9PTAmJkMhPT0iIil0aHJvdyBuZXcgRXJyb3IoQyk7cmV0dXJue3dlYldvcmtlcjpzLHJhZGl1czpvWzBdPy5kYXRhfX12YXIgYWc9bmc7dmFyIHRJPSdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LHZhciBZZT1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIHFlPShBLHQpPT57Zm9yKHZhciBlIGluIHQpWWUoQSxlLHtnZXQ6dFtlXSxlbnVtZXJhYmxlOiEwfSl9O3ZhciBOdD1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxNZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxLZT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksVkE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLG1BPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxVdD1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixPZT17Y2FuSGFuZGxlOkE9PlV0KEEpJiZBW050XSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOnQscG9ydDI6ZX09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBGQShBLHQpLFtlLFtlXV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksamUoQSl9fSxUZT17Y2FuSGFuZGxlOkE9PlV0KEEpJiZtQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCB0O3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/dD17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OnQ9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW3QsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sR3Q9bmV3IE1hcChbWyJwcm94eSIsT2VdLFsidGhyb3ciLFRlXV0pO2Z1bmN0aW9uIHhlKEEsdCl7Zm9yKGxldCBlIG9mIEEpaWYodD09PWV8fGU9PT0iKiJ8fGUgaW5zdGFuY2VvZiBSZWdFeHAmJmUudGVzdCh0KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBGQShBLHQ9Z2xvYmFsVGhpcyxlPVsiKiJdKXt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIEkocil7aWYoIXJ8fCFyLmRhdGEpcmV0dXJuO2lmKCF4ZShlLHIub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiBcJyR7ci5vcmlnaW59XCcgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOmcsdHlwZTpvLHBhdGg6bn09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sci5kYXRhKSxFPShyLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKFcpLEI7dHJ5e2xldCBzPW4uc2xpY2UoMCwtMSkucmVkdWNlKChsLGEpPT5sW2FdLEEpLEM9bi5yZWR1Y2UoKGwsYSk9PmxbYV0sQSk7c3dpdGNoKG8pe2Nhc2UiR0VUIjpCPUM7YnJlYWs7Y2FzZSJTRVQiOnNbbi5zbGljZSgtMSlbMF1dPVcoci5kYXRhLnZhbHVlKSxCPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOkI9Qy5hcHBseShzLEUpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IGw9bmV3IEMoLi4uRSk7Qj1YZShsKX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOmwscG9ydDI6YX09bmV3IE1lc3NhZ2VDaGFubmVsO0ZBKEEsYSksQj1fQShsLFtsXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpCPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gocyl7Qj17dmFsdWU6cyxbbUFdOjB9fVByb21pc2UucmVzb2x2ZShCKS5jYXRjaChzPT4oe3ZhbHVlOnMsW21BXTowfSkpLnRoZW4ocz0+e2xldFtDLGxdPVNBKHMpO3QucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEMpLHtpZDpnfSksbCksbz09PSJSRUxFQVNFIiYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsSSksa3QodCksVkEgaW4gQSYmdHlwZW9mIEFbVkFdPT0iZnVuY3Rpb24iJiZBW1ZBXSgpKX0pLmNhdGNoKHM9PntsZXRbQyxsXT1TQSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW21BXTowfSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sQykse2lkOmd9KSxsKX0pfSksdC5zdGFydCYmdC5zdGFydCgpfWZ1bmN0aW9uIFBlKEEpe3JldHVybiBBLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIGt0KEEpe1BlKEEpJiZBLmNsb3NlKCl9ZnVuY3Rpb24gamUoQSx0KXtyZXR1cm4gWEEoQSxbXSx0KX1mdW5jdGlvbiB5QShBKXtpZihBKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gTHQoQSl7cmV0dXJuIF8oQSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57a3QoQSl9KX12YXIgd0E9bmV3IFdlYWtNYXAscEE9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShBPT57bGV0IHQ9KHdBLmdldChBKXx8MCktMTt3QS5zZXQoQSx0KSx0PT09MCYmTHQoQSl9KTtmdW5jdGlvbiBXZShBLHQpe2xldCBlPSh3QS5nZXQodCl8fDApKzE7d0Euc2V0KHQsZSkscEEmJnBBLnJlZ2lzdGVyKEEsdCxBKX1mdW5jdGlvbiBaZShBKXtwQSYmcEEudW5yZWdpc3RlcihBKX1mdW5jdGlvbiBYQShBLHQ9W10sZT1mdW5jdGlvbigpe30pe2xldCBJPSExLHI9bmV3IFByb3h5KGUse2dldChnLG8pe2lmKHlBKEkpLG89PT1LZSlyZXR1cm4oKT0+e1plKHIpLEx0KEEpLEk9ITB9O2lmKG89PT0idGhlbiIpe2lmKHQubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+cn07bGV0IG49XyhBLHt0eXBlOiJHRVQiLHBhdGg6dC5tYXAoRT0+RS50b1N0cmluZygpKX0pLnRoZW4oVyk7cmV0dXJuIG4udGhlbi5iaW5kKG4pfXJldHVybiBYQShBLFsuLi50LG9dKX0sc2V0KGcsbyxuKXt5QShJKTtsZXRbRSxCXT1TQShuKTtyZXR1cm4gXyhBLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLnQsb10ubWFwKHM9PnMudG9TdHJpbmcoKSksdmFsdWU6RX0sQikudGhlbihXKX0sYXBwbHkoZyxvLG4pe3lBKEkpO2xldCBFPXRbdC5sZW5ndGgtMV07aWYoRT09PU1lKXJldHVybiBfKEEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oVyk7aWYoRT09PSJiaW5kIilyZXR1cm4gWEEoQSx0LnNsaWNlKDAsLTEpKTtsZXRbQixzXT1SdChuKTtyZXR1cm4gXyhBLHt0eXBlOiJBUFBMWSIscGF0aDp0Lm1hcChDPT5DLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpCfSxzKS50aGVuKFcpfSxjb25zdHJ1Y3QoZyxvKXt5QShJKTtsZXRbbixFXT1SdChvKTtyZXR1cm4gXyhBLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6dC5tYXAoQj0+Qi50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6bn0sRSkudGhlbihXKX19KTtyZXR1cm4gV2UocixBKSxyfWZ1bmN0aW9uIFZlKEEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLEEpfWZ1bmN0aW9uIFJ0KEEpe2xldCB0PUEubWFwKFNBKTtyZXR1cm5bdC5tYXAoZT0+ZVswXSksVmUodC5tYXAoZT0+ZVsxXSkpXX12YXIgYnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gX0EoQSx0KXtyZXR1cm4gYnQuc2V0KEEsdCksQX1mdW5jdGlvbiBYZShBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihBLHtbTnRdOiEwfSl9ZnVuY3Rpb24gU0EoQSl7Zm9yKGxldFt0LGVdb2YgR3QpaWYoZS5jYW5IYW5kbGUoQSkpe2xldFtJLHJdPWUuc2VyaWFsaXplKEEpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTp0LHZhbHVlOkl9LHJdfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTpBfSxidC5nZXQoQSl8fFtdXX1mdW5jdGlvbiBXKEEpe3N3aXRjaChBLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIEd0LmdldChBLm5hbWUpLmRlc2VyaWFsaXplKEEudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gQS52YWx1ZX19ZnVuY3Rpb24gXyhBLHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKEk9PntsZXQgcj1fZSgpO0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZyhvKXshby5kYXRhfHwhby5kYXRhLmlkfHxvLmRhdGEuaWQhPT1yfHwoQS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixnKSxJKG8uZGF0YSkpfSksQS5zdGFydCYmQS5zdGFydCgpLEEucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6cn0sdCksZSl9KX1mdW5jdGlvbiBfZSgpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gb0EoQSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5hcHBseSh0LGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzp6ZX09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6dkF9PU9iamVjdCx7aXRlcmF0b3I6TkEsdG9TdHJpbmdUYWc6WXR9PVN5bWJvbCxVQT0oQT0+dD0+e2xldCBlPXplLmNhbGwodCk7cmV0dXJuIEFbZV18fChBW2VdPWUuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxMPUE9PihBPUEudG9Mb3dlckNhc2UoKSx0PT5VQSh0KT09PUEpLEdBPUE9PnQ9PnR5cGVvZiB0PT09QSx7aXNBcnJheTp2fT1BcnJheSx6PUdBKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiBnQShBKXtyZXR1cm4gQSE9PW51bGwmJiF6KEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIXooQS5jb25zdHJ1Y3RvcikmJk4oQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIHF0PUwoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gdmUoQSl7bGV0IHQ7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz90PUFycmF5QnVmZmVyLmlzVmlldyhBKTp0PUEmJkEuYnVmZmVyJiZxdChBLmJ1ZmZlciksdH12YXIgJGU9R0EoInN0cmluZyIpLE49R0EoImZ1bmN0aW9uIiksTXQ9R0EoIm51bWJlciIpLGlBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsQUk9QT0+QT09PSEwfHxBPT09ITEsUkE9QT0+e2lmKFVBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IHQ9dkEoQSk7cmV0dXJuKHQ9PT1udWxsfHx0PT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpPT09bnVsbCkmJiEoWXQgaW4gQSkmJiEoTkEgaW4gQSl9LHRJPUE9PntpZighaUEoQSl8fGdBKEEpKXJldHVybiExO3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoQSkubGVuZ3RoPT09MCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09T2JqZWN0LnByb3RvdHlwZX1jYXRjaHtyZXR1cm4hMX19LGVJPUwoIkRhdGUiKSxJST1MKCJGaWxlIiksckk9TCgiQmxvYiIpLG9JPUwoIkZpbGVMaXN0IiksZ0k9QT0+aUEoQSkmJk4oQS5waXBlKSxpST1BPT57bGV0IHQ7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8TihBLmFwcGVuZCkmJigodD1VQShBKSk9PT0iZm9ybWRhdGEifHx0PT09Im9iamVjdCImJk4oQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sc0k9TCgiVVJMU2VhcmNoUGFyYW1zIiksW25JLENJLEJJLGFJXT1bIlJlYWRhYmxlU3RyZWFtIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiSGVhZGVycyJdLm1hcChMKSxRST1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywiIik7ZnVuY3Rpb24gc0EoQSx0LHthbGxPd25LZXlzOmU9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgSSxyO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSx2KEEpKWZvcihJPTAscj1BLmxlbmd0aDtJPHI7SSsrKXQuY2FsbChudWxsLEFbSV0sSSxBKTtlbHNle2lmKGdBKEEpKXJldHVybjtsZXQgZz1lP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLG89Zy5sZW5ndGgsbjtmb3IoST0wO0k8bztJKyspbj1nW0ldLHQuY2FsbChudWxsLEFbbl0sbixBKX19ZnVuY3Rpb24gS3QoQSx0KXtpZihnQShBKSlyZXR1cm4gbnVsbDt0PXQudG9Mb3dlckNhc2UoKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxJPWUubGVuZ3RoLHI7Zm9yKDtJLS0gPjA7KWlmKHI9ZVtJXSx0PT09ci50b0xvd2VyQ2FzZSgpKXJldHVybiByO3JldHVybiBudWxsfXZhciBaPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsT3Q9QT0+IXooQSkmJkEhPT1aO2Z1bmN0aW9uIHpBKCl7bGV0e2Nhc2VsZXNzOkEsc2tpcFVuZGVmaW5lZDp0fT1PdCh0aGlzKSYmdGhpc3x8e30sZT17fSxJPShyLGcpPT57bGV0IG89QSYmS3QoZSxnKXx8ZztSQShlW29dKSYmUkEocik/ZVtvXT16QShlW29dLHIpOlJBKHIpP2Vbb109ekEoe30scik6dihyKT9lW29dPXIuc2xpY2UoKTooIXR8fCF6KHIpKSYmKGVbb109cil9O2ZvcihsZXQgcj0wLGc9YXJndW1lbnRzLmxlbmd0aDtyPGc7cisrKWFyZ3VtZW50c1tyXSYmc0EoYXJndW1lbnRzW3JdLEkpO3JldHVybiBlfXZhciBFST0oQSx0LGUse2FsbE93bktleXM6SX09e30pPT4oc0EodCwocixnKT0+e2UmJk4ocik/QVtnXT1vQShyLGUpOkFbZ109cn0se2FsbE93bktleXM6SX0pLEEpLGNJPUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksZkk9KEEsdCxlLEkpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSxJKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOnQucHJvdG90eXBlfSksZSYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSxlKX0sbEk9KEEsdCxlLEkpPT57bGV0IHIsZyxvLG49e307aWYodD10fHx7fSxBPT1udWxsKXJldHVybiB0O2Rve2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGc9ci5sZW5ndGg7Zy0tID4wOylvPXJbZ10sKCFJfHxJKG8sQSx0KSkmJiFuW29dJiYodFtvXT1BW29dLG5bb109ITApO0E9ZSE9PSExJiZ2QShBKX13aGlsZShBJiYoIWV8fGUoQSx0KSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gdH0sdUk9KEEsdCxlKT0+e0E9U3RyaW5nKEEpLChlPT09dm9pZCAwfHxlPkEubGVuZ3RoKSYmKGU9QS5sZW5ndGgpLGUtPXQubGVuZ3RoO2xldCBJPUEuaW5kZXhPZih0LGUpO3JldHVybiBJIT09LTEmJkk9PT1lfSxkST1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYodihBKSlyZXR1cm4gQTtsZXQgdD1BLmxlbmd0aDtpZighTXQodCkpcmV0dXJuIG51bGw7bGV0IGU9bmV3IEFycmF5KHQpO2Zvcig7dC0tID4wOyllW3RdPUFbdF07cmV0dXJuIGV9LERJPShBPT50PT5BJiZ0IGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ2QShVaW50OEFycmF5KSksaEk9KEEsdCk9PntsZXQgST0oQSYmQVtOQV0pLmNhbGwoQSkscjtmb3IoOyhyPUkubmV4dCgpKSYmIXIuZG9uZTspe2xldCBnPXIudmFsdWU7dC5jYWxsKEEsZ1swXSxnWzFdKX19LHlJPShBLHQpPT57bGV0IGUsST1bXTtmb3IoOyhlPUEuZXhlYyh0KSkhPT1udWxsOylJLnB1c2goZSk7cmV0dXJuIEl9LG1JPUwoIkhUTUxGb3JtRWxlbWVudCIpLHdJPUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLGZ1bmN0aW9uKGUsSSxyKXtyZXR1cm4gSS50b1VwcGVyQ2FzZSgpK3J9KSxIdD0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9Pih0LGUpPT5BLmNhbGwodCxlKSkoT2JqZWN0LnByb3RvdHlwZSkscEk9TCgiUmVnRXhwIiksVHQ9KEEsdCk9PntsZXQgZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxJPXt9O3NBKGUsKHIsZyk9PntsZXQgbzsobz10KHIsZyxBKSkhPT0hMSYmKElbZ109b3x8cil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLEkpfSxTST1BPT57VHQoQSwodCxlKT0+e2lmKE4oQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZihlKSE9PS0xKXJldHVybiExO2xldCBJPUFbZV07aWYoTihJKSl7aWYodC5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiB0KXt0LndyaXRhYmxlPSExO3JldHVybn10LnNldHx8KHQuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIitlKyJcJyIpfSl9fSl9LEZJPShBLHQpPT57bGV0IGU9e30sST1yPT57ci5mb3JFYWNoKGc9PntlW2ddPSEwfSl9O3JldHVybiB2KEEpP0koQSk6SShTdHJpbmcoQSkuc3BsaXQodCkpLGV9LFJJPSgpPT57fSxOST0oQSx0KT0+QSE9bnVsbCYmTnVtYmVyLmlzRmluaXRlKEE9K0EpP0E6dDtmdW5jdGlvbiBVSShBKXtyZXR1cm4hIShBJiZOKEEuYXBwZW5kKSYmQVtZdF09PT0iRm9ybURhdGEiJiZBW05BXSl9dmFyIEdJPUE9PntsZXQgdD1uZXcgQXJyYXkoMTApLGU9KEkscik9PntpZihpQShJKSl7aWYodC5pbmRleE9mKEkpPj0wKXJldHVybjtpZihnQShJKSlyZXR1cm4gSTtpZighKCJ0b0pTT04iaW4gSSkpe3Rbcl09STtsZXQgZz12KEkpP1tdOnt9O3JldHVybiBzQShJLChvLG4pPT57bGV0IEU9ZShvLHIrMSk7IXooRSkmJihnW25dPUUpfSksdFtyXT12b2lkIDAsZ319cmV0dXJuIEl9O3JldHVybiBlKEEsMCl9LGtJPUwoIkFzeW5jRnVuY3Rpb24iKSxMST1BPT5BJiYoaUEoQSl8fE4oQSkpJiZOKEEudGhlbikmJk4oQS5jYXRjaCkseHQ9KChBLHQpPT5BP3NldEltbWVkaWF0ZTp0PygoZSxJKT0+KFouYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtzb3VyY2U6cixkYXRhOmd9KT0+e3I9PT1aJiZnPT09ZSYmSS5sZW5ndGgmJkkuc2hpZnQoKSgpfSwhMSkscj0+e0kucHVzaChyKSxaLnBvc3RNZXNzYWdlKGUsIioiKX0pKShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsW10pOmU9PnNldFRpbWVvdXQoZSkpKHR5cGVvZiBzZXRJbW1lZGlhdGU9PSJmdW5jdGlvbiIsTihaLnBvc3RNZXNzYWdlKSksYkk9dHlwZW9mIHF1ZXVlTWljcm90YXNrPCJ1Ij9xdWV1ZU1pY3JvdGFzay5iaW5kKFopOnR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5uZXh0VGlja3x8eHQsSkk9QT0+QSE9bnVsbCYmTihBW05BXSksaT17aXNBcnJheTp2LGlzQXJyYXlCdWZmZXI6cXQsaXNCdWZmZXI6Z0EsaXNGb3JtRGF0YTppSSxpc0FycmF5QnVmZmVyVmlldzp2ZSxpc1N0cmluZzokZSxpc051bWJlcjpNdCxpc0Jvb2xlYW46QUksaXNPYmplY3Q6aUEsaXNQbGFpbk9iamVjdDpSQSxpc0VtcHR5T2JqZWN0OnRJLGlzUmVhZGFibGVTdHJlYW06bkksaXNSZXF1ZXN0OkNJLGlzUmVzcG9uc2U6QkksaXNIZWFkZXJzOmFJLGlzVW5kZWZpbmVkOnosaXNEYXRlOmVJLGlzRmlsZTpJSSxpc0Jsb2I6ckksaXNSZWdFeHA6cEksaXNGdW5jdGlvbjpOLGlzU3RyZWFtOmdJLGlzVVJMU2VhcmNoUGFyYW1zOnNJLGlzVHlwZWRBcnJheTpESSxpc0ZpbGVMaXN0Om9JLGZvckVhY2g6c0EsbWVyZ2U6ekEsZXh0ZW5kOkVJLHRyaW06UUksc3RyaXBCT006Y0ksaW5oZXJpdHM6ZkksdG9GbGF0T2JqZWN0OmxJLGtpbmRPZjpVQSxraW5kT2ZUZXN0OkwsZW5kc1dpdGg6dUksdG9BcnJheTpkSSxmb3JFYWNoRW50cnk6aEksbWF0Y2hBbGw6eUksaXNIVE1MRm9ybTptSSxoYXNPd25Qcm9wZXJ0eTpIdCxoYXNPd25Qcm9wOkh0LHJlZHVjZURlc2NyaXB0b3JzOlR0LGZyZWV6ZU1ldGhvZHM6U0ksdG9PYmplY3RTZXQ6RkksdG9DYW1lbENhc2U6d0ksbm9vcDpSSSx0b0Zpbml0ZU51bWJlcjpOSSxmaW5kS2V5Okt0LGdsb2JhbDpaLGlzQ29udGV4dERlZmluZWQ6T3QsaXNTcGVjQ29tcGxpYW50Rm9ybTpVSSx0b0pTT05PYmplY3Q6R0ksaXNBc3luY0ZuOmtJLGlzVGhlbmFibGU6TEksc2V0SW1tZWRpYXRlOnh0LGFzYXA6YkksaXNJdGVyYWJsZTpKSX07ZnVuY3Rpb24gJChBLHQsZSxJLHIpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsdCYmKHRoaXMuY29kZT10KSxlJiYodGhpcy5jb25maWc9ZSksSSYmKHRoaXMucmVxdWVzdD1JKSxyJiYodGhpcy5yZXNwb25zZT1yLHRoaXMuc3RhdHVzPXIuc3RhdHVzP3Iuc3RhdHVzOm51bGwpfWkuaW5oZXJpdHMoJCxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmkudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5zdGF0dXN9fX0pO3ZhciBQdD0kLnByb3RvdHlwZSxqdD17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9PntqdFtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcygkLGp0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUHQsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7JC5mcm9tPShBLHQsZSxJLHIsZyk9PntsZXQgbz1PYmplY3QuY3JlYXRlKFB0KTtpLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24ocyl7cmV0dXJuIHMhPT1FcnJvci5wcm90b3R5cGV9LEI9PkIhPT0iaXNBeGlvc0Vycm9yIik7bGV0IG49QSYmQS5tZXNzYWdlP0EubWVzc2FnZToiRXJyb3IiLEU9dD09bnVsbCYmQT9BLmNvZGU6dDtyZXR1cm4gJC5jYWxsKG8sbixFLGUsSSxyKSxBJiZvLmNhdXNlPT1udWxsJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobywiY2F1c2UiLHt2YWx1ZTpBLGNvbmZpZ3VyYWJsZTohMH0pLG8ubmFtZT1BJiZBLm5hbWV8fCJFcnJvciIsZyYmT2JqZWN0LmFzc2lnbihvLGcpLG99O3ZhciB1PSQ7dmFyIGtBPW51bGw7ZnVuY3Rpb24gJEEoQSl7cmV0dXJuIGkuaXNQbGFpbk9iamVjdChBKXx8aS5pc0FycmF5KEEpfWZ1bmN0aW9uIFp0KEEpe3JldHVybiBpLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIFd0KEEsdCxlKXtyZXR1cm4gQT9BLmNvbmNhdCh0KS5tYXAoZnVuY3Rpb24ocixnKXtyZXR1cm4gcj1adChyKSwhZSYmZz8iWyIrcisiXSI6cn0pLmpvaW4oZT8iLiI6IiIpOnR9ZnVuY3Rpb24gSEkoQSl7cmV0dXJuIGkuaXNBcnJheShBKSYmIUEuc29tZSgkQSl9dmFyIFlJPWkudG9GbGF0T2JqZWN0KGkse30sbnVsbCxmdW5jdGlvbih0KXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QodCl9KTtmdW5jdGlvbiBxSShBLHQsZSl7aWYoIWkuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7dD10fHxuZXcoa0F8fEZvcm1EYXRhKSxlPWkudG9GbGF0T2JqZWN0KGUse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihmLGMpe3JldHVybiFpLmlzVW5kZWZpbmVkKGNbZl0pfSk7bGV0IEk9ZS5tZXRhVG9rZW5zLHI9ZS52aXNpdG9yfHxzLGc9ZS5kb3RzLG89ZS5pbmRleGVzLEU9KGUuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmaS5pc1NwZWNDb21wbGlhbnRGb3JtKHQpO2lmKCFpLmlzRnVuY3Rpb24ocikpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBCKFEpe2lmKFE9PT1udWxsKXJldHVybiIiO2lmKGkuaXNEYXRlKFEpKXJldHVybiBRLnRvSVNPU3RyaW5nKCk7aWYoaS5pc0Jvb2xlYW4oUSkpcmV0dXJuIFEudG9TdHJpbmcoKTtpZighRSYmaS5pc0Jsb2IoUSkpdGhyb3cgbmV3IHUoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIGkuaXNBcnJheUJ1ZmZlcihRKXx8aS5pc1R5cGVkQXJyYXkoUSk/RSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW1FdKTpCdWZmZXIuZnJvbShRKTpRfWZ1bmN0aW9uIHMoUSxmLGMpe2xldCBEPVE7aWYoUSYmIWMmJnR5cGVvZiBRPT0ib2JqZWN0Iil7aWYoaS5lbmRzV2l0aChmLCJ7fSIpKWY9ST9mOmYuc2xpY2UoMCwtMiksUT1KU09OLnN0cmluZ2lmeShRKTtlbHNlIGlmKGkuaXNBcnJheShRKSYmSEkoUSl8fChpLmlzRmlsZUxpc3QoUSl8fGkuZW5kc1dpdGgoZiwiW10iKSkmJihEPWkudG9BcnJheShRKSkpcmV0dXJuIGY9WnQoZiksRC5mb3JFYWNoKGZ1bmN0aW9uKHksUil7IShpLmlzVW5kZWZpbmVkKHkpfHx5PT09bnVsbCkmJnQuYXBwZW5kKG89PT0hMD9XdChbZl0sUixnKTpvPT09bnVsbD9mOmYrIltdIixCKHkpKX0pLCExfXJldHVybiAkQShRKT8hMDoodC5hcHBlbmQoV3QoYyxmLGcpLEIoUSkpLCExKX1sZXQgQz1bXSxsPU9iamVjdC5hc3NpZ24oWUkse2RlZmF1bHRWaXNpdG9yOnMsY29udmVydFZhbHVlOkIsaXNWaXNpdGFibGU6JEF9KTtmdW5jdGlvbiBhKFEsZil7aWYoIWkuaXNVbmRlZmluZWQoUSkpe2lmKEMuaW5kZXhPZihRKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitmLmpvaW4oIi4iKSk7Qy5wdXNoKFEpLGkuZm9yRWFjaChRLGZ1bmN0aW9uKEQsRil7KCEoaS5pc1VuZGVmaW5lZChEKXx8RD09PW51bGwpJiZyLmNhbGwodCxELGkuaXNTdHJpbmcoRik/Ri50cmltKCk6RixmLGwpKT09PSEwJiZhKEQsZj9mLmNvbmNhdChGKTpbRl0pfSksQy5wb3AoKX19aWYoIWkuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBhKEEpLHR9dmFyIFQ9cUk7ZnVuY3Rpb24gVnQoQSl7bGV0IHQ9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oSSl7cmV0dXJuIHRbSV19KX1mdW5jdGlvbiBYdChBLHQpe3RoaXMuX3BhaXJzPVtdLEEmJlQoQSx0aGlzLHQpfXZhciBfdD1YdC5wcm90b3R5cGU7X3QuYXBwZW5kPWZ1bmN0aW9uKHQsZSl7dGhpcy5fcGFpcnMucHVzaChbdCxlXSl9O190LnRvU3RyaW5nPWZ1bmN0aW9uKHQpe2xldCBlPXQ/ZnVuY3Rpb24oSSl7cmV0dXJuIHQuY2FsbCh0aGlzLEksVnQpfTpWdDtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBlKHJbMF0pKyI9IitlKHJbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgTEE9WHQ7ZnVuY3Rpb24gTUkoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKX1mdW5jdGlvbiBuQShBLHQsZSl7aWYoIXQpcmV0dXJuIEE7bGV0IEk9ZSYmZS5lbmNvZGV8fE1JO2kuaXNGdW5jdGlvbihlKSYmKGU9e3NlcmlhbGl6ZTplfSk7bGV0IHI9ZSYmZS5zZXJpYWxpemUsZztpZihyP2c9cih0LGUpOmc9aS5pc1VSTFNlYXJjaFBhcmFtcyh0KT90LnRvU3RyaW5nKCk6bmV3IExBKHQsZSkudG9TdHJpbmcoSSksZyl7bGV0IG89QS5pbmRleE9mKCIlMjMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrZ31yZXR1cm4gQX12YXIgQXQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZSh0LGUsSSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOnQscmVqZWN0ZWQ6ZSxzeW5jaHJvbm91czpJP0kuc3luY2hyb25vdXM6ITEscnVuV2hlbjpJP0kucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdCh0KXt0aGlzLmhhbmRsZXJzW3RdJiYodGhpcy5oYW5kbGVyc1t0XT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKHQpe2kuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKEkpe0khPT1udWxsJiZ0KEkpfSl9fSx0dD1BdDt2YXIgYkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciB6dD10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6TEE7dmFyIHZ0PXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgJHQ9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgQWU9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6enQsRm9ybURhdGE6dnQsQmxvYjokdH0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBydD17fTtxZShydCx7aGFzQnJvd3NlckVudjooKT0+SXQsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5LSSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9Pk9JLG5hdmlnYXRvcjooKT0+ZXQsb3JpZ2luOigpPT5USX0pO3ZhciBJdD10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixldD10eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmbmF2aWdhdG9yfHx2b2lkIDAsS0k9SXQmJighZXR8fFsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoZXQucHJvZHVjdCk8MCksT0k9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iLFRJPUl0JiZ3aW5kb3cubG9jYXRpb24uaHJlZnx8Imh0dHA6Ly9sb2NhbGhvc3QiO3ZhciBoPXsuLi5ydCwuLi5BZX07ZnVuY3Rpb24gb3QoQSx0KXtyZXR1cm4gVChBLG5ldyBoLmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLHt2aXNpdG9yOmZ1bmN0aW9uKGUsSSxyLGcpe3JldHVybiBoLmlzTm9kZSYmaS5pc0J1ZmZlcihlKT8odGhpcy5hcHBlbmQoSSxlLnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmcuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwuLi50fSl9ZnVuY3Rpb24geEkoQSl7cmV0dXJuIGkubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLEEpLm1hcCh0PT50WzBdPT09IltdIj8iIjp0WzFdfHx0WzBdKX1mdW5jdGlvbiBQSShBKXtsZXQgdD17fSxlPU9iamVjdC5rZXlzKEEpLEkscj1lLmxlbmd0aCxnO2ZvcihJPTA7STxyO0krKylnPWVbSV0sdFtnXT1BW2ddO3JldHVybiB0fWZ1bmN0aW9uIGpJKEEpe2Z1bmN0aW9uIHQoZSxJLHIsZyl7bGV0IG89ZVtnKytdO2lmKG89PT0iX19wcm90b19fIilyZXR1cm4hMDtsZXQgbj1OdW1iZXIuaXNGaW5pdGUoK28pLEU9Zz49ZS5sZW5ndGg7cmV0dXJuIG89IW8mJmkuaXNBcnJheShyKT9yLmxlbmd0aDpvLEU/KGkuaGFzT3duUHJvcChyLG8pP3Jbb109W3Jbb10sSV06cltvXT1JLCFuKTooKCFyW29dfHwhaS5pc09iamVjdChyW29dKSkmJihyW29dPVtdKSx0KGUsSSxyW29dLGcpJiZpLmlzQXJyYXkocltvXSkmJihyW29dPVBJKHJbb10pKSwhbil9aWYoaS5pc0Zvcm1EYXRhKEEpJiZpLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IGU9e307cmV0dXJuIGkuZm9yRWFjaEVudHJ5KEEsKEkscik9Pnt0KHhJKEkpLHIsZSwwKX0pLGV9cmV0dXJuIG51bGx9dmFyIEpBPWpJO2Z1bmN0aW9uIFdJKEEsdCxlKXtpZihpLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoQSksaS50cmltKEEpfWNhdGNoKEkpe2lmKEkubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgSX1yZXR1cm4oZXx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBndD17dHJhbnNpdGlvbmFsOmJBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIiwiZmV0Y2giXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbih0LGUpe2xldCBJPWUuZ2V0Q29udGVudFR5cGUoKXx8IiIscj1JLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxnPWkuaXNPYmplY3QodCk7aWYoZyYmaS5pc0hUTUxGb3JtKHQpJiYodD1uZXcgRm9ybURhdGEodCkpLGkuaXNGb3JtRGF0YSh0KSlyZXR1cm4gcj9KU09OLnN0cmluZ2lmeShKQSh0KSk6dDtpZihpLmlzQXJyYXlCdWZmZXIodCl8fGkuaXNCdWZmZXIodCl8fGkuaXNTdHJlYW0odCl8fGkuaXNGaWxlKHQpfHxpLmlzQmxvYih0KXx8aS5pc1JlYWRhYmxlU3RyZWFtKHQpKXJldHVybiB0O2lmKGkuaXNBcnJheUJ1ZmZlclZpZXcodCkpcmV0dXJuIHQuYnVmZmVyO2lmKGkuaXNVUkxTZWFyY2hQYXJhbXModCkpcmV0dXJuIGUuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksdC50b1N0cmluZygpO2xldCBuO2lmKGcpe2lmKEkuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIG90KHQsdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigobj1pLmlzRmlsZUxpc3QodCkpfHxJLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IEU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBUKG4/eyJmaWxlc1tdIjp0fTp0LEUmJm5ldyBFLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gZ3x8cj8oZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLFdJKHQpKTp0fV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKHQpe2xldCBlPXRoaXMudHJhbnNpdGlvbmFsfHxndC50cmFuc2l0aW9uYWwsST1lJiZlLmZvcmNlZEpTT05QYXJzaW5nLHI9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoaS5pc1Jlc3BvbnNlKHQpfHxpLmlzUmVhZGFibGVTdHJlYW0odCkpcmV0dXJuIHQ7aWYodCYmaS5pc1N0cmluZyh0KSYmKEkmJiF0aGlzLnJlc3BvbnNlVHlwZXx8cikpe2xldCBvPSEoZSYmZS5zaWxlbnRKU09OUGFyc2luZykmJnI7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQsdGhpcy5wYXJzZVJldml2ZXIpfWNhdGNoKG4pe2lmKG8pdGhyb3cgbi5uYW1lPT09IlN5bnRheEVycm9yIj91LmZyb20obix1LkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOm59fXJldHVybiB0fV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTpoLmNsYXNzZXMuRm9ybURhdGEsQmxvYjpoLmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTIwMCYmdDwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtpLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e2d0LmhlYWRlcnNbQV09e319KTt2YXIgQUE9Z3Q7dmFyIFpJPWkudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksdGU9QT0+e2xldCB0PXt9LGUsSSxyO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3I9by5pbmRleE9mKCI6IiksZT1vLnN1YnN0cmluZygwLHIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLEk9by5zdWJzdHJpbmcocisxKS50cmltKCksISghZXx8dFtlXSYmWklbZV0pJiYoZT09PSJzZXQtY29va2llIj90W2VdP3RbZV0ucHVzaChJKTp0W2VdPVtJXTp0W2VdPXRbZV0/dFtlXSsiLCAiK0k6SSl9KSx0fTt2YXIgZWU9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBDQShBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEhBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTppLmlzQXJyYXkoQSk/QS5tYXAoSEEpOlN0cmluZyhBKX1mdW5jdGlvbiBWSShBKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLGU9LyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZyxJO2Zvcig7ST1lLmV4ZWMoQSk7KXRbSVsxXV09SVsyXTtyZXR1cm4gdH12YXIgWEk9QT0+L15bLV9hLXpBLVowLTleYHx+LCElMjMkJSZcJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gaXQoQSx0LGUsSSxyKXtpZihpLmlzRnVuY3Rpb24oSSkpcmV0dXJuIEkuY2FsbCh0aGlzLHQsZSk7aWYociYmKHQ9ZSksISFpLmlzU3RyaW5nKHQpKXtpZihpLmlzU3RyaW5nKEkpKXJldHVybiB0LmluZGV4T2YoSSkhPT0tMTtpZihpLmlzUmVnRXhwKEkpKXJldHVybiBJLnRlc3QodCl9fWZ1bmN0aW9uIF9JKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywodCxlLEkpPT5lLnRvVXBwZXJDYXNlKCkrSSl9ZnVuY3Rpb24gekkoQSx0KXtsZXQgZT1pLnRvQ2FtZWxDYXNlKCIgIit0KTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2goST0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLEkrZSx7dmFsdWU6ZnVuY3Rpb24ocixnLG8pe3JldHVybiB0aGlzW0ldLmNhbGwodGhpcyx0LHIsZyxvKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgdEE9Y2xhc3N7Y29uc3RydWN0b3IodCl7dCYmdGhpcy5zZXQodCl9c2V0KHQsZSxJKXtsZXQgcj10aGlzO2Z1bmN0aW9uIGcobixFLEIpe2xldCBzPUNBKEUpO2lmKCFzKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgQz1pLmZpbmRLZXkocixzKTsoIUN8fHJbQ109PT12b2lkIDB8fEI9PT0hMHx8Qj09PXZvaWQgMCYmcltDXSE9PSExKSYmKHJbQ3x8RV09SEEobikpfWxldCBvPShuLEUpPT5pLmZvckVhY2gobiwoQixzKT0+ZyhCLHMsRSkpO2lmKGkuaXNQbGFpbk9iamVjdCh0KXx8dCBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3Ipbyh0LGUpO2Vsc2UgaWYoaS5pc1N0cmluZyh0KSYmKHQ9dC50cmltKCkpJiYhWEkodCkpbyh0ZSh0KSxlKTtlbHNlIGlmKGkuaXNPYmplY3QodCkmJmkuaXNJdGVyYWJsZSh0KSl7bGV0IG49e30sRSxCO2ZvcihsZXQgcyBvZiB0KXtpZighaS5pc0FycmF5KHMpKXRocm93IFR5cGVFcnJvcigiT2JqZWN0IGl0ZXJhdG9yIG11c3QgcmV0dXJuIGEga2V5LXZhbHVlIHBhaXIiKTtuW0I9c1swXV09KEU9bltCXSk/aS5pc0FycmF5KEUpP1suLi5FLHNbMV1dOltFLHNbMV1dOnNbMV19byhuLGUpfWVsc2UgdCE9bnVsbCYmZyhlLHQsSSk7cmV0dXJuIHRoaXN9Z2V0KHQsZSl7aWYodD1DQSh0KSx0KXtsZXQgST1pLmZpbmRLZXkodGhpcyx0KTtpZihJKXtsZXQgcj10aGlzW0ldO2lmKCFlKXJldHVybiByO2lmKGU9PT0hMClyZXR1cm4gVkkocik7aWYoaS5pc0Z1bmN0aW9uKGUpKXJldHVybiBlLmNhbGwodGhpcyxyLEkpO2lmKGkuaXNSZWdFeHAoZSkpcmV0dXJuIGUuZXhlYyhyKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKHQsZSl7aWYodD1DQSh0KSx0KXtsZXQgST1pLmZpbmRLZXkodGhpcyx0KTtyZXR1cm4hIShJJiZ0aGlzW0ldIT09dm9pZCAwJiYoIWV8fGl0KHRoaXMsdGhpc1tJXSxJLGUpKSl9cmV0dXJuITF9ZGVsZXRlKHQsZSl7bGV0IEk9dGhpcyxyPSExO2Z1bmN0aW9uIGcobyl7aWYobz1DQShvKSxvKXtsZXQgbj1pLmZpbmRLZXkoSSxvKTtuJiYoIWV8fGl0KEksSVtuXSxuLGUpKSYmKGRlbGV0ZSBJW25dLHI9ITApfX1yZXR1cm4gaS5pc0FycmF5KHQpP3QuZm9yRWFjaChnKTpnKHQpLHJ9Y2xlYXIodCl7bGV0IGU9T2JqZWN0LmtleXModGhpcyksST1lLmxlbmd0aCxyPSExO2Zvcig7SS0tOyl7bGV0IGc9ZVtJXTsoIXR8fGl0KHRoaXMsdGhpc1tnXSxnLHQsITApKSYmKGRlbGV0ZSB0aGlzW2ddLHI9ITApfXJldHVybiByfW5vcm1hbGl6ZSh0KXtsZXQgZT10aGlzLEk9e307cmV0dXJuIGkuZm9yRWFjaCh0aGlzLChyLGcpPT57bGV0IG89aS5maW5kS2V5KEksZyk7aWYobyl7ZVtvXT1IQShyKSxkZWxldGUgZVtnXTtyZXR1cm59bGV0IG49dD9fSShnKTpTdHJpbmcoZykudHJpbSgpO24hPT1nJiZkZWxldGUgZVtnXSxlW25dPUhBKHIpLElbbl09ITB9KSx0aGlzfWNvbmNhdCguLi50KXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi50KX10b0pTT04odCl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gaS5mb3JFYWNoKHRoaXMsKEkscik9PntJIT1udWxsJiZJIT09ITEmJihlW3JdPXQmJmkuaXNBcnJheShJKT9JLmpvaW4oIiwgIik6SSl9KSxlfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFt0LGVdKT0+dCsiOiAiK2UpLmpvaW4oYCUwQWApfWdldFNldENvb2tpZSgpe3JldHVybiB0aGlzLmdldCgic2V0LWNvb2tpZSIpfHxbXX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJBeGlvc0hlYWRlcnMifXN0YXRpYyBmcm9tKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpcz90Om5ldyB0aGlzKHQpfXN0YXRpYyBjb25jYXQodCwuLi5lKXtsZXQgST1uZXcgdGhpcyh0KTtyZXR1cm4gZS5mb3JFYWNoKHI9Pkkuc2V0KHIpKSxJfXN0YXRpYyBhY2Nlc3Nvcih0KXtsZXQgST0odGhpc1tlZV09dGhpc1tlZV09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxyPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIGcobyl7bGV0IG49Q0Eobyk7SVtuXXx8KHpJKHIsbyksSVtuXT0hMCl9cmV0dXJuIGkuaXNBcnJheSh0KT90LmZvckVhY2goZyk6Zyh0KSx0aGlzfX07dEEuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO2kucmVkdWNlRGVzY3JpcHRvcnModEEucHJvdG90eXBlLCh7dmFsdWU6QX0sdCk9PntsZXQgZT10WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChJKXt0aGlzW2VdPUl9fX0pO2kuZnJlZXplTWV0aG9kcyh0QSk7dmFyIHA9dEE7ZnVuY3Rpb24gQkEoQSx0KXtsZXQgZT10aGlzfHxBQSxJPXR8fGUscj1wLmZyb20oSS5oZWFkZXJzKSxnPUkuZGF0YTtyZXR1cm4gaS5mb3JFYWNoKEEsZnVuY3Rpb24obil7Zz1uLmNhbGwoZSxnLHIubm9ybWFsaXplKCksdD90LnN0YXR1czp2b2lkIDApfSksci5ub3JtYWxpemUoKSxnfWZ1bmN0aW9uIGFBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gSWUoQSx0LGUpe3UuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsdS5FUlJfQ0FOQ0VMRUQsdCxlKSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWkuaW5oZXJpdHMoSWUsdSx7X19DQU5DRUxfXzohMH0pO3ZhciBIPUllO2Z1bmN0aW9uIFFBKEEsdCxlKXtsZXQgST1lLmNvbmZpZy52YWxpZGF0ZVN0YXR1czshZS5zdGF0dXN8fCFJfHxJKGUuc3RhdHVzKT9BKGUpOnQobmV3IHUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitlLnN0YXR1cyxbdS5FUlJfQkFEX1JFUVVFU1QsdS5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKGUuc3RhdHVzLzEwMCktNF0sZS5jb25maWcsZS5yZXF1ZXN0LGUpKX1mdW5jdGlvbiBzdChBKXtsZXQgdD0vXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyhBKTtyZXR1cm4gdCYmdFsxXXx8IiJ9ZnVuY3Rpb24gdkkoQSx0KXtBPUF8fDEwO2xldCBlPW5ldyBBcnJheShBKSxJPW5ldyBBcnJheShBKSxyPTAsZz0wLG87cmV0dXJuIHQ9dCE9PXZvaWQgMD90OjFlMyxmdW5jdGlvbihFKXtsZXQgQj1EYXRlLm5vdygpLHM9SVtnXTtvfHwobz1CKSxlW3JdPUUsSVtyXT1CO2xldCBDPWcsbD0wO2Zvcig7QyE9PXI7KWwrPWVbQysrXSxDPUMlQTtpZihyPShyKzEpJUEscj09PWcmJihnPShnKzEpJUEpLEItbzx0KXJldHVybjtsZXQgYT1zJiZCLXM7cmV0dXJuIGE/TWF0aC5yb3VuZChsKjFlMy9hKTp2b2lkIDB9fXZhciByZT12STtmdW5jdGlvbiAkSShBLHQpe2xldCBlPTAsST0xZTMvdCxyLGcsbz0oQixzPURhdGUubm93KCkpPT57ZT1zLHI9bnVsbCxnJiYoY2xlYXJUaW1lb3V0KGcpLGc9bnVsbCksQSguLi5CKX07cmV0dXJuWyguLi5CKT0+e2xldCBzPURhdGUubm93KCksQz1zLWU7Qz49ST9vKEIscyk6KHI9QixnfHwoZz1zZXRUaW1lb3V0KCgpPT57Zz1udWxsLG8ocil9LEktQykpKX0sKCk9PnImJm8ocildfXZhciBvZT0kSTt2YXIgZUE9KEEsdCxlPTMpPT57bGV0IEk9MCxyPXJlKDUwLDI1MCk7cmV0dXJuIG9lKGc9PntsZXQgbz1nLmxvYWRlZCxuPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxFPW8tSSxCPXIoRSkscz1vPD1uO0k9bztsZXQgQz17bG9hZGVkOm8sdG90YWw6bixwcm9ncmVzczpuP28vbjp2b2lkIDAsYnl0ZXM6RSxyYXRlOkJ8fHZvaWQgMCxlc3RpbWF0ZWQ6QiYmbiYmcz8obi1vKS9COnZvaWQgMCxldmVudDpnLGxlbmd0aENvbXB1dGFibGU6biE9bnVsbCxbdD8iZG93bmxvYWQiOiJ1cGxvYWQiXTohMH07QShDKX0sZSl9LG50PShBLHQpPT57bGV0IGU9QSE9bnVsbDtyZXR1cm5bST0+dFswXSh7bGVuZ3RoQ29tcHV0YWJsZTplLHRvdGFsOkEsbG9hZGVkOkl9KSx0WzFdXX0sQ3Q9QT0+KC4uLnQpPT5pLmFzYXAoKCk9PkEoLi4udCkpO3ZhciBnZT1oLmhhc1N0YW5kYXJkQnJvd3NlckVudj8oKEEsdCk9PmU9PihlPW5ldyBVUkwoZSxoLm9yaWdpbiksQS5wcm90b2NvbD09PWUucHJvdG9jb2wmJkEuaG9zdD09PWUuaG9zdCYmKHR8fEEucG9ydD09PWUucG9ydCkpKShuZXcgVVJMKGgub3JpZ2luKSxoLm5hdmlnYXRvciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChoLm5hdmlnYXRvci51c2VyQWdlbnQpKTooKT0+ITA7dmFyIGllPWguaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShBLHQsZSxJLHIsZyl7bGV0IG89W0ErIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KV07aS5pc051bWJlcihlKSYmby5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUoZSkudG9HTVRTdHJpbmcoKSksaS5pc1N0cmluZyhJKSYmby5wdXNoKCJwYXRoPSIrSSksaS5pc1N0cmluZyhyKSYmby5wdXNoKCJkb21haW49IityKSxnPT09ITAmJm8ucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPW8uam9pbigiOyAiKX0scmVhZChBKXtsZXQgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xcXFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gQnQoQSl7cmV0dXJuL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QoQSl9ZnVuY3Rpb24gYXQoQSx0KXtyZXR1cm4gdD9BLnJlcGxhY2UoL1xcLz9cXC8kLywiIikrIi8iK3QucmVwbGFjZSgvXlxcLysvLCIiKTpBfWZ1bmN0aW9uIEVBKEEsdCxlKXtsZXQgST0hQnQodCk7cmV0dXJuIEEmJihJfHxlPT0hMSk/YXQoQSx0KTp0fXZhciBzZT1BPT5BIGluc3RhbmNlb2YgcD97Li4uQX06QTtmdW5jdGlvbiBiKEEsdCl7dD10fHx7fTtsZXQgZT17fTtmdW5jdGlvbiBJKEIscyxDLGwpe3JldHVybiBpLmlzUGxhaW5PYmplY3QoQikmJmkuaXNQbGFpbk9iamVjdChzKT9pLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmx9LEIscyk6aS5pc1BsYWluT2JqZWN0KHMpP2kubWVyZ2Uoe30scyk6aS5pc0FycmF5KHMpP3Muc2xpY2UoKTpzfWZ1bmN0aW9uIHIoQixzLEMsbCl7aWYoaS5pc1VuZGVmaW5lZChzKSl7aWYoIWkuaXNVbmRlZmluZWQoQikpcmV0dXJuIEkodm9pZCAwLEIsQyxsKX1lbHNlIHJldHVybiBJKEIscyxDLGwpfWZ1bmN0aW9uIGcoQixzKXtpZighaS5pc1VuZGVmaW5lZChzKSlyZXR1cm4gSSh2b2lkIDAscyl9ZnVuY3Rpb24gbyhCLHMpe2lmKGkuaXNVbmRlZmluZWQocykpe2lmKCFpLmlzVW5kZWZpbmVkKEIpKXJldHVybiBJKHZvaWQgMCxCKX1lbHNlIHJldHVybiBJKHZvaWQgMCxzKX1mdW5jdGlvbiBuKEIscyxDKXtpZihDIGluIHQpcmV0dXJuIEkoQixzKTtpZihDIGluIEEpcmV0dXJuIEkodm9pZCAwLEIpfWxldCBFPXt1cmw6ZyxtZXRob2Q6ZyxkYXRhOmcsYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOm4saGVhZGVyczooQixzLEMpPT5yKHNlKEIpLHNlKHMpLEMsITApfTtyZXR1cm4gaS5mb3JFYWNoKE9iamVjdC5rZXlzKHsuLi5BLC4uLnR9KSxmdW5jdGlvbihzKXtsZXQgQz1FW3NdfHxyLGw9QyhBW3NdLHRbc10scyk7aS5pc1VuZGVmaW5lZChsKSYmQyE9PW58fChlW3NdPWwpfSksZX12YXIgWUE9QT0+e2xldCB0PWIoe30sQSkse2RhdGE6ZSx3aXRoWFNSRlRva2VuOkkseHNyZkhlYWRlck5hbWU6cix4c3JmQ29va2llTmFtZTpnLGhlYWRlcnM6byxhdXRoOm59PXQ7aWYodC5oZWFkZXJzPW89cC5mcm9tKG8pLHQudXJsPW5BKEVBKHQuYmFzZVVSTCx0LnVybCx0LmFsbG93QWJzb2x1dGVVcmxzKSxBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLG4mJm8uc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKChuLnVzZXJuYW1lfHwiIikrIjoiKyhuLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChuLnBhc3N3b3JkKSk6IiIpKSksaS5pc0Zvcm1EYXRhKGUpKXtpZihoLmhhc1N0YW5kYXJkQnJvd3NlckVudnx8aC5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpby5zZXRDb250ZW50VHlwZSh2b2lkIDApO2Vsc2UgaWYoaS5pc0Z1bmN0aW9uKGUuZ2V0SGVhZGVycykpe2xldCBFPWUuZ2V0SGVhZGVycygpLEI9WyJjb250ZW50LXR5cGUiLCJjb250ZW50LWxlbmd0aCJdO09iamVjdC5lbnRyaWVzKEUpLmZvckVhY2goKFtzLENdKT0+e0IuaW5jbHVkZXMocy50b0xvd2VyQ2FzZSgpKSYmby5zZXQocyxDKX0pfX1pZihoLmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKEkmJmkuaXNGdW5jdGlvbihJKSYmKEk9SSh0KSksSXx8SSE9PSExJiZnZSh0LnVybCkpKXtsZXQgRT1yJiZnJiZpZS5yZWFkKGcpO0UmJm8uc2V0KHIsRSl9cmV0dXJuIHR9O3ZhciBBcj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLG5lPUFyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxJKXtsZXQgcj1ZQShBKSxnPXIuZGF0YSxvPXAuZnJvbShyLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6bixvblVwbG9hZFByb2dyZXNzOkUsb25Eb3dubG9hZFByb2dyZXNzOkJ9PXIscyxDLGwsYSxRO2Z1bmN0aW9uIGYoKXthJiZhKCksUSYmUSgpLHIuY2FuY2VsVG9rZW4mJnIuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUocyksci5zaWduYWwmJnIuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixzKX1sZXQgYz1uZXcgWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKHIubWV0aG9kLnRvVXBwZXJDYXNlKCksci51cmwsITApLGMudGltZW91dD1yLnRpbWVvdXQ7ZnVuY3Rpb24gRCgpe2lmKCFjKXJldHVybjtsZXQgeT1wLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBjJiZjLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxrPXtkYXRhOiFufHxuPT09InRleHQifHxuPT09Impzb24iP2MucmVzcG9uc2VUZXh0OmMucmVzcG9uc2Usc3RhdHVzOmMuc3RhdHVzLHN0YXR1c1RleHQ6Yy5zdGF0dXNUZXh0LGhlYWRlcnM6eSxjb25maWc6QSxyZXF1ZXN0OmN9O1FBKGZ1bmN0aW9uKEcpe2UoRyksZigpfSxmdW5jdGlvbihHKXtJKEcpLGYoKX0sayksYz1udWxsfSJvbmxvYWRlbmQiaW4gYz9jLm9ubG9hZGVuZD1EOmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWN8fGMucmVhZHlTdGF0ZSE9PTR8fGMuc3RhdHVzPT09MCYmIShjLnJlc3BvbnNlVVJMJiZjLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChEKX0sYy5vbmFib3J0PWZ1bmN0aW9uKCl7YyYmKEkobmV3IHUoIlJlcXVlc3QgYWJvcnRlZCIsdS5FQ09OTkFCT1JURUQsQSxjKSksYz1udWxsKX0sYy5vbmVycm9yPWZ1bmN0aW9uKFIpe2xldCBrPVImJlIubWVzc2FnZT9SLm1lc3NhZ2U6Ik5ldHdvcmsgRXJyb3IiLFA9bmV3IHUoayx1LkVSUl9ORVRXT1JLLEEsYyk7UC5ldmVudD1SfHxudWxsLEkoUCksYz1udWxsfSxjLm9udGltZW91dD1mdW5jdGlvbigpe2xldCBSPXIudGltZW91dD8idGltZW91dCBvZiAiK3IudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixrPXIudHJhbnNpdGlvbmFsfHxiQTtyLnRpbWVvdXRFcnJvck1lc3NhZ2UmJihSPXIudGltZW91dEVycm9yTWVzc2FnZSksSShuZXcgdShSLGsuY2xhcmlmeVRpbWVvdXRFcnJvcj91LkVUSU1FRE9VVDp1LkVDT05OQUJPUlRFRCxBLGMpKSxjPW51bGx9LGc9PT12b2lkIDAmJm8uc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gYyYmaS5mb3JFYWNoKG8udG9KU09OKCksZnVuY3Rpb24oUixrKXtjLnNldFJlcXVlc3RIZWFkZXIoayxSKX0pLGkuaXNVbmRlZmluZWQoci53aXRoQ3JlZGVudGlhbHMpfHwoYy53aXRoQ3JlZGVudGlhbHM9ISFyLndpdGhDcmVkZW50aWFscyksbiYmbiE9PSJqc29uIiYmKGMucmVzcG9uc2VUeXBlPXIucmVzcG9uc2VUeXBlKSxCJiYoW2wsUV09ZUEoQiwhMCksYy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsbCkpLEUmJmMudXBsb2FkJiYoW0MsYV09ZUEoRSksYy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLEMpLGMudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlbmQiLGEpKSwoci5jYW5jZWxUb2tlbnx8ci5zaWduYWwpJiYocz15PT57YyYmKEkoIXl8fHkudHlwZT9uZXcgSChudWxsLEEsYyk6eSksYy5hYm9ydCgpLGM9bnVsbCl9LHIuY2FuY2VsVG9rZW4mJnIuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKHMpLHIuc2lnbmFsJiYoci5zaWduYWwuYWJvcnRlZD9zKCk6ci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpKSk7bGV0IEY9c3Qoci51cmwpO2lmKEYmJmgucHJvdG9jb2xzLmluZGV4T2YoRik9PT0tMSl7SShuZXcgdSgiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitGKyI6Iix1LkVSUl9CQURfUkVRVUVTVCxBKSk7cmV0dXJufWMuc2VuZChnfHxudWxsKX0pfTt2YXIgdHI9KEEsdCk9PntsZXR7bGVuZ3RoOmV9PUE9QT9BLmZpbHRlcihCb29sZWFuKTpbXTtpZih0fHxlKXtsZXQgST1uZXcgQWJvcnRDb250cm9sbGVyLHIsZz1mdW5jdGlvbihCKXtpZighcil7cj0hMCxuKCk7bGV0IHM9QiBpbnN0YW5jZW9mIEVycm9yP0I6dGhpcy5yZWFzb247SS5hYm9ydChzIGluc3RhbmNlb2YgdT9zOm5ldyBIKHMgaW5zdGFuY2VvZiBFcnJvcj9zLm1lc3NhZ2U6cykpfX0sbz10JiZzZXRUaW1lb3V0KCgpPT57bz1udWxsLGcobmV3IHUoYHRpbWVvdXQgJHt0fSBvZiBtcyBleGNlZWRlZGAsdS5FVElNRURPVVQpKX0sdCksbj0oKT0+e0EmJihvJiZjbGVhclRpbWVvdXQobyksbz1udWxsLEEuZm9yRWFjaChCPT57Qi51bnN1YnNjcmliZT9CLnVuc3Vic2NyaWJlKGcpOkIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGcpfSksQT1udWxsKX07QS5mb3JFYWNoKEI9PkIuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGcpKTtsZXR7c2lnbmFsOkV9PUk7cmV0dXJuIEUudW5zdWJzY3JpYmU9KCk9PmkuYXNhcChuKSxFfX0sQ2U9dHI7dmFyIGVyPWZ1bmN0aW9uKihBLHQpe2xldCBlPUEuYnl0ZUxlbmd0aDtpZighdHx8ZTx0KXt5aWVsZCBBO3JldHVybn1sZXQgST0wLHI7Zm9yKDtJPGU7KXI9SSt0LHlpZWxkIEEuc2xpY2UoSSxyKSxJPXJ9LElyPWFzeW5jIGZ1bmN0aW9uKihBLHQpe2ZvciBhd2FpdChsZXQgZSBvZiBycihBKSl5aWVsZCplcihlLHQpfSxycj1hc3luYyBmdW5jdGlvbiooQSl7aWYoQVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pe3lpZWxkKkE7cmV0dXJufWxldCB0PUEuZ2V0UmVhZGVyKCk7dHJ5e2Zvcig7Oyl7bGV0e2RvbmU6ZSx2YWx1ZTpJfT1hd2FpdCB0LnJlYWQoKTtpZihlKWJyZWFrO3lpZWxkIEl9fWZpbmFsbHl7YXdhaXQgdC5jYW5jZWwoKX19LFF0PShBLHQsZSxJKT0+e2xldCByPUlyKEEsdCksZz0wLG8sbj1FPT57b3x8KG89ITAsSSYmSShFKSl9O3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe2FzeW5jIHB1bGwoRSl7dHJ5e2xldHtkb25lOkIsdmFsdWU6c309YXdhaXQgci5uZXh0KCk7aWYoQil7bigpLEUuY2xvc2UoKTtyZXR1cm59bGV0IEM9cy5ieXRlTGVuZ3RoO2lmKGUpe2xldCBsPWcrPUM7ZShsKX1FLmVucXVldWUobmV3IFVpbnQ4QXJyYXkocykpfWNhdGNoKEIpe3Rocm93IG4oQiksQn19LGNhbmNlbChFKXtyZXR1cm4gbihFKSxyLnJldHVybigpfX0se2hpZ2hXYXRlck1hcms6Mn0pfTt2YXIgQmU9NjQqMTAyNCx7aXNGdW5jdGlvbjpxQX09aSxjZT0oKHtmZXRjaDpBLFJlcXVlc3Q6dCxSZXNwb25zZTplfSk9Pih7ZmV0Y2g6QSxSZXF1ZXN0OnQsUmVzcG9uc2U6ZX0pKShpLmdsb2JhbCkse1JlYWRhYmxlU3RyZWFtOmFlLFRleHRFbmNvZGVyOlFlfT1pLmdsb2JhbCxFZT0oQSwuLi50KT0+e3RyeXtyZXR1cm4hIUEoLi4udCl9Y2F0Y2h7cmV0dXJuITF9fSxvcj1BPT57bGV0e2ZldGNoOnQsUmVxdWVzdDplLFJlc3BvbnNlOkl9PU9iamVjdC5hc3NpZ24oe30sY2UsQSkscj1xQSh0KSxnPXFBKGUpLG89cUEoSSk7aWYoIXIpcmV0dXJuITE7bGV0IG49ciYmcUEoYWUpLEU9ciYmKHR5cGVvZiBRZT09ImZ1bmN0aW9uIj8oUT0+Zj0+US5lbmNvZGUoZikpKG5ldyBRZSk6YXN5bmMgUT0+bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbmV3IGUoUSkuYXJyYXlCdWZmZXIoKSkpLEI9ZyYmbiYmRWUoKCk9PntsZXQgUT0hMSxmPW5ldyBlKGgub3JpZ2luLHtib2R5Om5ldyBhZSxtZXRob2Q6IlBPU1QiLGdldCBkdXBsZXgoKXtyZXR1cm4gUT0hMCwiaGFsZiJ9fSkuaGVhZGVycy5oYXMoIkNvbnRlbnQtVHlwZSIpO3JldHVybiBRJiYhZn0pLHM9byYmbiYmRWUoKCk9PmkuaXNSZWFkYWJsZVN0cmVhbShuZXcgSSgiIikuYm9keSkpLEM9e3N0cmVhbTpzJiYoUT0+US5ib2R5KX07ciYmWyJ0ZXh0IiwiYXJyYXlCdWZmZXIiLCJibG9iIiwiZm9ybURhdGEiLCJzdHJlYW0iXS5mb3JFYWNoKFE9PnshQ1tRXSYmKENbUV09KGYsYyk9PntsZXQgRD1mJiZmW1FdO2lmKEQpcmV0dXJuIEQuY2FsbChmKTt0aHJvdyBuZXcgdShgUmVzcG9uc2UgdHlwZSBcJyR7UX1cJyBpcyBub3Qgc3VwcG9ydGVkYCx1LkVSUl9OT1RfU1VQUE9SVCxjKX0pfSk7bGV0IGw9YXN5bmMgUT0+e2lmKFE9PW51bGwpcmV0dXJuIDA7aWYoaS5pc0Jsb2IoUSkpcmV0dXJuIFEuc2l6ZTtpZihpLmlzU3BlY0NvbXBsaWFudEZvcm0oUSkpcmV0dXJuKGF3YWl0IG5ldyBlKGgub3JpZ2luLHttZXRob2Q6IlBPU1QiLGJvZHk6UX0pLmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7aWYoaS5pc0FycmF5QnVmZmVyVmlldyhRKXx8aS5pc0FycmF5QnVmZmVyKFEpKXJldHVybiBRLmJ5dGVMZW5ndGg7aWYoaS5pc1VSTFNlYXJjaFBhcmFtcyhRKSYmKFE9USsiIiksaS5pc1N0cmluZyhRKSlyZXR1cm4oYXdhaXQgRShRKSkuYnl0ZUxlbmd0aH0sYT1hc3luYyhRLGYpPT57bGV0IGM9aS50b0Zpbml0ZU51bWJlcihRLmdldENvbnRlbnRMZW5ndGgoKSk7cmV0dXJuIGM/P2woZil9O3JldHVybiBhc3luYyBRPT57bGV0e3VybDpmLG1ldGhvZDpjLGRhdGE6RCxzaWduYWw6RixjYW5jZWxUb2tlbjp5LHRpbWVvdXQ6UixvbkRvd25sb2FkUHJvZ3Jlc3M6ayxvblVwbG9hZFByb2dyZXNzOlAscmVzcG9uc2VUeXBlOkcsaGVhZGVyczpXQSx3aXRoQ3JlZGVudGlhbHM6ZEE9InNhbWUtb3JpZ2luIixmZXRjaE9wdGlvbnM6bXR9PVlBKFEpO0c9Rz8oRysiIikudG9Mb3dlckNhc2UoKToidGV4dCI7bGV0IERBPUNlKFtGLHkmJnkudG9BYm9ydFNpZ25hbCgpXSxSKSxyQT1udWxsLGo9REEmJkRBLnVuc3Vic2NyaWJlJiYoKCk9PntEQS51bnN1YnNjcmliZSgpfSksd3Q7dHJ5e2lmKFAmJkImJmMhPT0iZ2V0IiYmYyE9PSJoZWFkIiYmKHd0PWF3YWl0IGEoV0EsRCkpIT09MCl7bGV0IE89bmV3IGUoZix7bWV0aG9kOiJQT1NUIixib2R5OkQsZHVwbGV4OiJoYWxmIn0pLFg7aWYoaS5pc0Zvcm1EYXRhKEQpJiYoWD1PLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSkmJldBLnNldENvbnRlbnRUeXBlKFgpLE8uYm9keSl7bGV0W1pBLGhBXT1udCh3dCxlQShDdChQKSkpO0Q9UXQoTy5ib2R5LEJlLFpBLGhBKX19aS5pc1N0cmluZyhkQSl8fChkQT1kQT8iaW5jbHVkZSI6Im9taXQiKTtsZXQgSj1nJiYiY3JlZGVudGlhbHMiaW4gZS5wcm90b3R5cGUscHQ9ey4uLm10LHNpZ25hbDpEQSxtZXRob2Q6Yy50b1VwcGVyQ2FzZSgpLGhlYWRlcnM6V0Eubm9ybWFsaXplKCkudG9KU09OKCksYm9keTpELGR1cGxleDoiaGFsZiIsY3JlZGVudGlhbHM6Sj9kQTp2b2lkIDB9O3JBPWcmJm5ldyBlKGYscHQpO2xldCBLPWF3YWl0KGc/dChyQSxtdCk6dChmLHB0KSksU3Q9cyYmKEc9PT0ic3RyZWFtInx8Rz09PSJyZXNwb25zZSIpO2lmKHMmJihrfHxTdCYmaikpe2xldCBPPXt9O1sic3RhdHVzIiwic3RhdHVzVGV4dCIsImhlYWRlcnMiXS5mb3JFYWNoKEZ0PT57T1tGdF09S1tGdF19KTtsZXQgWD1pLnRvRmluaXRlTnVtYmVyKEsuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIikpLFtaQSxoQV09ayYmbnQoWCxlQShDdChrKSwhMCkpfHxbXTtLPW5ldyBJKFF0KEsuYm9keSxCZSxaQSwoKT0+e2hBJiZoQSgpLGomJmooKX0pLE8pfUc9R3x8InRleHQiO2xldCBIZT1hd2FpdCBDW2kuZmluZEtleShDLEcpfHwidGV4dCJdKEssUSk7cmV0dXJuIVN0JiZqJiZqKCksYXdhaXQgbmV3IFByb21pc2UoKE8sWCk9PntRQShPLFgse2RhdGE6SGUsaGVhZGVyczpwLmZyb20oSy5oZWFkZXJzKSxzdGF0dXM6Sy5zdGF0dXMsc3RhdHVzVGV4dDpLLnN0YXR1c1RleHQsY29uZmlnOlEscmVxdWVzdDpyQX0pfSl9Y2F0Y2goSil7dGhyb3cgaiYmaigpLEomJkoubmFtZT09PSJUeXBlRXJyb3IiJiYvTG9hZCBmYWlsZWR8ZmV0Y2gvaS50ZXN0KEoubWVzc2FnZSk/T2JqZWN0LmFzc2lnbihuZXcgdSgiTmV0d29yayBFcnJvciIsdS5FUlJfTkVUV09SSyxRLHJBKSx7Y2F1c2U6Si5jYXVzZXx8Sn0pOnUuZnJvbShKLEomJkouY29kZSxRLHJBKX19fSxncj1uZXcgTWFwLEV0PUE9PntsZXQgdD1pLm1lcmdlLmNhbGwoe3NraXBVbmRlZmluZWQ6ITB9LGNlLEE/QS5lbnY6bnVsbCkse2ZldGNoOmUsUmVxdWVzdDpJLFJlc3BvbnNlOnJ9PXQsZz1bSSxyLGVdLG89Zy5sZW5ndGgsbj1vLEUsQixzPWdyO2Zvcig7bi0tOylFPWdbbl0sQj1zLmdldChFKSxCPT09dm9pZCAwJiZzLnNldChFLEI9bj9uZXcgTWFwOm9yKHQpKSxzPUI7cmV0dXJuIEJ9LEdnPUV0KCk7dmFyIGN0PXtodHRwOmtBLHhocjpuZSxmZXRjaDp7Z2V0OkV0fX07aS5mb3JFYWNoKGN0LChBLHQpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6dH0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTp0fSl9fSk7dmFyIGZlPUE9PmAtICR7QX1gLHNyPUE9PmkuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxNQT17Z2V0QWRhcHRlcjooQSx0KT0+e0E9aS5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6ZX09QSxJLHIsZz17fTtmb3IobGV0IG89MDtvPGU7bysrKXtJPUFbb107bGV0IG47aWYocj1JLCFzcihJKSYmKHI9Y3RbKG49U3RyaW5nKEkpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgdShgVW5rbm93biBhZGFwdGVyIFwnJHtufVwnYCk7aWYociYmKGkuaXNGdW5jdGlvbihyKXx8KHI9ci5nZXQodCkpKSlicmVhaztnW258fCIlMjMiK29dPXJ9aWYoIXIpe2xldCBvPU9iamVjdC5lbnRyaWVzKGcpLm1hcCgoW0UsQl0pPT5gYWRhcHRlciAke0V9IGArKEI9PT0hMT8iaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQiOiJpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCIpKSxuPWU/by5sZW5ndGg+MT9gc2luY2UgOiUwQWArby5tYXAoZmUpLmpvaW4oYCUwQWApOiIgIitmZShvWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyB1KCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbiwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOmN0fTtmdW5jdGlvbiBmdChBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgSChudWxsLEEpfWZ1bmN0aW9uIEtBKEEpe3JldHVybiBmdChBKSxBLmhlYWRlcnM9cC5mcm9tKEEuaGVhZGVycyksQS5kYXRhPUJBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxNQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8QUEuYWRhcHRlcixBKShBKS50aGVuKGZ1bmN0aW9uKEkpe3JldHVybiBmdChBKSxJLmRhdGE9QkEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsSSksSS5oZWFkZXJzPXAuZnJvbShJLmhlYWRlcnMpLEl9LGZ1bmN0aW9uKEkpe3JldHVybiBhQShJKXx8KGZ0KEEpLEkmJkkucmVzcG9uc2UmJihJLnJlc3BvbnNlLmRhdGE9QkEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsSS5yZXNwb25zZSksSS5yZXNwb25zZS5oZWFkZXJzPXAuZnJvbShJLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3QoSSl9KX12YXIgT0E9IjEuMTIuMCI7dmFyIFRBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSx0KT0+e1RBW0FdPWZ1bmN0aW9uKEkpe3JldHVybiB0eXBlb2YgST09PUF8fCJhIisodDwxPyJuICI6IiAiKStBfX0pO3ZhciBsZT17fTtUQS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24odCxlLEkpe2Z1bmN0aW9uIHIoZyxvKXtyZXR1cm4iW0F4aW9zIHYiK09BKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK2crIlwnIitvKyhJPyIuICIrSToiIil9cmV0dXJuKGcsbyxuKT0+e2lmKHQ9PT0hMSl0aHJvdyBuZXcgdShyKG8sIiBoYXMgYmVlbiByZW1vdmVkIisoZT8iIGluICIrZToiIikpLHUuRVJSX0RFUFJFQ0FURUQpO3JldHVybiBlJiYhbGVbb10mJihsZVtvXT0hMCxjb25zb2xlLndhcm4ocihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2IitlKyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLHQ/dChnLG8sbik6ITB9fTtUQS5zcGVsbGluZz1mdW5jdGlvbih0KXtyZXR1cm4oZSxJKT0+KGNvbnNvbGUud2FybihgJHtJfSBpcyBsaWtlbHkgYSBtaXNzcGVsbGluZyBvZiAke3R9YCksITApfTtmdW5jdGlvbiBucihBLHQsZSl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyB1KCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iix1LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgST1PYmplY3Qua2V5cyhBKSxyPUkubGVuZ3RoO2Zvcig7ci0tID4wOyl7bGV0IGc9SVtyXSxvPXRbZ107aWYobyl7bGV0IG49QVtnXSxFPW49PT12b2lkIDB8fG8obixnLEEpO2lmKEUhPT0hMCl0aHJvdyBuZXcgdSgib3B0aW9uICIrZysiIG11c3QgYmUgIitFLHUuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKGUhPT0hMCl0aHJvdyBuZXcgdSgiVW5rbm93biBvcHRpb24gIitnLHUuRVJSX0JBRF9PUFRJT04pfX12YXIgY0E9e2Fzc2VydE9wdGlvbnM6bnIsdmFsaWRhdG9yczpUQX07dmFyIFk9Y0EudmFsaWRhdG9ycyxJQT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZmF1bHRzPXR8fHt9LHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyB0dCxyZXNwb25zZTpuZXcgdHR9fWFzeW5jIHJlcXVlc3QodCxlKXt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuX3JlcXVlc3QodCxlKX1jYXRjaChJKXtpZihJIGluc3RhbmNlb2YgRXJyb3Ipe2xldCByPXt9O0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHIpOnI9bmV3IEVycm9yO2xldCBnPXIuc3RhY2s/ci5zdGFjay5yZXBsYWNlKC9eLitcXG4vLCIiKToiIjt0cnl7SS5zdGFjaz9nJiYhU3RyaW5nKEkuc3RhY2spLmVuZHNXaXRoKGcucmVwbGFjZSgvXi4rXFxuLitcXG4vLCIiKSkmJihJLnN0YWNrKz1gJTBBYCtnKTpJLnN0YWNrPWd9Y2F0Y2h7fX10aHJvdyBJfX1fcmVxdWVzdCh0LGUpe3R5cGVvZiB0PT0ic3RyaW5nIj8oZT1lfHx7fSxlLnVybD10KTplPXR8fHt9LGU9Yih0aGlzLmRlZmF1bHRzLGUpO2xldHt0cmFuc2l0aW9uYWw6SSxwYXJhbXNTZXJpYWxpemVyOnIsaGVhZGVyczpnfT1lO0khPT12b2lkIDAmJmNBLmFzc2VydE9wdGlvbnMoSSx7c2lsZW50SlNPTlBhcnNpbmc6WS50cmFuc2l0aW9uYWwoWS5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpZLnRyYW5zaXRpb25hbChZLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6WS50cmFuc2l0aW9uYWwoWS5ib29sZWFuKX0sITEpLHIhPW51bGwmJihpLmlzRnVuY3Rpb24ocik/ZS5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6cn06Y0EuYXNzZXJ0T3B0aW9ucyhyLHtlbmNvZGU6WS5mdW5jdGlvbixzZXJpYWxpemU6WS5mdW5jdGlvbn0sITApKSxlLmFsbG93QWJzb2x1dGVVcmxzIT09dm9pZCAwfHwodGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscyE9PXZvaWQgMD9lLmFsbG93QWJzb2x1dGVVcmxzPXRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHM6ZS5hbGxvd0Fic29sdXRlVXJscz0hMCksY0EuYXNzZXJ0T3B0aW9ucyhlLHtiYXNlVXJsOlkuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOlkuc3BlbGxpbmcoIndpdGhYU1JGVG9rZW4iKX0sITApLGUubWV0aG9kPShlLm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWcmJmkubWVyZ2UoZy5jb21tb24sZ1tlLm1ldGhvZF0pO2cmJmkuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxRPT57ZGVsZXRlIGdbUV19KSxlLmhlYWRlcnM9cC5jb25jYXQobyxnKTtsZXQgbj1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihmKXt0eXBlb2YgZi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZmLnJ1bldoZW4oZSk9PT0hMXx8KEU9RSYmZi5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZi5mdWxmaWxsZWQsZi5yZWplY3RlZCkpfSk7bGV0IEI9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihmKXtCLnB1c2goZi5mdWxmaWxsZWQsZi5yZWplY3RlZCl9KTtsZXQgcyxDPTAsbDtpZighRSl7bGV0IFE9W0tBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoUS51bnNoaWZ0KC4uLm4pLFEucHVzaCguLi5CKSxsPVEubGVuZ3RoLHM9UHJvbWlzZS5yZXNvbHZlKGUpO0M8bDspcz1zLnRoZW4oUVtDKytdLFFbQysrXSk7cmV0dXJuIHN9bD1uLmxlbmd0aDtsZXQgYT1lO2ZvcihDPTA7QzxsOyl7bGV0IFE9bltDKytdLGY9bltDKytdO3RyeXthPVEoYSl9Y2F0Y2goYyl7Zi5jYWxsKHRoaXMsYyk7YnJlYWt9fXRyeXtzPUtBLmNhbGwodGhpcyxhKX1jYXRjaChRKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoUSl9Zm9yKEM9MCxsPUIubGVuZ3RoO0M8bDspcz1zLnRoZW4oQltDKytdLEJbQysrXSk7cmV0dXJuIHN9Z2V0VXJpKHQpe3Q9Yih0aGlzLmRlZmF1bHRzLHQpO2xldCBlPUVBKHQuYmFzZVVSTCx0LnVybCx0LmFsbG93QWJzb2x1dGVVcmxzKTtyZXR1cm4gbkEoZSx0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpfX07aS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbih0KXtJQS5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxJKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGIoSXx8e30se21ldGhvZDp0LHVybDplLGRhdGE6KEl8fHt9KS5kYXRhfSkpfX0pO2kuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoSSl7cmV0dXJuIGZ1bmN0aW9uKGcsbyxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGIobnx8e30se21ldGhvZDp0LGhlYWRlcnM6ST97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6ZyxkYXRhOm99KSl9fUlBLnByb3RvdHlwZVt0XT1lKCksSUEucHJvdG90eXBlW3QrIkZvcm0iXT1lKCEwKX0pO3ZhciBmQT1JQTt2YXIgbHQ9Y2xhc3MgQXtjb25zdHJ1Y3Rvcih0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IGU7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGcpe2U9Z30pO2xldCBJPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4ocj0+e2lmKCFJLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBnPUkuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtnLS0gPjA7KUkuX2xpc3RlbmVyc1tnXShyKTtJLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPXI9PntsZXQgZyxvPW5ldyBQcm9taXNlKG49PntJLnN1YnNjcmliZShuKSxnPW59KS50aGVuKHIpO3JldHVybiBvLmNhbmNlbD1mdW5jdGlvbigpe0kudW5zdWJzY3JpYmUoZyl9LG99LHQoZnVuY3Rpb24oZyxvLG4pe0kucmVhc29ufHwoSS5yZWFzb249bmV3IEgoZyxvLG4pLGUoSS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUodCl7aWYodGhpcy5yZWFzb24pe3QodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2godCk6dGhpcy5fbGlzdGVuZXJzPVt0XX11bnN1YnNjcmliZSh0KXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgZT10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZih0KTtlIT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UoZSwxKX10b0Fib3J0U2lnbmFsKCl7bGV0IHQ9bmV3IEFib3J0Q29udHJvbGxlcixlPUk9Pnt0LmFib3J0KEkpfTtyZXR1cm4gdGhpcy5zdWJzY3JpYmUoZSksdC5zaWduYWwudW5zdWJzY3JpYmU9KCk9PnRoaXMudW5zdWJzY3JpYmUoZSksdC5zaWduYWx9c3RhdGljIHNvdXJjZSgpe2xldCB0O3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihyKXt0PXJ9KSxjYW5jZWw6dH19fSx1ZT1sdDtmdW5jdGlvbiB1dChBKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIEEuYXBwbHkobnVsbCxlKX19ZnVuY3Rpb24gZHQoQSl7cmV0dXJuIGkuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIER0PXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhEdCkuZm9yRWFjaCgoW0EsdF0pPT57RHRbdF09QX0pO3ZhciBkZT1EdDtmdW5jdGlvbiBEZShBKXtsZXQgdD1uZXcgZkEoQSksZT1vQShmQS5wcm90b3R5cGUucmVxdWVzdCx0KTtyZXR1cm4gaS5leHRlbmQoZSxmQS5wcm90b3R5cGUsdCx7YWxsT3duS2V5czohMH0pLGkuZXh0ZW5kKGUsdCxudWxsLHthbGxPd25LZXlzOiEwfSksZS5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIERlKGIoQSxyKSl9LGV9dmFyIG09RGUoQUEpO20uQXhpb3M9ZkE7bS5DYW5jZWxlZEVycm9yPUg7bS5DYW5jZWxUb2tlbj11ZTttLmlzQ2FuY2VsPWFBO20uVkVSU0lPTj1PQTttLnRvRm9ybURhdGE9VDttLkF4aW9zRXJyb3I9dTttLkNhbmNlbD1tLkNhbmNlbGVkRXJyb3I7bS5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQpfTttLnNwcmVhZD11dDttLmlzQXhpb3NFcnJvcj1kdDttLm1lcmdlQ29uZmlnPWI7bS5BeGlvc0hlYWRlcnM9cDttLmZvcm1Ub0pTT049QT0+SkEoaS5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTttLmdldEFkYXB0ZXI9TUEuZ2V0QWRhcHRlcjttLkh0dHBTdGF0dXNDb2RlPWRlO20uZGVmYXVsdD1tO3ZhciB4QT1tO3ZhcntBeGlvczpSaSxBeGlvc0Vycm9yOk5pLENhbmNlbGVkRXJyb3I6VWksaXNDYW5jZWw6R2ksQ2FuY2VsVG9rZW46a2ksVkVSU0lPTjpMaSxhbGw6YmksQ2FuY2VsOkppLGlzQXhpb3NFcnJvcjpIaSxzcHJlYWQ6WWksdG9Gb3JtRGF0YTpxaSxBeGlvc0hlYWRlcnM6TWksSHR0cFN0YXR1c0NvZGU6S2ksZm9ybVRvSlNPTjpPaSxnZXRBZGFwdGVyOlRpLG1lcmdlQ29uZmlnOnhpfT14QTt2YXIgbEEsTSx5dCxodD17ZW52OntlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoOmZ1bmN0aW9uKEEpe3l0PW5ldyBVaW50OEFycmF5KE0uZXhwb3J0cy5tZW1vcnkuYnVmZmVyKX19fSxQQT1jbGFzc3tpbml0KCl7cmV0dXJuIGxBfHwodHlwZW9mIGZldGNoPCJ1Ij9sQT1mZXRjaCgiZGF0YTphcHBsaWNhdGlvbi93YXNtO2Jhc2U2NCwiK2hlKS50aGVuKHQ9PnQuYXJyYXlCdWZmZXIoKSkudGhlbih0PT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0LGh0KSkudGhlbih0aGlzLl9pbml0KTpsQT1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShCdWZmZXIuZnJvbShoZSwiYmFzZTY0IiksaHQpLnRoZW4odGhpcy5faW5pdCksbEEpfV9pbml0KHQpe009dC5pbnN0YW5jZSxodC5lbnYuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKX1kZWNvZGUodCxlPTApe2lmKCFNKXRocm93IG5ldyBFcnJvcigiWlNURERlY29kZXI6IEF3YWl0IC5pbml0KCkgYmVmb3JlIGRlY29kaW5nLiIpO2xldCBJPXQuYnl0ZUxlbmd0aCxyPU0uZXhwb3J0cy5tYWxsb2MoSSk7eXQuc2V0KHQsciksZT1lfHxOdW1iZXIoTS5leHBvcnRzLlpTVERfZmluZERlY29tcHJlc3NlZFNpemUocixJKSk7bGV0IGc9TS5leHBvcnRzLm1hbGxvYyhlKSxvPU0uZXhwb3J0cy5aU1REX2RlY29tcHJlc3MoZyxlLHIsSSksbj15dC5zbGljZShnLGcrbyk7cmV0dXJuIE0uZXhwb3J0cy5mcmVlKHIpLE0uZXhwb3J0cy5mcmVlKGcpLG59fSxoZT0iQUdGemJRRUFBQUFCYmc1Z0EzOS9md0YvWUFGL0FYOWdBbjkvQUdBQmZ3QmdCWDkvZjM5L0FYOWdBMzkvZndCZ0JIOS9mMzhCZjJBQUFYOWdBbjkvQVg5Z0IzOS9mMzkvZjM4QmYyQUNmMzhCZm1BSWYzOS9mMzkvZjM4QmYyQUZmMzkvZjM4QVlBNS9mMzkvZjM5L2YzOS9mMzkvZndGL0FpY0JBMlZ1ZGg5bGJYTmpjbWx3ZEdWdVgyNXZkR2xtZVY5dFpXMXZjbmxmWjNKdmQzUm9BQU1ESXlJSEFBQUJBUU1IQXdFQUNRUUFCUUVJQ0FFRkJnUUVCQU1HQUFBS0FBVUxEQTBHQkFVQmNBRUJBUVVIQVFHQUFvQ0FBZ1lJQVg4QlFZQ2pCQXNIcmdFTEJtMWxiVzl5ZVFJQUJtMWhiR3h2WXdBRkJHWnlaV1VBQmd4YVUxUkVYMmx6UlhKeWIzSUFFaGxhVTFSRVgyWnBibVJFWldOdmJYQnlaWE56WldSVGFYcGxBQndQV2xOVVJGOWtaV052YlhCeVpYTnpBQ0laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBRUY5ZlpYSnlibTlmYkc5allYUnBiMjRBQVFsemRHRmphMU5oZG1VQUJ3eHpkR0ZqYTFKbGMzUnZjbVVBQ0FwemRHRmphMEZzYkc5akFBa0tpL0lCSWdVQVFZUWZDek1CQVg4Z0FnUkFJQUFoQXdOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBc3BBUUYvSUFJRVFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCQVdzaUFnMEFDd3NnQUF0c0FRSi9RWUFmS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUEvQUVFUWRHdEIvLzhEYWtFUWRrQUFRWDlHQkg5QkFBVkJBQkFBUVFFTFJRMEJDMEdBSHlBQU5nSUFJQUVQQzBHRUgwRXdOZ0lBUVg4THVTY0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCaUI4b0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCVUVEZGlJQWRpSUJRUU54QkVBQ1FDQUJRWDl6UVFGeElBQnFJZ0pCQTNRaUFVR3dIMm9pQUNBQlFiZ2ZhaWdDQUNJQktBSUlJZ1JHQkVCQmlCOGdCa0YrSUFKM2NUWUNBQXdCQ3lBRUlBQTJBZ3dnQUNBRU5nSUlDeUFCUVFocUlRQWdBU0FDUVFOMElnSkJBM0kyQWdRZ0FTQUNhaUlCSUFFb0FnUkJBWEkyQWdRTUR3c2dCVUdRSHlnQ0FDSUhUUTBCSUFFRVFBSkFRUUlnQUhRaUFrRUFJQUpyY2lBQklBQjBjV2dpQVVFRGRDSUFRYkFmYWlJQ0lBQkJ1QjlxS0FJQUlnQW9BZ2dpQkVZRVFFR0lIeUFHUVg0Z0FYZHhJZ1kyQWdBTUFRc2dCQ0FDTmdJTUlBSWdCRFlDQ0FzZ0FDQUZRUU55TmdJRUlBQWdCV29pQ0NBQlFRTjBJZ0VnQldzaUJFRUJjallDQkNBQUlBRnFJQVEyQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUZCbkI4b0FnQWhBZ0ovSUFaQkFTQUhRUU4yZENJRGNVVUVRRUdJSHlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFR2NIeUFJTmdJQVFaQWZJQVEyQWdBTUR3dEJqQjhvQWdBaUMwVU5BU0FMYUVFQ2RFRzRJV29vQWdBaUFpZ0NCRUY0Y1NBRmF5RURJQUloQVFOQUFrQWdBU2dDRUNJQVJRUkFJQUVvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FGYXlJQklBTWdBU0FEU1NJQkd5RURJQUFnQWlBQkd5RUNJQUFoQVF3QkN3c2dBaWdDR0NFSklBSWdBaWdDRENJRVJ3UkFRWmdmS0FJQUdpQUNLQUlJSWdBZ0JEWUNEQ0FFSUFBMkFnZ01EZ3NnQWtFVWFpSUJLQUlBSWdCRkJFQWdBaWdDRUNJQVJRMERJQUpCRUdvaEFRc0RRQ0FCSVFnZ0FDSUVRUlJxSWdFb0FnQWlBQTBBSUFSQkVHb2hBU0FFS0FJUUlnQU5BQXNnQ0VFQU5nSUFEQTBMUVg4aEJTQUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUZRWXdmS0FJQUlnaEZEUUJCQUNBRmF5RURBa0FDUUFKQUFuOUJBQ0FGUVlBQ1NRMEFHa0VmSUFWQi8vLy9CMHNOQUJvZ0JVRW1JQUJCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWdzaUIwRUNkRUc0SVdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQnVDRnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBRmF5SUNJQU5KSVFFZ0FpQURJQUViSVFNZ0FDQUVJQUViSVFRZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQkVVTkFDQURRWkFmS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHWUh5Z0NBQm9nQkNnQ0NDSUFJQUkyQWd3Z0FpQUFOZ0lJREF3TElBUkJGR29pQVNnQ0FDSUFSUVJBSUFRb0FoQWlBRVVOQXlBRVFSQnFJUUVMQTBBZ0FTRUdJQUFpQWtFVWFpSUJLQUlBSWdBTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lBRFFBTElBWkJBRFlDQUF3TEN5QUZRWkFmS0FJQUlnUk5CRUJCbkI4b0FnQWhBQUpBSUFRZ0JXc2lBVUVRVHdSQUlBQWdCV29pQWlBQlFRRnlOZ0lFSUFBZ0JHb2dBVFlDQUNBQUlBVkJBM0kyQWdRTUFRc2dBQ0FFUVFOeU5nSUVJQUFnQkdvaUFTQUJLQUlFUVFGeU5nSUVRUUFoQWtFQUlRRUxRWkFmSUFFMkFnQkJuQjhnQWpZQ0FDQUFRUWhxSVFBTURRc2dCVUdVSHlnQ0FDSUNTUVJBUVpRZklBSWdCV3NpQVRZQ0FFR2dIMEdnSHlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FlQWlLQUlBQkVCQjZDSW9BZ0FNQVF0QjdDSkNmemNDQUVIa0lrS0FvSUNBZ0lBRU53SUFRZUFpSUFwQkRHcEJjSEZCMktyVnFnVnpOZ0lBUWZRaVFRQTJBZ0JCeENKQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSEFJaWdDQUNJRUJFQkJ1Q0lvQWdBaUJ5QUJhaUlKSUFkTklBUWdDVWx5RFEwTEFrQkJ4Q0l0QUFCQkJIRkZCRUFDUUFKQUFrQUNRRUdnSHlnQ0FDSUVCRUJCeUNJaEFBTkFJQVFnQUNnQ0FDSUhUd1JBSUFjZ0FDZ0NCR29nQkVzTkF3c2dBQ2dDQ0NJQURRQUxDMEVBRUFRaUFrRi9SZzBESUFFaEJrSGtJaWdDQUNJQVFRRnJJZ1FnQW5FRVFDQUJJQUpySUFJZ0JHcEJBQ0FBYTNGcUlRWUxJQVVnQms4TkEwSEFJaWdDQUNJQUJFQkJ1Q0lvQWdBaUJDQUdhaUlJSUFSTklBQWdDRWx5RFFRTElBWVFCQ0lBSUFKSERRRU1CUXNnQmlBQ2F5QUljU0lHRUFRaUFpQUFLQUlBSUFBb0FnUnFSZzBCSUFJaEFBc2dBRUYvUmcwQklBVkJNR29nQmswRVFDQUFJUUlNQkF0QjZDSW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFQVJCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCeENKQnhDSW9BZ0JCQkhJMkFnQUxJQUVRQkNJQ1FYOUdRUUFRQkNJQVFYOUdjaUFBSUFKTmNnMEZJQUFnQW1zaUJpQUZRU2hxVFEwRkMwRzRJa0c0SWlnQ0FDQUdhaUlBTmdJQVFid2lLQUlBSUFCSkJFQkJ2Q0lnQURZQ0FBc0NRRUdnSHlnQ0FDSURCRUJCeUNJaEFBTkFJQUlnQUNnQ0FDSUJJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFRTFFaZ2ZLQUlBSWdCQkFDQUFJQUpORzBVRVFFR1lIeUFDTmdJQUMwRUFJUUJCekNJZ0JqWUNBRUhJSWlBQ05nSUFRYWdmUVg4MkFnQkJyQjlCNENJb0FnQTJBZ0JCMUNKQkFEWUNBQU5BSUFCQkEzUWlBVUc0SDJvZ0FVR3dIMm9pQkRZQ0FDQUJRYndmYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBHVUh5QUdRU2hySWdCQmVDQUNhMEVIY1NJQmF5SUVOZ0lBUWFBZklBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFRTElBSWdBMDBnQVNBRFMzSU5BaUFBS0FJTVFRaHhEUUlnQUNBRUlBWnFOZ0lFUWFBZklBTkJlQ0FEYTBFSGNTSUFhaUlCTmdJQVFaUWZRWlFmS0FJQUlBWnFJZ0lnQUdzaUFEWUNBQ0FCSUFCQkFYSTJBZ1FnQWlBRGFrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBTUxRUUFoQkF3S0MwRUFJUUlNQ0F0Qm1COG9BZ0FnQWtzRVFFR1lIeUFDTmdJQUN5QUNJQVpxSVFGQnlDSWhBQUpBQWtBQ1FBTkFJQUVnQUNnQ0FFY0VRQ0FBS0FJSUlnQU5BUXdDQ3dzZ0FDMEFERUVJY1VVTkFRdEJ5Q0loQUFOQUlBTWdBQ2dDQUNJQlR3UkFJQUVnQUNnQ0JHb2lCQ0FEU3cwREN5QUFLQUlJSVFBTUFBc0FDeUFBSUFJMkFnQWdBQ0FBS0FJRUlBWnFOZ0lFSUFKQmVDQUNhMEVIY1dvaUJ5QUZRUU55TmdJRUlBRkJlQ0FCYTBFSGNXb2lCaUFGSUFkcUlnVnJJUUFnQXlBR1JnUkFRYUFmSUFVMkFnQkJsQjlCbEI4b0FnQWdBR29pQURZQ0FDQUZJQUJCQVhJMkFnUU1DQXRCbkI4b0FnQWdCa1lFUUVHY0h5QUZOZ0lBUVpBZlFaQWZLQUlBSUFCcUlnQTJBZ0FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUF3SUN5QUdLQUlFSWdOQkEzRkJBVWNOQmlBRFFYaHhJUWtnQTBIL0FVMEVRQ0FHS0FJTUlnRWdCaWdDQ0NJQ1JnUkFRWWdmUVlnZktBSUFRWDRnQTBFRGRuZHhOZ0lBREFjTElBSWdBVFlDRENBQklBSTJBZ2dNQmdzZ0JpZ0NHQ0VJSUFZZ0JpZ0NEQ0lDUndSQUlBWW9BZ2dpQVNBQ05nSU1JQUlnQVRZQ0NBd0ZDeUFHUVJScUlnRW9BZ0FpQTBVRVFDQUdLQUlRSWdORkRRUWdCa0VRYWlFQkN3TkFJQUVoQkNBRElnSkJGR29pQVNnQ0FDSUREUUFnQWtFUWFpRUJJQUlvQWhBaUF3MEFDeUFFUVFBMkFnQU1CQXRCbEI4Z0JrRW9heUlBUVhnZ0FtdEJCM0VpQVdzaUNEWUNBRUdnSHlBQklBSnFJZ0UyQWdBZ0FTQUlRUUZ5TmdJRUlBQWdBbXBCS0RZQ0JFR2tIMEh3SWlnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUhRSWlrQ0FEY0NFQ0FCUWNnaUtRSUFOd0lJUWRBaUlBRkJDR28yQWdCQnpDSWdCallDQUVISUlpQUNOZ0lBUWRRaVFRQTJBZ0FnQVVFWWFpRUFBMEFnQUVFSE5nSUVJQUJCQ0dvZ0FFRUVhaUVBSUFSSkRRQUxJQUVnQTBZTkFDQUJJQUVvQWdSQmZuRTJBZ1FnQXlBQklBTnJJZ0pCQVhJMkFnUWdBU0FDTmdJQUlBSkIvd0ZOQkVBZ0FrRjRjVUd3SDJvaEFBSi9RWWdmS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHSUh5QUJJQUp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hBU0FBSUFNMkFnZ2dBU0FETmdJTUlBTWdBRFlDRENBRElBRTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVNZZ0FrRUlkbWNpQUd0MlFRRnhJQUJCQVhSclFUNXFJUUFMSUFNZ0FEWUNIQ0FEUWdBM0FoQWdBRUVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQkVFQklBQjBJZ1p4UlFSQVFZd2ZJQVFnQm5JMkFnQWdBU0FETmdJQURBRUxJQUpCR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCQU5BSUFRaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJDQUFRUUYwSVFBZ0FTQUVRUVJ4YWlJR0tBSVFJZ1FOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTFFaUWZLQUlBSWdBZ0JVME5BRUdVSHlBQUlBVnJJZ0UyQWdCQm9COUJvQjhvQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRWVFmUVRBMkFnQkJBQ0VBREFjTFFRQWhBZ3NnQ0VVTkFBSkFJQVlvQWh3aUFVRUNkRUc0SVdvaUJDZ0NBQ0FHUmdSQUlBUWdBallDQUNBQ0RRRkJqQjlCakI4b0FnQkJmaUFCZDNFMkFnQU1BZ3NnQ0VFUVFSUWdDQ2dDRUNBR1JodHFJQUkyQWdBZ0FrVU5BUXNnQWlBSU5nSVlJQVlvQWhBaUFRUkFJQUlnQVRZQ0VDQUJJQUkyQWhnTElBWW9BaFFpQVVVTkFDQUNJQUUyQWhRZ0FTQUNOZ0lZQ3lBQUlBbHFJUUFnQmlBSmFpSUdLQUlFSVFNTElBWWdBMEYrY1RZQ0JDQUZJQUJCQVhJMkFnUWdBQ0FGYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUY0Y1VHd0gyb2hBUUovUVlnZktBSUFJZ0pCQVNBQVFRTjJkQ0lBY1VVRVFFR0lIeUFBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUFrRUJJQU4wSWdSeFJRUkFRWXdmSUFJZ0JISTJBZ0FnQVNBRk5nSUFEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQWdOQUlBSWlBU2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBaUFEUVFGMElRTWdBU0FDUVFSeGFpSUVLQUlRSWdJTkFBc2dCQ0FGTmdJUUN5QUZJQUUyQWhnZ0JTQUZOZ0lNSUFVZ0JUWUNDQXdCQ3lBQktBSUlJZ0FnQlRZQ0RDQUJJQVUyQWdnZ0JVRUFOZ0lZSUFVZ0FUWUNEQ0FGSUFBMkFnZ0xJQWRCQ0dvaEFBd0NDd0pBSUFkRkRRQUNRQ0FFS0FJY0lnQkJBblJCdUNGcUlnRW9BZ0FnQkVZRVFDQUJJQUkyQWdBZ0FnMEJRWXdmSUFoQmZpQUFkM0VpQ0RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFSR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFjMkFoZ2dCQ2dDRUNJQUJFQWdBaUFBTmdJUUlBQWdBallDR0FzZ0JDZ0NGQ0lBUlEwQUlBSWdBRFlDRkNBQUlBSTJBaGdMQWtBZ0EwRVBUUVJBSUFRZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQkdvaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFRZ0JVRURjallDQkNBRUlBVnFJZ0lnQTBFQmNqWUNCQ0FDSUFOcUlBTTJBZ0FnQTBIL0FVMEVRQ0FEUVhoeFFiQWZhaUVBQW45QmlCOG9BZ0FpQVVFQklBTkJBM1owSWdOeFJRUkFRWWdmSUFFZ0EzSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFQklBQWdBallDQ0NBQklBSTJBZ3dnQWlBQU5nSU1JQUlnQVRZQ0NBd0JDMEVmSVFBZ0EwSC8vLzhIVFFSQUlBTkJKaUFEUVFoMlp5SUFhM1pCQVhFZ0FFRUJkR3RCUG1vaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRYmdoYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQmpCOGdCaUFJY2pZQ0FDQUJJQUkyQWdBTUFRc2dBMEVaSUFCQkFYWnJRUUFnQUVFZlJ4dDBJUUFnQVNnQ0FDRUZBMEFnQlNJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFR0lBQkJBWFFoQUNBQklBWkJCSEZxSWdZb0FoQWlCUTBBQ3lBR0lBSTJBaEFMSUFJZ0FUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBRUxJQUVvQWdnaUFDQUNOZ0lNSUFFZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFCTmdJTUlBSWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDVVVOQUFKQUlBSW9BaHdpQUVFQ2RFRzRJV29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQmpCOGdDMEYrSUFCM2NUWUNBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBSkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBazJBaGdnQWlnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBaWdDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBSWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0Ftb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBSWdCVUVEY2pZQ0JDQUNJQVZxSWdRZ0EwRUJjallDQkNBRElBUnFJQU0yQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUJCbkI4b0FnQWhBUUovUVFFZ0IwRURkblFpQlNBR2NVVUVRRUdJSHlBRklBWnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEJpQUFJQUUyQWdnZ0JpQUJOZ0lNSUFFZ0FEWUNEQ0FCSUFZMkFnZ0xRWndmSUFRMkFnQkJrQjhnQXpZQ0FBc2dBa0VJYWlFQUN5QUtRUkJxSkFBZ0FBdlNDd0VIZndKQUlBQkZEUUFnQUVFSWF5SUNJQUJCQkdzb0FnQWlBVUY0Y1NJQWFpRUZBa0FnQVVFQmNRMEFJQUZCQTNGRkRRRWdBaUFDS0FJQUlnRnJJZ0pCbUI4b0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVHY0h5Z0NBQ0FDUndSQUlBRkIvd0ZOQkVBZ0FVRURkaUVFSUFJb0Fnd2lBU0FDS0FJSUlnTkdCRUJCaUI5QmlCOG9BZ0JCZmlBRWQzRTJBZ0FNQlFzZ0F5QUJOZ0lNSUFFZ0F6WUNDQXdFQ3lBQ0tBSVlJUVlnQWlBQ0tBSU1JZ0ZIQkVBZ0FpZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQUpCRkdvaUJDZ0NBQ0lEUlFSQUlBSW9BaEFpQTBVTkFpQUNRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGS0FJRUlnRkJBM0ZCQTBjTkFrR1FIeUFBTmdJQUlBVWdBVUYrY1RZQ0JDQUNJQUJCQVhJMkFnUWdCU0FBTmdJQUR3dEJBQ0VCQ3lBR1JRMEFBa0FnQWlnQ0hDSURRUUowUWJnaGFpSUVLQUlBSUFKR0JFQWdCQ0FCTmdJQUlBRU5BVUdNSDBHTUh5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBSkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQWlnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dBaWdDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQUpBQWtBQ1FDQUJRUUp4UlFSQVFhQWZLQUlBSUFWR0JFQkJvQjhnQWpZQ0FFR1VIMEdVSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRWndmS0FJQVJ3MEdRWkFmUVFBMkFnQkJuQjlCQURZQ0FBOExRWndmS0FJQUlBVkdCRUJCbkI4Z0FqWUNBRUdRSDBHUUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUdJSDBHSUh5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHWUh5Z0NBQm9nQlNnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUZCZm5FMkFnUWdBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQXdEQzBFQUlRRUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkJ1Q0ZxSWdRb0FnQWdCVVlFUUNBRUlBRTJBZ0FnQVEwQlFZd2ZRWXdmS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBRktBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUNBQ1Fad2ZLQUlBUncwQVFaQWZJQUEyQWdBUEN5QUFRZjhCVFFSQUlBQkJlSEZCc0I5cUlRRUNmMEdJSHlnQ0FDSURRUUVnQUVFRGRuUWlBSEZGQkVCQmlCOGdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtBQ1FFR01IeWdDQUNJRVFRRWdBM1FpQjNGRkJFQkJqQjhnQkNBSGNqWUNBQ0FCSUFJMkFnQWdBaUFCTmdJWURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBUU5BSUFFaUJDZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFTQURRUUYwSVFNZ0JDQUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdCRFlDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBRUtBSUlJZ0FnQWpZQ0RDQUVJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0JEWUNEQ0FDSUFBMkFnZ0xRYWdmUWFnZktBSUFRUUZySWdCQmZ5QUFHellDQUFzTEJBQWpBQXNHQUNBQUpBQUxFQUFqQUNBQWEwRndjU0lBSkFBZ0FBdEtBUUYvSUFBZ0FVa0VRQ0FBSUFFZ0FoQUNEd3NnQWdSQUlBQWdBbW9oQXlBQklBSnFJUUVEUUNBRFFRRnJJZ01nQVVFQmF5SUJMUUFBT2dBQUlBSkJBV3NpQWcwQUN3c2dBQXY5RGdJUmZ3RitJd0JCTUdzaUJ5UUFRYmgvSVFnQ1FDQUZSUTBBSUFRc0FBQWlDVUgvQVhFaEN3SkFJQWxCQUVnRVFDQUxRZjRBYTBFQmRpSUdJQVZQRFFKQmJDRUlJQXRCL3dCcklndEIvd0ZMRFFJZ0JFRUJhaUVJUVFBaEJRTkFJQVVnQzA4RVFDQUxJUWdnQmlFTERBTUZJQUFnQldvZ0NDQUZRUUYyYWlJRUxRQUFRUVIyT2dBQUlBQWdCVUVCY21vZ0JDMEFBRUVQY1RvQUFDQUZRUUpxSVFVTUFRc0FDd0FMSUFVZ0MwME5BU0FIUWY4Qk5nSUVJQVlnQjBFRWFpQUhRUWhxSUFSQkFXb2lEaUFMRUF3aUJFR0lmMHNFUUNBRUlRZ01BZ3RCVkNFSUlBY29BZ2dpRUVFR1N3MEJJQWNvQWdRaUVVRUJkQ0lKUVFKcXJVSUJJQkN0aGlJWVFRRWdFSFFpRFVFQmFpSUZyVUlDaG54OFFndDhRdnovLy8vLy8vLy8vd0NEUXVRQ1ZnMEJRVkloQ0NBUlFmOEJTdzBCSUExQmYzTkJBblJCNUFKcXJTQVJRUUZxSWhWQkFYU3RJQmg4UWdoOFZBMEJJQXNnQkdzaEZpQUVJQTVxSVJjZ0JrR0FCR29pRWlBRlFRSjBhaUlSSUFscVFRSnFJUTRnQmtHRUJHb2hFMEdBZ0FJZ0VIUkJFSFloQ1VFQUlRVkJBU0VQSUExQkFXc2lGQ0VLQTBBZ0JTQVZSa1VFUUFKQUlBWWdCVUVCZENJSWFpOEJBQ0lFUWYvL0EwWUVRQ0FUSUFwQkFuUnFJQVU2QUFJZ0NrRUJheUVLUVFFaEJBd0JDeUFQUVFBZ0NTQUV3VW9iSVE4TElBZ2dFV29nQkRzQkFDQUZRUUZxSVFVTUFRc0xJQVlnRHpzQmdnUWdCaUFRT3dHQUJBSkFJQW9nRkVZRVFDQU5RUU4ySVFoQ0FDRVlRUUFoRHdOQUlBd2dGVVlFUUNBSUlBMUJBWFpxUVFOcUlnbEJBWFFoQ0VFQUlRUkJBQ0VLQTBCQkFDRUZJQW9nRFU4TkJBTkFJQVZCQWtaRkJFQWdFeUFGSUFsc0lBUnFJQlJ4UVFKMGFpQU9JQVVnQ21wcUxRQUFPZ0FDSUFWQkFXb2hCUXdCQ3dzZ0NrRUNhaUVLSUFRZ0NHb2dGSEVoQkF3QUN3QUZJQVlnREVFQmRHb3VBUUFoQ1NBT0lBOXFJZ1FnR0RjQUFFRUlJUVVEUUNBRklBbE9SUVJBSUFRZ0JXb2dHRGNBQUNBRlFRaHFJUVVNQVFzTElCaENnWUtFaUpDZ3dJQUJmQ0VZSUF4QkFXb2hEQ0FKSUE5cUlROE1BUXNBQ3dBTElBMUJBM1lnRFVFQmRtcEJBMm9oQ0VFQUlRVURRQ0FNSUJWR1JRUkFRUUFoQ1NBR0lBeEJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBSlJrVUVRQ0FUSUFWQkFuUnFJQXc2QUFJRFFDQUZJQWhxSUJSeElnVWdDa3NOQUFzZ0NVRUJhaUVKREFFTEN5QU1RUUZxSVF3TUFRc0xRWDhoQ0NBRkRRSUxJQkJCQVdvaENFRUFJUVVEUUNBRklBMUdSUVJBSUJFZ0V5QUZRUUowYWlJT0xRQUNRUUYwYWlJRUlBUXZBUUFpQ1VFQmFqc0JBQ0FPSUFnZ0NXZEJZSE5xSWdRNkFBTWdEaUFKSUFSMElBMXJPd0VBSUFWQkFXb2hCUXdCQ3dzQ1FBSkFJQVl2QVlJRUJFQWdCMEVjYWlJRUlCY2dGaEFOSWdoQmlIOUxEUUlnQjBFVWFpQUVJQklRRGlBSFFReHFJQVFnRWhBT1FRQWhCUU5BSUFkQkhHb2lCQkFQSUFWQit3RkxjZzBDSUFBZ0JXb2lCaUFIUVJScUlBUVFFRG9BQUNBR0lBZEJER29nQkJBUU9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVNQXdVZ0FDQUVhaUFIUVJScUlBZEJIR29pQkJBUU9nQUFJQVlnQjBFTWFpQUVFQkE2QUFNZ0JVRUVhaUVGREFFTEFBc0FDeUFIUVJ4cUlnUWdGeUFXRUEwaUNFR0lmMHNOQVNBSFFSUnFJQVFnRWhBT0lBZEJER29nQkNBU0VBNUJBQ0VGQTBBZ0IwRWNhaUlFRUE4Z0JVSDdBVXR5UlFSQUlBQWdCV29pQmlBSFFSUnFJQVFRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVRklBQWdCR29nQjBFVWFpQUhRUnhxSWdRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBRElBVkJCR29oQlF3Q0N3c0xBbjhEUUVHNmZ5RUlJQVZCL1FGTERRTWdBQ0FGYWlJR0lBZEJGR29nQjBFY2FpSUpFQkU2QUFBZ0JrRUJhaUVFSUFrUUQwRURSZ1JBSUFkQkRHb2hDRUVDREFJTElBVkIvQUZMRFFNZ0JpQUhRUXhxSUFkQkhHb2lCQkFST2dBQklBVkJBbW9oQlNBRUVBOUJBMGNOQUFzZ0FDQUZhaUVFSUFkQkZHb2hDRUVEQ3lBRUlBZ2dCMEVjYWhBUk9nQUFJQVpxSUFCcklRZ01BUXNDZndOQVFicC9JUWdnQlVIOUFVc05BaUFBSUFWcUlnWWdCMEVVYWlBSFFSeHFJZ2tRRURvQUFDQUdRUUZxSVFRZ0NSQVBRUU5HQkVBZ0IwRU1haUVJUVFJTUFnc2dCVUg4QVVzTkFpQUdJQWRCREdvZ0IwRWNhaUlFRUJBNkFBRWdCVUVDYWlFRklBUVFEMEVEUncwQUN5QUFJQVZxSVFRZ0IwRVVhaUVJUVFNTElBUWdDQ0FIUVJ4cUVCQTZBQUFnQm1vZ0FHc2hDQXNnQ0VHSWYwc05BUXNnQ0NFRVFRQWhCU0FCUVFCQk5CQURJUWxCQUNFS0EwQWdCQ0FGUndSQUlBQWdCV29pQmkwQUFDSUJRUXRMQkVCQmJDRUlEQU1GSUFrZ0FVRUNkR29pQVNBQktBSUFRUUZxTmdJQUlBVkJBV29oQlVFQklBWXRBQUIwUVFGMUlBcHFJUW9NQWdzQUN3dEJiQ0VJSUFwRkRRQWdDbWNpQlVFZmN5SUJRUXRMRFFBZ0EwRWdJQVZyTmdJQVFRRkJBaUFCZENBS2F5SURaMEVmY3lJQmRDQURSdzBBSUFBZ0JHb2dBVUVCYWlJQU9nQUFJQWtnQUVFQ2RHb2lBQ0FBS0FJQVFRRnFOZ0lBSUFrb0FnUWlBRUVDU1NBQVFRRnhjZzBBSUFJZ0JFRUJhallDQUNBTFFRRnFJUWdMSUFkQk1Hb2tBQ0FJQzZBRkFReC9Jd0JCRUdzaURDUUFBbjhnQkVFSFRRUkFJQXhDQURjRENDQU1RUWhxSWdVZ0F5QUVFQUlhUVd3Z0FDQUJJQUlnQlVFSUVBd2lBQ0FBSUFSTEd5QUFJQUJCaVg5Skd3d0JDeUFBUVFBZ0FTZ0NBRUVCYWlJTlFRRjBFQU1oRDBGVUlBTW9BQUFpQmtFUGNTSUFRUXBMRFFBYUlBSWdBRUVGYWpZQ0FDQURJQVJxSWdKQkJHc2hCeUFDUVFkcklRc2dBRUVHYWlFT1FRUWhBaUFHUVFSMklRVkJJQ0FBZENJSVFRRnlJUWxCQUNFQVFRRWhCaUFESVFRRFFBSkFJQVpCQVhGRkJFQURRQ0FGUVg5elFZQ0FnSUI0Y21naUJrRVlTVVVFUUNBQVFTUnFJUUFnQkNBTFRRUi9JQVJCQTJvRklBUWdDMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMSUFJZ0JrRWVjU0lLYWtFQ2FpRUNJQVpCQVhaQkEyd2dBR29nQlNBS2RrRURjV29pQUNBTlR3MEJBbjhnQkNBTFN5QUNRUU4ySUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQVFnQjJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVMSUFVZ0NFRUJhM0VpQmlBSVFRRjBRUUZySWdvZ0NXc2lFRWtFZnlBT1FRRnJCU0FGSUFweElnVWdFRUVBSUFVZ0NFNGJheUVHSUE0TElRVWdEeUFBUVFGMGFpQUdRUUZySWdvN0FRQWdBRUVCYWlFQUlBSWdCV29oQWlBSVFRRWdCbXNnQ2lBR1FRQktHeUFKYWlJSlNnUkFJQWxCQWtnTkFVRWdJQWxuSWdWcklRNUJBU0FGUVI5emRDRUlDeUFBSUExUERRQWdDa0VBUnlFR0FuOGdCQ0FMU3lBQ1FRTjFJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBSWdCQ0FIYTBFRGRHcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMUVd3Z0NVRUJSdzBBR2tGUUlBQWdEVXNOQUJwQmJDQUNRU0JLRFFBYUlBRWdBRUVCYXpZQ0FDQUVJQUpCQjJwQkEzVnFJQU5yQ3lBTVFSQnFKQUFMOGdFQkFYOGdBa1VFUUNBQVFnQTNBZ0FnQUVFQU5nSVFJQUJDQURjQ0NFRzRmdzhMSUFBZ0FUWUNEQ0FBSUFGQkJHbzJBaEFnQWtFRVR3UkFJQUFnQVNBQ2FpSUJRUVJySWdNMkFnZ2dBQ0FES0FBQU5nSUFJQUZCQVdzdEFBQWlBUVJBSUFBZ0FXZEJGMnMyQWdRZ0FnOExJQUJCQURZQ0JFRi9Ed3NnQUNBQk5nSUlJQUFnQVMwQUFDSUROZ0lBQWtBQ1FBSkFJQUpCQW1zT0FnRUFBZ3NnQUNBQkxRQUNRUkIwSUFOeUlnTTJBZ0FMSUFBZ0FTMEFBVUVJZENBRGFqWUNBQXNnQVNBQ2FrRUJheTBBQUNJQlJRUkFJQUJCQURZQ0JFRnNEd3NnQUNBQlp5QUNRUU4wYTBFSmFqWUNCQ0FDQzBRQkFuOGdBU0FDTHdFQUlnTWdBU2dDQkdvaUJEWUNCQ0FBSUFOQkFuUkJvQjFxS0FJQUlBRW9BZ0JCQUNBRWEzWnhOZ0lBSUFFUUR4b2dBQ0FDUVFScU5nSUVDNThCQVFSL1FRTWhBU0FBS0FJRUlnSkJJRTBFUUNBQUtBSUlJZ0VnQUNnQ0VFOEVRQ0FBSUFKQkIzRTJBZ1FnQUNBQklBSkJBM1pySWdJMkFnZ2dBQ0FDS0FBQU5nSUFRUUFQQ3lBQUtBSU1JZ01nQVVZRVFFRUJRUUlnQWtFZ1NSc1BDeUFBSUFFZ0FTQURheUFDUVFOMklnUWdBU0FFYXlBRFNTSUJHeUlEYXlJRU5nSUlJQUFnQWlBRFFRTjBhellDQkNBQUlBUW9BQUEyQWdBTElBRUxTQUVFZnlBQUtBSUVJQUFvQWdCQkFuUnFJZ0l0QUFJZ0FpOEJBQ0VFSUFFZ0FTZ0NCQ0lGSUFJdEFBTWlBbW8yQWdRZ0FDQUVJQUVvQWdBZ0JYUkJBQ0FDYTNacU5nSUFDMUlCQkg4Z0FDZ0NCQ0FBS0FJQVFRSjBhaUlDTFFBQ0lBSXZBUUFoQkNBQklBSXRBQU1pQWlBQktBSUVhaUlGTmdJRUlBQWdCQ0FDUVFKMFFhQWRhaWdDQUNBQktBSUFRUUFnQld0MmNXbzJBZ0FMQ0FBZ0FFR0lmMHNMR2dBZ0FBUkFJQUVFUUNBQ0lBQWdBUkVDQUE4TElBQVFCZ3NMcGdnQ0RYOEJmaU1BUVJCcklna2tBQ0FKUVFBMkFnd2dDVUVBTmdJSUFuOENRQ0FEUWVnSmFpQURJQWxCQ0dvZ0NVRU1haUFCSUFJZ0EwR0FBV29RQ3lJUFFZaC9TdzBBUVZRZ0NTZ0NEQ0lFSUFBb0FnQWlBVUgvQVhGQkFXcExEUUVhSUFCQkJHb2hDeUFBSUFGQi80R0FlSEVnQkVFUWRFR0FnUHdIY1hJMkFnQkJmeUFFSUFSQkFFZ2JRUUZxSVFCQkFDRUJJQWtvQWdnaEJVRUFJUUlEUUNBQUlBSkdCRUFnQlVFRGF5RUJRUUFoQUFOQUFrQkJBQ0VDSUFBZ0FVNEVRQU5BSUFBZ0JVNE5BaUFESUFBZ0EycEI2QWxxTFFBQVFRSjBha0ZBYXlJQklBRW9BZ0FpQVVFQmFqWUNBQ0FCSUFOcUlBQTZBT2dISUFCQkFXb2hBQXdBQ3dBRkEwQWdBa0VFUmtVRVFDQURJQU1nQUNBQ2FpSUhha0hvQ1dvdEFBQkJBblJxUVVCcklnZ2dDQ2dDQUNJSVFRRnFOZ0lBSUFNZ0NHb2dCem9BNkFjZ0FrRUJhaUVDREFFTEN5QUFRUVJxSVFBTUFnc0FDd3NnQkVFQmFpRU9JQU1vQWdBaEIwRUFJUUJCQVNFSUEwQWdDQ0FPUmcwRElBNGdDR3NoQkNBRElBaEJBblJxS0FJQUlRVUNRQUpBQWtBQ1FBSkFBa0JCQVNBSWRFRUJkU0lOUVFGckRnZ0FBUVFDQkFRRUF3UUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUFJUUVEUUNBQ0lBWkdEUVVnQXlBQ0lBZHFhaTBBNkFjaENpQUxJQUZCQVhScUlnd2dCRG9BQVNBTUlBbzZBQUFnQWtFQmFpRUNJQUZCQVdvaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hDaUFBSVFFRFFDQUNJQXBHRFFRZ0N5QUJRUUYwYWlJR0lBTWdBaUFIYW1vdEFPZ0hJZ3c2QUFJZ0JpQUVPZ0FCSUFZZ0REb0FBQ0FHSUFRNkFBTWdBa0VCYWlFQ0lBRkJBbW9oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUVRUWgwUVlEK0EzRWhCQ0FBSVFFRFFDQUNJQVpHRFFNZ0N5QUJRUUYwYWlBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrTndBQUlBSkJBV29oQWlBQlFRUnFJUUVNQUFzQUMwRUFJUUlnQlVFQUlBVkJBRW9iSVFZZ0JFRUlkRUdBL2dOeElRUWdBQ0VCQTBBZ0FpQUdSZzBDSUFzZ0FVRUJkR29pQ2lBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSWhFM0FBZ2dDaUFSTndBQUlBSkJBV29oQWlBQlFRaHFJUUVNQUFzQUMwRUFJUUVnQlVFQUlBVkJBRW9iSVFvZ0JFRUlkRUdBL2dOeElRd2dBQ0VFQTBBZ0FTQUtSZzBCSUFzZ0JFRUJkR29oRUNBTUlBTWdBU0FIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSVJGQkFDRUNBMEFnQWlBTlRrVUVRQ0FRSUFKQkFYUnFJZ1lnRVRjQUdDQUdJQkUzQUJBZ0JpQVJOd0FJSUFZZ0VUY0FBQ0FDUVJCcUlRSU1BUXNMSUFGQkFXb2hBU0FFSUExcUlRUU1BQXNBQ3lBSVFRRnFJUWdnQlNBSGFpRUhJQVVnRFd3Z0FHb2hBQXdBQ3dBRklBTWdBa0VDZEdvaUIwRkFheUFCTmdJQUlBSkJBV29oQWlBSEtBSUFJQUZxSVFFTUFRc0FDd0FMSUE4TElBbEJFR29rQUF2eUFnRUdmeU1BUVNCcklnVWtBQ0FFS0FJQUlRWWdCVUVNYWlBQ0lBTVFEU0lEUVloL1RRUkFJQVJCQkdvaEFpQUFJQUZxSWdsQkEyc2hCRUVBSUFaQkVIWnJRUjl4SVFNRFFDQUZRUXhxRUE4Z0FDQUVUM0pGQkVBZ0FpQUZLQUlNSWdZZ0JTZ0NFQ0lIZENBRGRrRUJkR29pQ0MwQUFTRUtJQUFnQ0MwQUFEb0FBQ0FDSUFZZ0J5QUthaUlHZENBRGRrRUJkR29pQnkwQUFDRUlJQVVnQmlBSExRQUJhallDRUNBQUlBZzZBQUVnQUVFQ2FpRUFEQUVMQ3dOQUlBVkJER29RRHlFSElBVW9BZ3doQmlBRktBSVFJUVFnQUNBSlR5QUhja1VFUUNBQ0lBWWdCSFFnQTNaQkFYUnFJZ1l0QUFBaEJ5QUZJQVFnQmkwQUFXbzJBaEFnQUNBSE9nQUFJQUJCQVdvaEFBd0JDd3NEUUNBQUlBbFBSUVJBSUFJZ0JpQUVkQ0FEZGtFQmRHb2lCeTBBQVNFSUlBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0JDQUlhaUVFREFFTEMwRnNRV3dnQVNBRktBSVVJQVVvQWhoSEd5QUVRU0JIR3lFREN5QUZRU0JxSkFBZ0F3dlBGQUVqZnlNQVFkQUFheUlGSkFCQmJDRUpBa0FnQTBFS1NRMEFBa0FnQXlBQ0x3QUVJZ2NnQWk4QUFDSUlJQUl2QUFJaURXcHFRUVpxSWd4SkRRQWdCQzhCQWlFR0lBVkJQR29nQWtFR2FpSUNJQWdRRFNJSlFZaC9TdzBCSUFWQktHb2dBaUFJYWlJQ0lBMFFEU0lKUVloL1N3MEJJQVZCRkdvZ0FpQU5haUlDSUFjUURTSUpRWWgvU3cwQklBVWdBaUFIYWlBRElBeHJFQTBpQ1VHSWYwc05BU0FFUVFScUlRb2dBQ0FCYWlJZlFRTnJJU0JCQUNBR2EwRWZjU0VMSUFVb0FnZ2hFU0FGS0FJY0lSSWdCU2dDTUNFVElBVW9Ba1FoRkNBRktBSUVJUWtnQlNnQ0dDRU5JQVVvQWl3aERDQUZLQUpBSVFZZ0JTZ0NFQ0VoSUFVb0FpUWhJaUFGS0FJNElTTWdCU2dDVENFa0lBVW9BZ0FoRlNBRktBSVVJUllnQlNnQ0tDRVhJQVVvQWp3aEdFRUJJUThnQUNBQlFRTnFRUUoySWdScUlnTWdCR29pQWlBRWFpSVpJUVFnQWlFSUlBTWhCd05BSUE5QkFYRkZJQVFnSUU5eVJRUkFJQUFnQ2lBWUlBWjBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloR2lBT0xRQURJUkFnQnlBS0lCY2dESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdEaTBBQWlFYklBNHRBQU1oRHlBSUlBb2dGaUFOZENBTGRrRUNkR29pRGk4QkFEc0FBQ0FPTFFBQ0lSd2dEaTBBQXlFZElBUWdDaUFWSUFsMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhIaUFPTFFBRElRNGdBQ0FRYWlJbElBb2dHQ0FHSUJwcUlnWjBJQXQyUVFKMGFpSVFMd0VBT3dBQUlCQXRBQUlnRUMwQUF5RW1JQWNnRDJvaUp5QUtJQmNnRENBYmFpSWFkQ0FMZGtFQ2RHb2lCeThCQURzQUFDQUhMUUFDSVF3Z0J5MEFBeUVRSUFnZ0hXb2lHeUFLSUJZZ0RTQWNhaUlQZENBTGRrRUNkR29pQ0M4QkFEc0FBQ0FJTFFBQ0lRMGdDQzBBQXlFY0lBUWdEbW9pSFNBS0lCVWdDU0FlYWlJT2RDQUxka0VDZEdvaUNTOEJBRHNBQUNBR2FpRUFRUU1oQndKL0lCUWdKRWtFUUNBQUlRWkJBd3dCQ3lBQVFRZHhJUVlnRkNBQVFRTjJheUlVS0FBQUlSaEJBQXNnQ1MwQUF5RWVJQWt0QUFJaENDQU1JQnBxSVFBZ0V5QWpTUVIvSUFBRklCTWdBRUVEZG1zaUV5Z0FBQ0VYUVFBaEJ5QUFRUWR4Q3lFTUlBMGdEMm9oQUNBSGNpRUpRUU1oRHdKL0lCSWdJa2tFUUNBQUlRMUJBd3dCQ3lBQVFRZHhJUTBnRWlBQVFRTjJheUlTS0FBQUlSWkJBQXNnQ0NBT2FpRUFJQWx5SUJFZ0lVa0VmeUFBQlNBUklBQkJBM1pySWhFb0FBQWhGVUVBSVE4Z0FFRUhjUXNoQ1NBbElDWnFJUUFnRUNBbmFpRUhJQnNnSEdvaENDQWRJQjVxSVFRZ0QzSkZJUThNQVFzTElBVWdERFlDTENBRklBWTJBa0FnQlNBTk5nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUlnQjBrZ0FDQURTM0lOQUVGc0lRa2dDQ0FaU3cwQklBTkJBMnNoQ1FOQUlBVkJQR29RRDBVZ0FDQUpTWEVFUUNBQUlBb2dCU2dDUENJTklBVW9Ba0FpREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnQUNBT0xRQURhaUlHSUFvZ0RTQU1JQTR0QUFKcUlnQjBJQXQyUVFKMGFpSU1Md0VBT3dBQUlBVWdBQ0FNTFFBQ2FqWUNRQ0FHSUF3dEFBTnFJUUFNQVFVZ0EwRUNheUVNQTBBZ0JVRThhaEFQSVFZZ0JTZ0NQQ0VOSUFVb0FrQWhDU0FBSUF4TElBWnlSUVJBSUFBZ0NpQU5JQWwwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQ1NBR0xRQUNhallDUUNBQUlBWXRBQU5xSVFBTUFRc0xBMEFnQUNBTVMwVUVRQ0FBSUFvZ0RTQUpkQ0FMZGtFQ2RHb2lCaThCQURzQUFDQUFJQVl0QUFOcUlRQWdDU0FHTFFBQ2FpRUpEQUVMQ3dKQUlBQWdBMDhOQUNBQUlBb2dEU0FKZENBTGRpSUFRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSklBTXRBQUpxSVFrTUFRc2dDVUVmU3cwQVFTQWdDU0FLSUFCQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFrTElBSkJBMnNoREFOQUlBVkJLR29RRDBVZ0J5QU1TWEVFUUNBSElBb2dCU2dDS0NJR0lBVW9BaXdpQUhRZ0MzWkJBblJxSWcwdkFRQTdBQUFnQnlBTkxRQURhaUlESUFvZ0JpQUFJQTB0QUFKcUlnQjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBQ0FHTFFBQ2FqWUNMQ0FESUFZdEFBTnFJUWNNQVFVZ0FrRUNheUVHQTBBZ0JVRW9haEFQSVFNZ0JTZ0NLQ0VNSUFVb0Fpd2hBQ0FHSUFkSklBTnlSUVJBSUFjZ0NpQU1JQUIwSUF0MlFRSjBhaUlETHdFQU93QUFJQVVnQUNBRExRQUNhallDTENBSElBTXRBQU5xSVFjTUFRc0xBMEFnQmlBSFNVVUVRQ0FISUFvZ0RDQUFkQ0FMZGtFQ2RHb2lBeThCQURzQUFDQUhJQU10QUFOcUlRY2dBQ0FETFFBQ2FpRUFEQUVMQ3dKQUlBSWdCMDBOQUNBSElBb2dEQ0FBZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBQUlBTXRBQUpxSVFBTUFRc2dBRUVmU3cwQVFTQWdBQ0FLSUFKQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFBTElCbEJBMnNoREFOQUlBVkJGR29RRDBVZ0NDQU1TWEVFUUNBSUlBb2dCU2dDRkNJR0lBVW9BaGdpQW5RZ0MzWkJBblJxSWcwdkFRQTdBQUFnQ0NBTkxRQURhaUlESUFvZ0JpQUNJQTB0QUFKcUlnSjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBaUFHTFFBQ2FqWUNHQ0FESUFZdEFBTnFJUWdNQVFVZ0dVRUNheUVEQTBBZ0JVRVVhaEFQSVFJZ0JTZ0NGQ0VHSUFVb0FoZ2hCeUFESUFoSklBSnlSUVJBSUFnZ0NpQUdJQWQwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVVnQnlBQ0xRQUNhallDR0NBSUlBSXRBQU5xSVFnTUFRc0xBMEFnQXlBSVNVVUVRQ0FJSUFvZ0JpQUhkQ0FMZGtFQ2RHb2lBaThCQURzQUFDQUlJQUl0QUFOcUlRZ2dCeUFDTFFBQ2FpRUhEQUVMQ3dKQUlBZ2dHVThOQUNBSUlBb2dCaUFIZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSElBTXRBQUpxSVFjTUFRc2dCMEVmU3cwQVFTQWdCeUFLSUFKQkFuUnFMUUFDYWlJQ0lBSkJJRThiSVFjTEEwQWdCUkFQUlNBRUlDQkpjUVJBSUFRZ0NpQUZLQUlBSWdZZ0JTZ0NCQ0lDZENBTGRrRUNkR29pREM4QkFEc0FBQ0FFSUF3dEFBTnFJZ01nQ2lBR0lBSWdEQzBBQW1vaUFuUWdDM1pCQW5ScUlnUXZBUUE3QUFBZ0JTQUNJQVF0QUFKcU5nSUVJQU1nQkMwQUEyb2hCQXdCQlNBZlFRSnJJUU1EUUNBRkVBOGhBaUFGS0FJQUlRWWdCU2dDQkNFSUlBTWdCRWtnQW5KRkJFQWdCQ0FLSUFZZ0NIUWdDM1pCQW5ScUlnSXZBUUE3QUFBZ0JTQUlJQUl0QUFKcU5nSUVJQVFnQWkwQUEyb2hCQXdCQ3dzRFFDQURJQVJKUlFSQUlBUWdDaUFHSUFoMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0FpMEFBMm9oQkNBSUlBSXRBQUpxSVFnTUFRc0xBa0FnQkNBZlR3MEFJQVFnQ2lBR0lBaDBJQXQySWdKQkFuUnFJZ010QUFBNkFBQWdBeTBBQTBFQlJnUkFJQWdnQXkwQUFtb2hDQXdCQ3lBSVFSOUxEUUJCSUNBSUlBb2dBa0VDZEdvdEFBSnFJZ0lnQWtFZ1R4c2hDQXRCYkVGc1FXeEJiRUZzUVd4QmJFRnNJQUVnQ0VFZ1J4c2dCU2dDQ0NBRktBSU1SeHNnQjBFZ1J4c2dCU2dDSENBRktBSWdSeHNnQUVFZ1J4c2dCU2dDTUNBRktBSTBSeHNnQ1VFZ1J4c2dCU2dDUkNBRktBSklSeHNoQ1F3SkN3QUxBQXNBQ3dBTEFBc0FDd0FMQUF0QmJDRUpDeUFGUWRBQWFpUUFJQWtMN0JBQkhuOGpBRUhRQUdzaUJTUUFRV3doQ1FKQUlBTkJDa2tOQUFKQUlBTWdBaThBQkNJR0lBSXZBQUFpQnlBQ0x3QUNJZ2hxYWtFR2FpSU9TUTBBSUFRdkFRSWhEeUFGUVR4cUlBSkJCbW9pQWlBSEVBMGlDVUdJZjBzTkFTQUZRU2hxSUFJZ0Iyb2lBaUFJRUEwaUNVR0lmMHNOQVNBRlFSUnFJQUlnQ0dvaUFpQUdFQTBpQ1VHSWYwc05BU0FGSUFJZ0Jtb2dBeUFPYXhBTklnbEJpSDlMRFFFZ0JFRUVhaUVLSUFBZ0FXb2lIRUVEYXlFZFFRQWdEMnRCSDNFaEN5QUZLQUlJSVJFZ0JTZ0NIQ0VTSUFVb0FqQWhFeUFGS0FKRUlSUWdCU2dDQkNFSklBVW9BaGdoQmlBRktBSXNJUWNnQlNnQ1FDRUlJQVVvQWhBaEhpQUZLQUlrSVI4Z0JTZ0NPQ0VnSUFVb0Frd2hJU0FGS0FJQUlSVWdCU2dDRkNFV0lBVW9BaWdoRnlBRktBSThJUmhCQVNFTklBQWdBVUVEYWtFQ2RpSUNhaUlPSUFKcUlnOGdBbW9pR1NFRUlBOGhBaUFPSVFNRFFDQU5SU0FFSUIxUGNrVUVRQ0FLSUJnZ0NIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFBZ0NpQVhJQWQwSUF0MlFRRjBhaUlNTFFBQklSQWdBeUFNTFFBQU9nQUFJQW9nRmlBR2RDQUxka0VCZEdvaURDMEFBU0VhSUFJZ0RDMEFBRG9BQUNBS0lCVWdDWFFnQzNaQkFYUnFJZ3d0QUFFaEd5QUVJQXd0QUFBNkFBQWdDaUFZSUFnZ0RXb2lDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBRWdDaUFYSUFjZ0VHb2lCM1FnQzNaQkFYUnFJZ3d0QUFFaEVDQURJQXd0QUFBNkFBRWdDaUFXSUFZZ0dtb2lESFFnQzNaQkFYUnFJZ1l0QUFFaEdpQUNJQVl0QUFBNkFBRWdDaUFWSUFrZ0cyb2lHM1FnQzNaQkFYUnFJZ2t0QUFFaElpQUVJQWt0QUFBNkFBRWdDQ0FOYWlFR1FRTWhDUUovSUJRZ0lVa0VRRUVESVEwZ0Jnd0JDeUFVSUFaQkEzWnJJaFFvQUFBaEdFRUFJUTBnQmtFSGNRc2hDQ0FISUJCcUlRWWdFeUFnU1FSL0lBWUZJQk1nQmtFRGRtc2lFeWdBQUNFWFFRQWhDU0FHUVFkeEN5RUhJQXdnR21vaERDQUpJQTF5SVJCQkF5RU5BbjhnRWlBZlNRUkFJQXdoQmtFRERBRUxJQXhCQjNFaEJpQVNJQXhCQTNackloSW9BQUFoRmtFQUN5QWJJQ0pxSVF3Z0VISWhFQ0FSSUI1SkJIOGdEQVVnRVNBTVFRTjJheUlSS0FBQUlSVkJBQ0VOSUF4QkIzRUxJUWtnQkVFQ2FpRUVJQUpCQW1vaEFpQURRUUpxSVFNZ0FFRUNhaUVBSUEwZ0VISkZJUTBNQVFzTElBVWdCellDTENBRklBZzJBa0FnQlNBR05nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUFnRGtzZ0F5QVBTM0lOQUVGc0lRa2dBaUFaU3cwQklBNUJBMnNoQ1FOQUlBVkJQR29RRHlBQUlBbFBja1VFUUNBS0lBVW9BandpQmlBRktBSkFJZ2QwSUF0MlFRRjBhaUlJTFFBQklRd2dBQ0FJTFFBQU9nQUFJQW9nQmlBSElBeHFJZ1owSUF0MlFRRjBhaUlITFFBQUlRZ2dCU0FHSUFjdEFBRnFOZ0pBSUFBZ0NEb0FBU0FBUVFKcUlRQU1BUXNMQTBBZ0JVRThhaEFQSVFjZ0JTZ0NQQ0VHSUFVb0FrQWhDU0FBSUE1UElBZHlSUVJBSUFvZ0JpQUpkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdDU0FHTFFBQmFqWUNRQ0FBSUFjNkFBQWdBRUVCYWlFQURBRUxDd05BSUFBZ0RrOUZCRUFnQ2lBR0lBbDBJQXQyUVFGMGFpSUhMUUFCSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQ1dvaENRd0JDd3NnRDBFRGF5RUFBMEFnQlVFb2FoQVBJQUFnQTAxeVJRUkFJQW9nQlNnQ0tDSUdJQVVvQWl3aUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBRElBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFpd2dBeUFJT2dBQklBTkJBbW9oQXd3QkN3c0RRQ0FGUVNocUVBOGhCeUFGS0FJb0lRWWdCU2dDTENFQUlBTWdEMDhnQjNKRkJFQWdDaUFHSUFCMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBQUlBWXRBQUZxTmdJc0lBTWdCem9BQUNBRFFRRnFJUU1NQVFzTEEwQWdBeUFQVDBVRVFDQUtJQVlnQUhRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FESUFjdEFBQTZBQUFnQTBFQmFpRURJQUFnQ0dvaEFBd0JDd3NnR1VFRGF5RURBMEFnQlVFVWFoQVBJQUlnQTA5eVJRUkFJQW9nQlNnQ0ZDSUdJQVVvQWhnaUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBQ0lBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFoZ2dBaUFJT2dBQklBSkJBbW9oQWd3QkN3c0RRQ0FGUVJScUVBOGhCeUFGS0FJVUlRWWdCU2dDR0NFRElBSWdHVThnQjNKRkJFQWdDaUFHSUFOMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBRElBWXRBQUZxTmdJWUlBSWdCem9BQUNBQ1FRRnFJUUlNQVFzTEEwQWdBaUFaVDBVRVFDQUtJQVlnQTNRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FDSUFjdEFBQTZBQUFnQWtFQmFpRUNJQU1nQ0dvaEF3d0JDd3NEUUNBRkVBOGdCQ0FkVDNKRkJFQWdDaUFGS0FJQUlnSWdCU2dDQkNJR2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBS0lBSWdCaUFJYWlJQ2RDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0FpQUdMUUFCYWpZQ0JDQUVJQWM2QUFFZ0JFRUNhaUVFREFFTEN3TkFJQVVRRHlFSElBVW9BZ0FoQmlBRktBSUVJUUlnQkNBY1R5QUhja1VFUUNBS0lBWWdBblFnQzNaQkFYUnFJZ1l0QUFBaEJ5QUZJQUlnQmkwQUFXbzJBZ1FnQkNBSE9nQUFJQVJCQVdvaEJBd0JDd3NEUUNBRUlCeFBSUVJBSUFvZ0JpQUNkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUVRUUZxSVFRZ0FpQUlhaUVDREFFTEMwRnNRV3hCYkVGc1FXeEJiRUZzUVd3Z0FTQUNRU0JIR3lBRktBSUlJQVVvQWd4SEd5QURRU0JIR3lBRktBSWNJQVVvQWlCSEd5QUFRU0JIR3lBRktBSXdJQVVvQWpSSEd5QUpRU0JIR3lBRktBSkVJQVVvQWtoSEd5RUpEQUVMUVd3aENRc2dCVUhRQUdva0FDQUpDMWdCQTM4Q1FDQUFLQUtRNndFaUFVVU5BQ0FCS0FJQUlBRkJ0TlVCYWlnQ0FDSUNJQUZCdU5VQmFpZ0NBQ0lERUJNZ0FnUkFJQU1nQVNBQ0VRSUFEQUVMSUFFUUJnc2dBRUVBTmdLZzZ3RWdBRUlBTndPUTZ3RUw2UU1DQkg4Q2ZpQUFRUUJCS0JBRElRUWdBa0VCUVFVZ0F4c2lBRWtFUUNBQUR3c2dBVVVFUUVGL0R3dEJBU0VHQWtBQ1FDQURRUUZHRFFBZ0F5RUdJQUVvQUFBaUJVR282cjVwUmcwQVFYWWhBeUFGUVhCeFFkRFV0TUlCUncwQlFRZ2hBeUFDUVFoSkRRRWdBVFVBQkNFSUlBUkJBVFlDRkNBRUlBZzNBd0JCQUE4TElBRWdBaUFHRUJvaUF5QUNTdzBBSUFRZ0F6WUNHRUZ5SVFNZ0FDQUJhaUlGUVFGckxRQUFJZ0pCQ0hFTkFDQUNRU0J4SWdaRkJFQkJjQ0VESUFVdEFBQWlCVUduQVVzTkFTQUZRUWR4clVJQklBVkJBM1pCQ21xdGhpSUlRZ09JZmlBSWZDRUpJQUJCQVdvaEFBc2dBa0VHZGlFRklBSkJBblpCQUNFREFrQUNRQUpBQWtBZ0FrRURjVUVCYXc0REFBRUNBd3NnQUNBQmFpMEFBQ0VESUFCQkFXb2hBQXdDQ3lBQUlBRnFMd0FBSVFNZ0FFRUNhaUVBREFFTElBQWdBV29vQUFBaEF5QUFRUVJxSVFBTFFRRnhJUUlDZmdKQUFrQUNRQUpBSUFWQkFXc09Bd0VDQXdBTFFuOGdCa1VOQXhvZ0FDQUJhakVBQUF3REN5QUFJQUZxTXdBQVFvQUNmQXdDQ3lBQUlBRnFOUUFBREFFTElBQWdBV29wQUFBTElRZ2dCQ0FDTmdJZ0lBUWdBellDSENBRUlBZzNBd0JCQUNFRElBUkJBRFlDRkNBRUlBZ2dDU0FHR3lJSU53TUlJQVJDZ0lBSUlBZ2dDRUtBZ0FoYUd6NENFQXNnQXd0ZkFRRi9RYmgvSVFNZ0FVRUJRUVVnQWhzaUFrOEVmeUFBSUFKcVFRRnJMUUFBSWdCQkEzRkJBblJCb0I1cUtBSUFJQUpxSUFCQkJIWkJESEZCc0I1cUtBSUFhaUFBUVNCeElnRkZhaUFCUVFWMklBQkJ3QUJKY1dvRlFiaC9Dd3NNQUNBQUlBRWdBa0VBRUJrTGx3TUNCWDhDZmlNQVFVQnFJZ1FrQUFKQUEwQWdBVUVGVHdSQUFrQWdBQ2dBQUVGd2NVSFExTFRDQVVZRVFFSitJUWNnQVVFSVNRMEVJQUFvQUFRaUFrRjNTdzBFSUFKQkNHb2lBeUFCU3cwRUlBSkJnWDlKRFFFTUJBc2dCRUVZYWlBQUlBRVFHeUVDUW40Z0JDa0RHRUlBSUFRb0FpeEJBVWNiSUFJYklnZENmVllOQXlBSElBaDhJZ2dnQjFSQ2ZpRUhEUU1DUUFKQUlBRkJDRWtOQUNBQUtBQUFRWEJ4UWREVXRNSUJSdzBBSUFBb0FBUWlBa0YzU3cwRlFiaC9JQUpCQ0dvaUFpQUJJQUpKR3lFRERBRUxJQVJCR0dvZ0FDQUJFQnNpQWtHSWYwc0VRQ0FDSVFNTUFRdEJ1SDhoQXlBQ0RRQWdBU0FFS0FJd0lnSnJJUVVnQUNBQ2FpRUdBMEFnQmlBRklBUkJER29RSFNJRFFZaC9TdzBCSUFOQkEyb2lBaUFGU3dSQVFiaC9JUU1NQWdzZ0JTQUNheUVGSUFJZ0Jtb2hCaUFFS0FJUVJRMEFDeUFFS0FJNEJIOUJ1SDhoQXlBRlFRUkpEUUVnQmtFRWFnVWdCZ3NnQUdzaEF3c2dBMEdJZjBzTkF3c2dBU0FEYXlFQklBQWdBMm9oQUF3QkN3dENmaUFJSUFFYklRY0xJQVJCUUdza0FDQUhDMlFCQVg5QnVIOGhBd0pBSUFGQkEwa05BQ0FBTFFBQ0lRRWdBaUFBTHdBQUlnQkJBWEUyQWdRZ0FpQUFRUUYyUVFOeElnTTJBZ0FnQWlBQUlBRkJFSFJ5UVFOMklnQTJBZ2dDUUFKQUlBTkJBV3NPQXdJQkFBRUxRV3dQQ3lBQUlRTUxJQU1MUkFFQ2Z5QUJJQUlvQWdRaUF5QUJLQUlFYWlJRU5nSUVJQUFnQTBFQ2RFR2dIV29vQWdBZ0FTZ0NBRUVBSUFScmRuRTJBZ0FnQVJBUEdpQUFJQUpCQ0dvMkFnUUx6Z0VCQm45QnVuOGhDZ0pBSUFJb0FnUWlDQ0FDS0FJQUlnbHFJZzBnQVNBQWEwc05BRUZzSVFvZ0NTQUVJQU1vQWdBaUMydExEUUFnQUNBSmFpSUVJQUlvQWdnaURHc2hBaUFBSUFGQklHc2lBQ0FMSUFsQkFCQWdJQU1nQ1NBTGFqWUNBQUpBQWtBZ0JDQUZheUFNVHdSQUlBSWhCUXdCQ3lBTUlBUWdCbXRMRFFJZ0J5QUhJQUlnQldzaUFtb2lBU0FJYWs4RVFDQUVJQUVnQ0JBS0dnd0NDeUFDSUFocUlRZ2dCQ0FCUVFBZ0Ftc1FDaUFDYXlFRUN5QUVJQUFnQlNBSVFRRVFJQXNnRFNFS0N5QUtDOGNFQVFKL0lBQWdBMm9oQmdKQUlBTkJCMHdFUUFOQUlBQWdCazhOQWlBQUlBSXRBQUE2QUFBZ0FFRUJhaUVBSUFKQkFXb2hBZ3dBQ3dBTElBUkJBVVlFUUFKQUlBQWdBbXNpQlVFSFRRUkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSWdCVUVDZENJRlFjQWVhaWdDQUdvaUFpZ0FBRFlBQkNBQ0lBVkI0QjVxS0FJQWF5RUNEQUVMSUFBZ0Fpa0FBRGNBQUFzZ0FrRUlhaUVDSUFCQkNHb2hBQXNnQVNBR1R3UkFJQUFnQTJvaEFTQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUEwQWdBQ0FDS1FBQU53QUFJQUpCQ0dvaEFpQUFRUWhxSWdBZ0FVa05BQXdEQ3dBTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dBMEVSU1EwQklBQkJFR29oQUFOQUlBQWdBaWtBRURjQUFDQUFJQUlwQUJnM0FBZ2dBQ0FDS1FBZ053QVFJQUFnQWlrQUtEY0FHQ0FDUVNCcUlRSWdBRUVnYWlJQUlBRkpEUUFMREFFTEFrQWdBQ0FCU3dSQUlBQWhBUXdCQ3lBQklBQnJJUVVDUUNBRVFRRkhJQUFnQW10QkQwcHlSUVJBSUFJaEF3TkFJQUFnQXlrQUFEY0FBQ0FEUVFocUlRTWdBRUVJYWlJQUlBRkpEUUFMREFFTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dCVUVSU0EwQUlBQkJFR29oQUNBQ0lRTURRQ0FBSUFNcEFCQTNBQUFnQUNBREtRQVlOd0FJSUFBZ0F5a0FJRGNBRUNBQUlBTXBBQ2czQUJnZ0EwRWdhaUVESUFCQklHb2lBQ0FCU1EwQUN3c2dBaUFGYWlFQ0N3TkFJQUVnQms4TkFTQUJJQUl0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29oQWd3QUN3QUxDNjRIQWdWL0FYNGpBRUdBQVdzaUVTUUFJQkVnQXpZQ2ZFRi9JUThDUUFKQUFrQUNRQUpBSUFJT0JBRUFBd0lFQ3lBR1JRUkFRYmgvSVE4TUJBdEJiQ0VQSUFVdEFBQWlBaUFEU3cwRElBZ2dBa0VDZENJQ2FpZ0NBQ0VESUFJZ0Iyb29BZ0FoQWlBQVFRQTZBQXNnQUVJQU53SUFJQUFnQWpZQ0RDQUFJQU02QUFvZ0FFRUFPd0VJSUFFZ0FEWUNBRUVCSVE4TUF3c2dBU0FKTmdJQVFRQWhEd3dDQ3lBS1JRUkFRV3doRHd3Q0MwRUFJUThnQzBVZ0RFRVpTSElOQVVFSUlBUjBRUWhxSVFCQkFDRURBMEFnQUNBRFRRMENJQU5CUUdzaEF3d0FDd0FMUVd3aER5QVJJQkZCL0FCcUlCRkIrQUJxSUFVZ0JoQU1JZ05CaUg5TERRQWdFU2dDZUNJQ0lBUkxEUUFnRVNnQ2ZFRUJhaUVKSUFCQkNHb2hDMEdBZ0FJZ0FuUkJFSFVoQlVFQklSQkJBU0FDZENJUFFRRnJJZ29oRWdOQUlBa2dEa2NFUUFKQUlCRWdEa0VCZENJRWFpOEJBQ0lNUWYvL0EwWUVRQ0FMSUJKQkEzUnFJQTQyQWdRZ0VrRUJheUVTUVFFaERBd0JDeUFRUVFBZ0JTQU13VW9iSVJBTElBUWdEV29nRERzQkFDQU9RUUZxSVE0TUFRc0xJQUFnQWpZQ0JDQUFJQkEyQWdBQ1FDQUtJQkpHQkVBZ0RVSHFBR29oQmtFQUlSQkJBQ0VNQTBBZ0NTQVFSZ1JBSUE5QkEzWWdEMEVCZG1wQkEyb2lCVUVCZENFRVFRQWhERUVBSVJJRFFFRUFJUTRnRHlBU1RRMEVBMEFnRGtFQ1J3UkFJQXNnQlNBT2JDQU1haUFLY1VFRGRHb2dCaUFPSUJKcWFpMEFBRFlDQkNBT1FRRnFJUTRNQVFzTElCSkJBbW9oRWlBRUlBeHFJQXB4SVF3TUFBc0FCU0FSSUJCQkFYUnFMZ0VBSVFVZ0JpQU1haUlFSUJNM0FBQkJDQ0VPQTBBZ0JTQU9TZ1JBSUFRZ0Rtb2dFemNBQUNBT1FRaHFJUTRNQVFzTElCTkNnWUtFaUpDZ3dJQUJmQ0VUSUJCQkFXb2hFQ0FGSUF4cUlRd01BUXNBQ3dBTElBOUJBM1lnRDBFQmRtcEJBMm9oQlVFQUlSQkJBQ0VPQTBBZ0NTQVFSZzBCUVFBaERDQVJJQkJCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQU1Sd1JBSUFzZ0RrRURkR29nRURZQ0JBTkFJQVVnRG1vZ0NuRWlEaUFTU3cwQUN5QU1RUUZxSVF3TUFRc0xJQkJCQVdvaEVBd0FDd0FMSUFKQkFXb2hCVUVBSVF3RFFDQU1JQTlIQkVBZ0RTQUxJQXhCQTNScUlna29BZ1FpQkVFQmRHb2lBaUFDTHdFQUlnWkJBV283QVFBZ0NTQUZJQVpuUVdCemFpSUNPZ0FESUFrZ0JpQUNkQ0FQYXpzQkFDQUpJQWdnQkVFQ2RDSUNhaWdDQURvQUFpQUpJQUlnQjJvb0FnQTJBZ1FnREVFQmFpRU1EQUVMQ3lBQklBQTJBZ0FnQXlFUEN5QVJRWUFCYWlRQUlBOEw3Vm9DTzM4R2ZpTUFRZUFCYXlJRUpBQUNRRUd3N0FrUUJTSUZSUVJBUVVBaEJ3d0JDeUFGUWdBM0F2VHFBU0FGUVFBMkFzVHJBU0FGUVFBMkFyVHJBU0FGUWdBM0FwenJBU0FGUVFBMkFyanBBU0FGUVFBMkFxenNDU0FGUWdBM0F0VHJBU0FGUWdBM0FxenJBU0FGUWdBM0E0anJBU0FGUWdBM0F1VHFBU0FGUWdBM0F1VHJBU0FGUVlHQWdNQUFOZ0s4NndFZ0JVSUFOd0trNndFZ0JVSDg2Z0ZxUVFBMkFnQWdCVUdRNndGcVFnQTNBd0FnQlJBWUlBVkJyTlVCYWlFVUlBVkIrT3NCYWlFY0lBVkJzT29CYWlFaUlBVkJvREJxSVNvZ0JVR1lJR29oS3lBRlFhalFBR29oSGlBRlFSQnFJU3dnQlVFSWFpRW9JQVZCQkdvaExTQUZRY0RwQVdvaEtTQUZRWWpyQVdvZ0JFR1VBV29oTHlBRVFZd0JhaUV3SUFSQmhBRnFJVEVnQkVIY0FHb2hNaUFFUWRRQWFpRXpJQVJCekFCcUlUUWdBQ0VkQWtBQ1FBSkFBa0FDUUFOQVFRRkJCU0FGS0FMazZnRWJJUVlDUUFOQUlBTWdCa2tOQVNBQ0tBQUFRWEJ4UWREVXRNSUJSZ1JBUWJoL0lRY2dBMEVJU1EwSUlBSW9BQVFpRGtGM1N3UkFRWEloQnd3SkN5QURJQTVCQ0dvaUNVa05DQ0FPUVlCL1N3UkFJQWtoQnd3SkN5QURJQWxySVFNZ0FpQUphaUVDREFFTEN5QUZRZ0EzQXF6cEFTQUZRZ0EzQStqcEFTQUZRUUEyQXBqckFTQUZRZ0EzQTREcUFTQUZRZ00zQS9qcEFTQUZRYlRwQVdwQ0FEY0NBQ0FGUWZEcEFXcENBRGNEQUNBRlFhalFBR29pQ1VHTWdJRGdBRFlDQUNBRlFhelFBV3BCNEJJcEFnQTNBZ0FnQlVHMDBBRnFRZWdTS0FJQU5nSUFJQVVnQlVFUWFqWUNBQ0FGSUFWQm9EQnFOZ0lFSUFVZ0JVR1lJR28yQWdnZ0JTQUpOZ0lNSUFWQkFVRUZJQVVvQXVUcUFSczJBcnpwQVFKQUlBRkZEUUFnQlNnQ3JPa0JJZ2tnSFVZTkFDQUZJQWsyQXJqcEFTQUZJQjAyQXF6cEFTQUZLQUt3NlFFaERpQUZJQjAyQXJEcEFTQUZJQjBnRGlBSmEybzJBclRwQVF0QnVIOGhDU0FEUVFWQkNTQUZLQUxrNmdFaUJodEpEUVVnQWtFQlFRVWdCaHNnQmhBYUlnNUJpSDlMQkVBZ0RpRUpEQVVMSUFNZ0RrRURha2tOQlNBcElBSWdEaUFHRUJraUJrR0lmMHNFUUNBR0lRa01CUXNnQmcwRkFrQUNRQ0FGS0FLbzZ3RkJBVWNOQUNBRktBS2s2d0VpQ1VVTkFDQUZLQUtVNndGRkRRQWdDU2dDQkVFQmF5SUhJQVVvQXR6cEFTSUtyVUtIbGErdm1MYmVtNTUvZmtMSno5bXk4ZVc2NmllRlFoZUpRcy9XMDc3U3g2dlpRbjVDK2ZQZDhabjJtYXNXZkNJL1FpR0lJRCtGUXMvVzA3N1N4NnZaUW40aVAwSWRpQ0EvaFVMNTg5M3htZmFacXhaK0lqOUNJSWdnUDRXbmNTRUdJQWtvQWdBaEZRTkFRUUFoQ0FKQUlCVWdCa0VDZEdvb0FnQWlDVVVOQUNBSktBSUlRUWhKRFFBZ0NTZ0NCQ0lTS0FBQVFiZkl3dUYrUncwQUlCSW9BQVFoQ0FzZ0NDQUtSd1JBSUFZZ0IzRkJBV29oQmlBSURRRUxDeUFKUlEwQUlBVVFHQ0FGUVg4MkFxRHJBU0FGSUFrMkFwVHJBU0FGSUFVb0F0enBBU0lJTmdLWTZ3RU1BUXNnQlNnQzNPa0JJUWdMQWtBZ0NFVU5BQ0FGS0FLWTZ3RWdDRVlOQUVGZ0lRa01CZ3NDUUNBRktBTGc2UUVFUUNBRklBVW9BdWpxQVNJSlJUWUM3T29CSUFrTkFTQUZRdm5xME5EbnlhSGs0UUEzQTZqcUFTQUZRZ0EzQTZEcUFTQUZRcy9XMDc3U3g2dlpRamNEbU9vQklBVkMxdXVDN3VyOWlmWGdBRGNEa09vQklBVkNBRGNEaU9vQklDSkJBRUVvRUFNYURBRUxJQVZCQURZQzdPb0JDeUFCSUIxcUlTVWdCU0FGS1FQbzZRRWdEcTE4TndQbzZRRWdBeUFPYXlFRElBSWdEbW9oQWlBZElRNERRQ0FDSUFNZ0JFRXNhaEFkSWhWQmlIOUxCRUFnRlNFSkRBWUxJQU5CQTJzaU5TQVZTUTBFSUFKQkEyb2hHMEZzSVFrQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFS0FJc0RnTUNBUUFWQ3lBVlFmLy9CMHNORXlBVlFRTkpEUklnQlNrRHlPa0JJVDhDUUFKQUlCc3RBQUFpQ1VFRGNTSWFRUUZyRGdNR0FRQUhDeUFGS0FLQTZnRU5BRUZpSVFrTUZRc2dGVUVGU1EwU0lCc29BQUFoQXdKL0FrQUNRQUpBSUFsQkFuWkJBM0VpQ1VFQ2F3NENBUUlBQ3lBSlFRQkhJUWNnQTBFRWRrSC9CM0VoQzBFRElRWWdBMEVPZGtIL0IzRU1BZ3RCQkNFR0lBTkJCSFpCLy84QWNTRUxRUUVoQnlBRFFSSjJEQUVMSUFOQkJIWkIvLzhQY1NJTFFZQ0FDRXNORTBFQklRZEJCU0VHSUFJdEFBZEJDblFnQTBFV2RuSUxJZ2dnQm1vaUNTQVZTdzBTQWtBZ0MwR0JCa2tOQUNBRktBS2M2d0ZGRFFCQkFDRURBMEFnQTBHRGdBRkxEUUVnQTBGQWF5RUREQUFMQUFzZ0JpQWJhaUVQSUJwQkEwY05CaUFGS0FJTUlnSXRBQUZCQ0hRaEF5QUhEUWNnQTBVTkNDQUVRZkFBYWlBUElBZ1FEU0lEUVloL1N3MEpJQUpCQkdvaEJpQUxJQnhxSWhKQkEyc2hDa0VBSUFJdkFRSnJRUjl4SVFjZ0hDRURBMEFnQkVId0FHb1FEMFVnQXlBS1NYRUVRQ0FESUFZZ0JDZ0NjQ0lJSUFRb0FuUWlEM1FnQjNaQkFuUnFJZ0l2QVFBN0FBQWdBeUFDTFFBRGFpSURJQVlnQ0NBUElBSXRBQUpxSWdoMElBZDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0NDQUNMUUFDYWpZQ2RDQURJQUl0QUFOcUlRTU1BUVVnRWtFQ2F5RUlBMEFnQkVId0FHb1FEeUVQSUFRb0FuQWhDaUFFS0FKMElRSWdBeUFJU3lBUGNrVUVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lDaThCQURzQUFDQUVJQUlnQ2kwQUFtbzJBblFnQXlBS0xRQURhaUVEREFFTEN3TkFJQU1nQ0UwRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUR5OEJBRHNBQUNBRElBOHRBQU5xSVFNZ0FpQVBMUUFDYWlFQ0RBRUxDd0pBSUFNZ0VrOE5BQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lBeTBBQURvQUFDQURMUUFEUVFGR0JFQWdBaUFETFFBQ2FpRUNEQUVMSUFKQkgwc05BRUVnSUFJZ0F5MEFBbW9pQWlBQ1FTQlBHeUVDQzBGc1FXd2dDeUFFS0FKNElBUW9BbnhIR3lBQ1FTQkhHeUVEREFzTEFBc0FDeUFFS0FJMElnSWdKU0FPYTBzTkNpQU9SUVJBUVFBaENTQUNEUUlNRGdzZ0RpQWJMUUFBSUFJUUF4b2dBaUVKREF3TElCVWdKU0FPYTBzTkNTQU9EUUZCQUNFSklCVkZEUXdMUWJaL0lRa01FUXNnRGlBYklCVVFBaG9nRlNFSkRBb0xJQndnR3dKL0FrQUNRQUpBSUFsQkFuWkJBM0ZCQVdzT0F3RUFBZ0FMSUFsQkEzWWhBMEVCREFJTElCc3ZBQUJCQkhZaEEwRUNEQUVMSUJWQkJFa05EaUFDTHdBRElBSXRBQVZCRUhSeUlnSkJqNENBQVVzTkRpQUNRUVIySVFOQkF3c2lBbW90QUFBZ0EwRWdhaEFESVFrZ0JTQUROZ0tBNndFZ0JTQUpOZ0x3NmdFZ0FrRUJhaUVKREFVTElCVUNmd0pBQWtBQ1FDQUpRUUoyUVFOeFFRRnJEZ01CQUFJQUN5QUpRUU4ySVFOQkFRd0NDeUFiTHdBQVFRUjJJUU5CQWd3QkN5QUNMd0FESUFJdEFBVkJFSFJ5UVFSMklRTkJBd3NpQWlBRGFpSUpRU0JxU1FSQUlBa2dGVXNORFNBY0lBSWdHMm9nQXhBQ0lRSWdCU0FETmdLQTZ3RWdCU0FDTmdMdzZnRWdBaUFEYWlJQ1FnQTNBQmdnQWtJQU53QVFJQUpDQURjQUNDQUNRZ0EzQUFBTUJRc2dCU0FETmdLQTZ3RWdCU0FDSUJ0cU5nTHc2Z0VNQkFzZ0IwVUVRQ0FlSUE4Z0NDQVVFQlFpQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZTRUREQU1MSUF0RklBaEZjZzBMSUF0QkNIWWlBeUFJSUF0SkJIOGdDRUVFZENBTGJnVkJEd3RCR0d3aUFrR01DR29vQWdCc0lBSkJpQWhxS0FJQWFpSUdRUU4ySUFacUlBSkJnQWhxS0FJQUlBSkJoQWhxS0FJQUlBTnNha2tFUUNNQVFSQnJJaEFrQUNBZUtBSUFJUU1nRkVId0JHcEJBRUhzQUJBRElRWkJWQ0VDQWtBZ0EwSC9BWEVpREVFTVN3MEFBa0FnRkVIY0NXb2dCaUFRUVFocUlCQkJER29nRHlBSUlCUkIzQXRxSWhjUUN5SVNRWWgvU3cwQUlCQW9BZ3dpQmlBTVN3MEJJQlJCcUFWcUlRMGdGRUdrQldvaE5pQWVRUVJxSVJFZ0EwR0FnSUI0Y1NFM0lBWkJBV29pRXlFQ0lBWWhBd05BSUFJaUIwRUJheUVDSUFNaUNrRUJheUVESUJRZ0NrRUNkR29vQXZBRVJRMEFDMEVCSUFjZ0IwRUJUUnNoRmtFQUlRZEJBU0VDQTBBZ0FpQVdSd1JBSUJRZ0FrRUNkQ0lEYWlnQzhBUWhHQ0FESUExcUlBYzJBZ0FnQWtFQmFpRUNJQWNnR0dvaEJ3d0JDd3NnRFNBSE5nSUFRUUFoQWlBUUtBSUlJUU1EUUNBQ0lBTkhCRUFnRFNBQ0lCUnFRZHdKYWkwQUFDSVlRUUowYWlJWklCa29BZ0FpR1VFQmFqWUNBQ0FVSUJsQkFYUnFJaGtnR0RvQTNRVWdHU0FDT2dEY0JTQUNRUUZxSVFJTUFRc0xRUUFoQXlBTlFRQTJBZ0FnRENBR1FYOXphaUVHUVFFaEFnTkFJQUlnRmtjRVFDQVVJQUpCQW5ScUlnMGdBellDQUNBTktBTHdCQ0FDSUFacWRDQURhaUVESUFKQkFXb2hBZ3dCQ3dzZ0RDQVRJQXBySWdaclFRRnFJUW9nQmlFREEwQWdBeUFLU1FSQUlCUWdBMEUwYkdvaERVRUJJUUlEUUNBQ0lCWkhCRUFnRFNBQ1FRSjBJaGhxSUJRZ0dHb29BZ0FnQTNZMkFnQWdBa0VCYWlFQ0RBRUxDeUFEUVFGcUlRTU1BUXNMSUJjZ0ZFRTBFQUloT0NBVVFaQU1haUU1SUJNZ0RHc2hPaUFVUWR3RmFpRVhRUUFoQ2dOQUFrQUNRQ0FISUFwSEJFQkJBU0FNSUJNZ0Z5QUtRUUYwYWlJQ0xRQUJJZzFySWdOckloaDBJUmtnQWkwQUFDRVdJRGdnRFVFQ2RHb2lIeWdDQUNFQ0lBWWdHRTBFUUNBMlFRRWdBeUE2YWlJTklBMUJBVXdiSWlCQkFuUWlKR29vQWdBaERTQTVJQlFnQTBFMGJHcEJOQkFDSVNFZ0RVRUJkQ0VtSUJFZ0FrRUNkR29oSXlBZ1FRRk5EUUlnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFZ0lDRWdKR29vQWdBaEpFRUFJUUlEUUNBQ0lDUkdEUU1nSXlBQ1FRSjBhaUFnTmdFQUlBSkJBV29oQWd3QUN3QUxJQUlnQWlBWmFpSU5JQUlnRFVzYklRMGdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVEQTBBZ0FpQU5SZzBESUJFZ0FrRUNkR29nQXpZQkFDQUNRUUZxSVFJTUFBc0FDeUFlSUF4QkVIUWdOM0lnREhKQmdBSnlOZ0lBREFNTElBY2dEV3NoSkNBWElDWnFJU1pCQUNFTkEwQWdEU0FrUmcwQlFRRWdHQ0FUSUNZZ0RVRUJkR29pSnkwQUFTSUNheUk3YTNRaVBDQWhJQUpCQW5ScUlpQW9BZ0FpQW1vaFBTQURJRHRxUVJCMFFZQ0EvQWR4SUNjdEFBQkJDSFJ5SUJaeVFZQ0FnQkJ5SVNjRFFDQWpJQUpCQW5ScUlDYzJBUUFnQWtFQmFpSUNJRDFKRFFBTElDQWdJQ2dDQUNBOGFqWUNBQ0FOUVFGcUlRME1BQXNBQ3lBZklCOG9BZ0FnR1dvMkFnQWdDa0VCYWlFS0RBQUxBQXNnRWlFQ0N5QVFRUkJxSkFBZ0FrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGaUVEREFNTElCNGdEeUFJSUJRUUZDSUNRWWgvU3lBQ0lBaFBjZzBMSUJ3Z0N5QUNJQTlxSUFnZ0Ftc2dIaEFYSVFNTUFnc2dBd1JBSUJ3Z0N5QVBJQWdnQWhBV0lRTU1BZ3NnSENBTElBOGdDQ0FDRUJjaEF3d0JDeUFjSUFzZ0R5QUlJQUlRRlNFREN5QURRWWgvU3cwSUlBVWdDellDZ09zQklBVWdIRFlDOE9vQklBVkJBVFlDZ09vQklCcEJBa1lFUUNBRklCNDJBZ3dMSUFzZ0hHb2lBa0lBTndBQUlBSkNBRGNBR0NBQ1FnQTNBQkFnQWtJQU53QUlJQWxCaUg5TERRb0xJQWtnRlVZTkNDQVZJQWxySVFZZ0JTZ0NuT3NCSVFvQ1FDQUpJQnRxSWdNdEFBQWlEMFVFUUVFQklRSkJBQ0VQUWJoL0lRa2dCa0VCUmcwQkRBc0xBbjhnQTBFQmFpQVB3Q0lDUVFCT0RRQWFJQUpCZjBZRVFDQUdRUU5JRFFzZ0F5OEFBVUdBL2dGcUlROGdBMEVEYWd3QkN5QUdRUUpJRFFvZ0F5MEFBU0FQUVFoMGNrR0FnQUpySVE4Z0EwRUNhZ3NoRWtHNGZ5RUpJQkpCQVdvaUFpQVZJQnRxSWdkTERRb2dMQ0FGSUJJdEFBQWlFa0VHZGtFalFRa2dBaUFISUFKclFjQVFRZEFSUWZBU0lBVW9Bb1RxQVNBS0lBOGdGQkFoSWdsQmlIOUxEUWdnS3lBb0lCSkJCSFpCQTNGQkgwRUlJQUlnQ1dvaUFpQUhJQUpyUVlBTFFZQU1RWUFYSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUNFR0lmMHNOQ0VGc0lRa2dLaUF0SUJKQkFuWkJBM0ZCTkVFSklBSWdDR29pQWlBSElBSnJRWUFOUWVBT1FaQVpJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQjBHSWYwc05DaUFDSUFkcUlBTnJJZ0loQ1NBQ1FZaC9TdzBLQ3lBT0lBOUJBRXh5RFFFTFFicC9JUWtNQ0FzZ0pTQU9heUVKSUFZZ0Ftc2hCaUFDSUFOcUlRY0NRQUpBQWtBZ0NrVUVRQ0FQUVFsSUlBVXBBOGpwQVVLQmdJQUlWSElOQWlBb0tBSUFJZ0pCQ0dvaEVpQUNLQUlFSVFwQkFDRURRUUFoQWdOQUlBTWdDblpGQkVBZ0FpQVNJQU5CQTNScUxRQUNRUlpMYWlFQ0lBTkJBV29oQXd3QkN3c2dCVUVBTmdLYzZ3RWdBa0VJSUFwcmRFRVVUdzBCREFNTElBVkJBRFlDbk9zQkN5QUVJQVVvQXZEcUFTSUROZ0xjQVNBSklBNXFJUllnQXlBRktBS0E2d0ZxSVJjQ1FDQVBSUVJBSUE0aEJ3d0JDeUFGS0FLNDZRRWhHaUFGS0FLMDZRRWhHQ0FGS0FLdzZRRWhFaUFGUVFFMkFvVHFBVUVBSVFNRFFDQURRUU5IQkVBZ0JDQURRUUowSWdKcUlBSWdCV3BCck5BQmFpZ0NBRFlDWkNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUVRocUlnSWdCeUFHRUExQmlIOUxEUU5CQ0NBUElBOUJDRTRiSVI4Z05DQUNJQVVvQWdBUUhpQXpJQUlnQlNnQ0NCQWVJRElnQWlBRktBSUVFQjRnRGlBU2F5RVpRUUFoQ0FOQUlBUkJPR29RRDBFRFJpQUlJQjlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ2RCRUhZaUVVSC9BWEVoQ3lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklneEJFSFlpSVVIL0FYRWhFQ0FFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRWWdRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ2tIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSUtheUlOSUFJZ0FpQU5TeHNpRXlBS2FqWUNQQ0FHSUFRb0FqZ2dDblJCQUNBVGEzWWdBaUFUYXlJVGRHb2hDaUFFUVRocUVBOGFJQUlnRFUwTkFTQUVJQVFvQWp3aUFpQVRhallDUENBRUtBSTRJQUowUVFBZ0UydDJJQXBxSVFvTUFRc2dCQ0FDSUFRb0Fqd2lEV28yQWp3Z0JDZ0NPQ0FOZEVFQUlBcHJkaUFHYWlFS0lBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlBbzJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FEQkVBZ0JDZ0NaQ0VLREFNTElBUW9BbWdoQ2d3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBWWdBMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ1pGSUFacUlRb2dBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUFvMkFtUUxweUVDSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lCQnFOZ0k4SUFRb0FqZ2dCblJCQUNBaGEzWWdBbW9oQWdzZ0N5QVFha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQXRxTmdJOElBUW9BamdnQm5SQkFDQVJhM1lnQTJvaEF3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUJrRUFJQWRCR0hZaUN5QUVLQUk4YWlJUWEzWWdDMEVDZEVHZ0hXb29BZ0J4SUFkQi8vOERjV28yQWt3Z0JDQVFJQXhCR0hZaUIyb2lDellDUENBRUlBZEJBblJCb0IxcUtBSUFJQVpCQUNBTGEzWnhJQXhCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnWkJHSFlpQnlBRUtBSThhaUlMTmdJOElBUWdCMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQXRyZG5FZ0JrSC8vd054YWpZQ1ZDQUVRZkFBYWlBSVFReHNhaUlHSUFvMkFnZ2dCaUFDTmdJRUlBWWdBellDQUNBSVFRRnFJUWdnQXlBWmFpQUNhaUVaREFFTEN5QUlJQjlJRFFNZ0ZrRWdheUVoSUE0aEJ3TkFJQVJCT0dvUUQwRURSaUFJSUE5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdaQkVIWWlJMEgvQVhFaENpQUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZzFCRUhZaUlFSC9BWEVoRXlBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUU1nUVVJZ2lDQkFRaUNJcHlFTEFrQWdRa0lRaUtjaURFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lNYXlJUklBSWdBaUFSU3hzaUVDQU1hallDUENBRElBUW9BamdnREhSQkFDQVFhM1lnQWlBUWF5SU1kR29oRUNBRVFUaHFFQThhSUFJZ0VVME5BU0FFSUFRb0Fqd2lBaUFNYWpZQ1BDQUVLQUk0SUFKMFFRQWdER3QySUJCcUlSQU1BUXNnQkNBQ0lBUW9BandpRUdvMkFqd2dCQ2dDT0NBUWRFRUFJQXhyZGlBRGFpRVFJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQkEyQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBTEJFQWdCQ2dDWkNFUURBTUxJQVFvQW1naEVBd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQU1nQzBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdORklBTnFJUkFnQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlCQTJBbVFMcHlFTUlFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQk5xTmdJOElBUW9BamdnQW5SQkFDQWdhM1lnREdvaERBc2dDaUFUYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUFwcU5nSThJQVFvQWpnZ0FuUkJBQ0FqYTNZZ0Myb2hDd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lBa0VBSUFaQkdIWWlBeUFFS0FJOGFpSUthM1lnQTBFQ2RFR2dIV29vQWdCeElBWkIvLzhEY1dvMkFrd2dCQ0FLSUExQkdIWWlBMm9pQmpZQ1BDQUVJQU5CQW5SQm9CMXFLQUlBSUFKQkFDQUdhM1p4SUExQi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ0pCR0hZaUF5QUVLQUk4YWlJR05nSThJQVFnQTBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUFacmRuRWdBa0gvL3dOeGFqWUNWQUpBQWtBQ1FDQUVLQUxjQVNJRElBUkI4QUJxSUFoQkIzRkJER3hxSWhNb0FnQWlFV29pSXlBWFN3MEFJQWNnRXlnQ0JDSU5JQkZxSWdwcUlDRkxEUUFnQ2tFZ2FpQVdJQWRyVFEwQkN5QUVJQk1vQWdnMkFoZ2dCQ0FUS1FJQU53TVFJQWNnRmlBRVFSQnFJQVJCM0FGcUlCY2dFaUFZSUJvUUh5RUtEQUVMSUFjZ0VXb2hBaUFUS0FJSUlRWWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQUpBSUJGQkVVa05BQ0FISUFNcEFCQTNBQkFnQnlBREtRQVlOd0FZSUJGQkVHdEJFVWdOQUNBRFFSQnFJUU1nQjBFZ2FpRVJBMEFnRVNBREtRQVFOd0FBSUJFZ0F5a0FHRGNBQ0NBUklBTXBBQ0EzQUJBZ0VTQURLUUFvTndBWUlBTkJJR29oQXlBUlFTQnFJaEVnQWtrTkFBc0xJQUlnQm1zaEF5QUVJQ00yQXR3QklBSWdFbXNnQmtrRVFDQUdJQUlnR0d0TERRY2dHaUFhSUFNZ0Vtc2lBMm9pRVNBTmFrOEVRQ0FDSUJFZ0RSQUtHZ3dDQ3lBRElBMXFJUTBnQWlBUlFRQWdBMnNRQ2lBRGF5RUNJQkloQXdzZ0JrRVFUd1JBSUFJZ0F5a0FBRGNBQUNBQ0lBTXBBQWczQUFnZ0RVRVJTQTBCSUFJZ0RXb2hCaUFDUVJCcUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFHU1EwQUN3d0JDd0pBSUFaQkIwMEVRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURJQVpCQW5RaUJrSEFIbW9vQWdCcUlnTW9BQUEyQUFRZ0F5QUdRZUFlYWlnQ0FHc2hBd3dCQ3lBQ0lBTXBBQUEzQUFBTElBMUJDVWtOQUNBQ0lBMXFJUkVnQWtFSWFpSUdJQU5CQ0dvaUEydEJEMHdFUUFOQUlBWWdBeWtBQURjQUFDQURRUWhxSVFNZ0JrRUlhaUlHSUJGSkRRQU1BZ3NBQ3lBR0lBTXBBQUEzQUFBZ0JpQURLUUFJTndBSUlBMUJHVWdOQUNBQ1FSaHFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBUlNRMEFDd3NnQ2tHSWYwc0VRQ0FLSVFrTUJnVWdFeUFRTmdJSUlCTWdERFlDQkNBVElBczJBZ0FnQ0VFQmFpRUlJQWNnQ21vaEJ5QUxJQmxxSUF4cUlSa01BZ3NBQ3dzZ0NDQVBTQTBESUFnZ0gyc2hCZ05BQWtBZ0JpQVBUZ1JBUVFBaEF3TkFJQU5CQTBZTkFpQUZJQU5CQW5RaUFtcEJyTkFCYWlBQ0lBUnFLQUprTmdJQUlBTkJBV29oQXd3QUN3QUxBa0FDUUFKQUlBUW9BdHdCSWdNZ0JFSHdBR29nQmtFSGNVRU1iR29pQ0NnQ0FDSU1haUlRSUJkTERRQWdCeUFJS0FJRUlnc2dER29pQ21vZ0lVc05BQ0FLUVNCcUlCWWdCMnRORFFFTElBUWdDQ2dDQ0RZQ0tDQUVJQWdwQWdBM0F5QWdCeUFXSUFSQklHb2dCRUhjQVdvZ0Z5QVNJQmdnR2hBZklRb01BUXNnQnlBTWFpRUNJQWdvQWdnaENDQUhJQU1wQUFBM0FBQWdCeUFES1FBSU53QUlBa0FnREVFUlNRMEFJQWNnQXlrQUVEY0FFQ0FISUFNcEFCZzNBQmdnREVFUWEwRVJTQTBBSUFOQkVHb2hBeUFIUVNCcUlRd0RRQ0FNSUFNcEFCQTNBQUFnRENBREtRQVlOd0FJSUF3Z0F5a0FJRGNBRUNBTUlBTXBBQ2czQUJnZ0EwRWdhaUVESUF4QklHb2lEQ0FDU1EwQUN3c2dBaUFJYXlFRElBUWdFRFlDM0FFZ0FpQVNheUFJU1FSQUlBZ2dBaUFZYTBzTkJ5QWFJQm9nQXlBU2F5SURhaUlNSUF0cVR3UkFJQUlnRENBTEVBb2FEQUlMSUFNZ0Myb2hDeUFDSUF4QkFDQURheEFLSUFOcklRSWdFaUVEQ3lBSVFSQlBCRUFnQWlBREtRQUFOd0FBSUFJZ0F5a0FDRGNBQ0NBTFFSRklEUUVnQWlBTGFpRUlJQUpCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQUlnQXkwQUFEb0FBQ0FDSUFNdEFBRTZBQUVnQWlBRExRQUNPZ0FDSUFJZ0F5MEFBem9BQXlBQ0lBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFJZ0F5a0FBRGNBQUFzZ0MwRUpTUTBBSUFJZ0Myb2hEQ0FDUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnREVrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0MwRVpTQTBBSUFKQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF4SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3R0JTQUdRUUZxSVFZZ0J5QUthaUVIREFJTEFBc0xJQVFvQXR3QklRTUxRYnAvSVFrZ0Z5QURheUlDSUJZZ0IydExEUUlnQndSL0lBY2dBeUFDRUFJZ0Ftb0ZRUUFMSUE1cklRa01BZ3NnQlVFQU5nS2M2d0VMSUFRZ0JTZ0M4T29CSWdNMkF0d0JJQWtnRG1vaERDQURJQVVvQW9EckFXb2hFQUpBSUE5RkJFQWdEaUVHREFFTElBVW9BcmpwQVNFTklBVW9BclRwQVNFVElBVW9BckRwQVNFU0lBVkJBVFlDaE9vQlFRQWhBd05BSUFOQkEwY0VRQ0FFSUFOQkFuUWlBbW9nQWlBRmFrR3MwQUZxS0FJQU5nS2NBU0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRZkFBYWlJQ0lBY2dCaEFOUVloL1N3MEJJREVnQWlBRktBSUFFQjRnTUNBQ0lBVW9BZ2dRSGlBdklBSWdCU2dDQkJBZUlBeEJJR3NoR0NBT0lRWURRQ0FFS0FLSUFTQUVLQUtFQVVFRGRHb3BBZ0FpUUtjaUNrRVFkaUlaUWY4QmNTRUxJQVFvQXBnQklBUW9BcFFCUVFOMGFpa0NBQ0pCcHlJV1FSQjJJaDlCL3dGeElSb2dCQ2dDa0FFZ0JDZ0NqQUZCQTNScUtRSUFJa0pDSUlpbklRY2dRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ0VIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ2RDSUlheUlSSUFJZ0FpQVJTeHNpRnlBSWFqWUNkQ0FISUFRb0FuQWdDSFJCQUNBWGEzWWdBaUFYYXlJWGRHb2hDQ0FFUWZBQWFoQVBHaUFDSUJGTkRRRWdCQ0FFS0FKMElnSWdGMm8yQW5RZ0JDZ0NjQ0FDZEVFQUlCZHJkaUFJYWlFSURBRUxJQVFnQWlBRUtBSjBJaEZxTmdKMElBUW9BbkFnRVhSQkFDQUlhM1lnQjJvaENDQUVRZkFBYWhBUEdnc2dCQ2tDbkFFaFJDQUVJQWcyQXB3QklBUWdSRGNDb0FFTUFRc0NRQ0FDUlFSQUlBTUVRQ0FFS0FLY0FTRUlEQU1MSUFRb0FxQUJJUWdNQVFzZ0JDQUVLQUowSWdKQkFXbzJBblFDZnlBSElBTkZhaUFFS0FKd0lBSjBRUjkyYWlJQ1FRTkdCRUFnQkNnQ25BRkJBV3NNQVFzZ0FrRUNkQ0FFYWlnQ25BRUxJZ2RGSUFkcUlRZ2dBa0VCUndSQUlBUWdCQ2dDb0FFMkFxUUJDd3NnQkNBRUtBS2NBVFlDb0FFZ0JDQUlOZ0tjQVF1bklRSWdRVUtBZ1B3SGcxQkZCRUFnQkNBRUtBSjBJZ2NnR21vMkFuUWdCQ2dDY0NBSGRFRUFJQjlyZGlBQ2FpRUNDeUFMSUJwcVFSUlBCRUFnQkVId0FHb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDZENJSElBdHFOZ0owSUFRb0FuQWdCM1JCQUNBWmEzWWdBMm9oQXdzZ0JFSHdBR29RRHhvZ0JDQUVLQUp3SWdkQkFDQUtRUmgySWdzZ0JDZ0NkR29pR210MklBdEJBblJCb0IxcUtBSUFjU0FLUWYvL0EzRnFOZ0tFQVNBRUlCb2dGa0VZZGlJS2FpSUxOZ0owSUFRZ0NrRUNkRUdnSFdvb0FnQWdCMEVBSUF0cmRuRWdGa0gvL3dOeGFqWUNsQUVnQkVId0FHb1FEeG9nQkNCQ3B5SUhRUmgySWdvZ0JDZ0NkR29pQ3pZQ2RDQUVJQXBCQW5SQm9CMXFLQUlBSUFRb0FuQkJBQ0FMYTNaeElBZEIvLzhEY1dvMkFvd0JJQVFnQXpZQ09DQUVJQUkyQWp3Z0JDQUlOZ0pBQWtBQ1FBSkFJQVFvQXR3Qklnc2dBMm9pRmlBUVN3MEFJQVlnQWlBRGFpSUthaUFZU3cwQUlBcEJJR29nRENBR2EwME5BUXNnQkNBRVFVQnJLQUlBTmdJSUlBUWdCQ2tET0RjREFDQUdJQXdnQkNBRVFkd0JhaUFRSUJJZ0V5QU5FQjhoQ2d3QkN5QURJQVpxSVFjZ0JpQUxLUUFBTndBQUlBWWdDeWtBQ0RjQUNBSkFJQU5CRVVrTkFDQUdJQXNwQUJBM0FCQWdCaUFMS1FBWU53QVlJQU5CRUd0QkVVZ05BQ0FMUVJCcUlRTWdCa0VnYWlFTEEwQWdDeUFES1FBUU53QUFJQXNnQXlrQUdEY0FDQ0FMSUFNcEFDQTNBQkFnQ3lBREtRQW9Od0FZSUFOQklHb2hBeUFMUVNCcUlnc2dCMGtOQUFzTElBY2dDR3NoQXlBRUlCWTJBdHdCSUFjZ0Vtc2dDRWtFUUNBSUlBY2dFMnRMRFFRZ0RTQU5JQU1nRW1zaUEyb2lDeUFDYWs4RVFDQUhJQXNnQWhBS0dnd0NDeUFISUF0QkFDQURheEFLSUFRZ0FpQURhaUlDTmdJOElBTnJJUWNnRWlFREN5QUlRUkJQQkVBZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNDQUNRUkZJRFFFZ0FpQUhhaUVJSUFkQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFjZ0F5MEFBRG9BQUNBSElBTXRBQUU2QUFFZ0J5QURMUUFDT2dBQ0lBY2dBeTBBQXpvQUF5QUhJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBY2dBeWtBQURjQUFBc2dBa0VKU1EwQUlBSWdCMm9oQ3lBSFFRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0Mwa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dBa0VaU0EwQUlBZEJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBdEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0RDeUFHSUFwcUlRWWdCRUh3QUdvUUR5RURJQTlCQVdzaUR3MEFDMEVBSVFJZ0EwRUNTUTBCQTBBZ0FrRURSd1JBSUFVZ0FrRUNkQ0lEYWtHczBBRnFJQU1nQkdvb0Fwd0JOZ0lBSUFKQkFXb2hBZ3dCQ3dzZ0JDZ0MzQUVoQXd0QnVuOGhDU0FRSUFOcklnSWdEQ0FHYTBzTkFDQUdCSDhnQmlBRElBSVFBaUFDYWdWQkFBc2dEbXNoQ1FzZ0NVR0lmMHNOQmdzQ1FDQUZLQUxzNmdGRkRRQWdCU0FGS1FPSTZnRWdDYTE4TndPSTZnRUNRQ0FGS0FMUTZnRWlBaUFKYWlJSVFSOU5CRUFnRGtVTkFTQUNJQ0pxSUE0Z0NSQUNHaUFGS0FMUTZnRWdDV29oQ0F3QkN5QU9JUU1nQWdSQUlBSWdJbW9nQTBFZ0lBSnJFQUlhSUFVb0F0RHFBU0VDSUFWQkFEWUMwT29CSUFVZ0JTa0RrT29CSUFVcEFMRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEa09vQklBVWdCU2tEbU9vQklBVXBBTGpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG1Pb0JJQVVnQlNrRG9Pb0JJQVVwQU1EcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RvT29CSUFVZ0JTa0RxT29CSUFVcEFNanFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEcU9vQklBTWdBbXRCSUdvaEF3c2dDU0FPYWlJQ0lBTkJJR3BQQkVBZ0FrRWdheUVHSUFVcEE2anFBU0UvSUFVcEE2RHFBU0ZBSUFVcEE1anFBU0ZCSUFVcEE1RHFBU0ZDQTBBZ0F5a0FHRUxQMXRPKzBzZXIyVUorSUQ5OFFoK0pRb2VWcjYrWXR0NmJubjkrSVQ4Z0F5a0FFRUxQMXRPKzBzZXIyVUorSUVCOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVBZ0F5a0FDRUxQMXRPKzBzZXIyVUorSUVGOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVFZ0F5a0FBRUxQMXRPKzBzZXIyVUorSUVKOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVJZ0EwRWdhaUlESUFaTkRRQUxJQVVnUHpjRHFPb0JJQVVnUURjRG9Pb0JJQVVnUVRjRG1Pb0JJQVVnUWpjRGtPb0JDeUFDSUFOTkRRRWdJaUFESUFJZ0Eyc2lDQkFDR2dzZ0JTQUlOZ0xRNmdFTElEVWdGV3NoQXlBVklCdHFJUUlnQ1NBT2FpRU9JQVFvQWpCRkRRQUxJQ2twQXdBaVAwSi9VU0EvSUE0Z0hXdXNVWEpGQkVCQmJDRUpEQVlMSUFVb0F1RHBBUVJBUVdvaENTQURRUVJKRFFZZ0JTZ0M2T29CUlFSQUlDSWdCU2dDME9vQmFpRUtBbjRnQlNrRGlPb0JJajlDSUZvRVFDQUZLUU9ZNmdFaVFFSUhpU0FGS1FPUTZnRWlRVUlCaVh3Z0JTa0RvT29CSWtKQ0RJbDhJQVVwQTZqcUFTSkRRaEtKZkNCQlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUVCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnUWtMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0JEUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlEQUVMSUFVcEE2RHFBVUxGejlteThlVzY2aWQ4Q3lBL2ZDRS9JQ0loQmdOQUlBb2dCa0VJYWlJSFR3UkFJQVlwQUFCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZmlBL2hVSWJpVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTRS9JQWNoQmd3QkN3c0NRQ0FLSUFaQkJHb2lDRWtFUUNBR0lRZ01BUXNnQmpVQUFFS0hsYSt2bUxiZW01NS9maUEvaFVJWGlVTFAxdE8rMHNlcjJVSitRdm56M2ZHWjlwbXJGbndoUHdzRFFDQUlJQXBKQkVBZ0NERUFBRUxGejlteThlVzY2aWQrSUQrRlFndUpRb2VWcjYrWXR0NmJubjkrSVQ4Z0NFRUJhaUVJREFFTEN5QUNLQUFBSUQ5Q0lZZ2dQNFZDejliVHZ0TEhxOWxDZmlJL1FoMklJRCtGUXZuejNmR1o5cG1yRm40aVAwSWdpQ0EvaGFkSERRY0xJQU5CQkdzaEF5QUNRUVJxSVFJTElBNGdIV3NpQ1VHSmYwOE5CQ0FCSUFscklRRWdDU0FkYWlFZFFRRWhQZ3dCQ3d0QnVIOGhCeUFERFFRZ0hTQUFheUVIREFRTFFXd2hDUXdCQzBHNGZ5RUpDMEc0ZnlFSElBbEJka1lnUG5FTkFRc2dDU0VIQ3lnQ0FBMEFJQVZCL09vQmFpZ0NBQ0VCSUFWQitPb0JhaWdDQUNFQUlBVVFHQ0FGS0FLdzZ3RWdBQ0FCRUJNZ0JVRUFOZ0t3NndFZ0JTZ0NwT3NCSWdJRVFBSkFBa0FDUUFKQUlBSW9BZ0FpQXdSQUlBQkZEUUlnQVNBRElBQVJBZ0FNQVFzZ0FFVU5BZ3NnQVNBQ0lBQVJBZ0FNQWdzZ0F4QUdDeUFDRUFZTElBVkJBRFlDcE9zQkN5QUFCRUFnQVNBRklBQVJBZ0FNQVFzZ0JSQUdDeUFFUWVBQmFpUUFJQWNMQzZnVkNRQkJpQWdMRFFFQUFBQUJBQUFBQWdBQUFBSUFRYUFJQzdNR0FRQUFBQUVBQUFBQ0FBQUFBZ0FBQUNZQUFBQ0NBQUFBSVFVQUFFb0FBQUJuQ0FBQUpnQUFBTUFCQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBS1FBQUFDd0NBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFMd0FBQU1vQ0FBQ0FBQUFBaWdVQUFFb0FBQUNFQ1FBQU5RQUFBSE1EQUFDQUFBQUFuUVVBQUVvQUFBQ2dDUUFBUFFBQUFJRURBQUNBQUFBQTZ3VUFBRXNBQUFBK0NnQUFSQUFBQUo0REFBQ0FBQUFBVFFZQUFFc0FBQUNxQ2dBQVN3QUFBTE1EQUFDQUFBQUF3UVlBQUUwQUFBQWZEUUFBVFFBQUFGTUVBQUNBQUFBQUl3Z0FBRkVBQUFDbUR3QUFWQUFBQUprRUFBQ0FBQUFBU3drQUFGY0FBQUN4RWdBQVdBQUFBTm9FQUFDQUFBQUFid2tBQUYwQUFBQWpGQUFBVkFBQUFFVUZBQUNBQUFBQVZBb0FBR29BQUFDTUZBQUFhZ0FBQUs4RkFBQ0FBQUFBZGdrQUFId0FBQUJPRUFBQWZBQUFBTklDQUFDQUFBQUFZd2NBQUpFQUFBQ1FCd0FBa2dBQUFBQUFBQUFCQUFBQUFRQUFBQVVBQUFBTkFBQUFIUUFBQUQwQUFBQjlBQUFBL1FBQUFQMEJBQUQ5QXdBQS9RY0FBUDBQQUFEOUh3QUEvVDhBQVAxL0FBRDkvd0FBL2Y4QkFQMy9Bd0Q5L3djQS9mOFBBUDMvSHdEOS96OEEvZjkvQVAzLy93RDkvLzhCL2YvL0EvMy8vd2Y5Ly84UC9mLy9ILzMvL3ovOS8vOS9BQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWxBQUFBSndBQUFDa0FBQUFyQUFBQUx3QUFBRE1BQUFBN0FBQUFRd0FBQUZNQUFBQmpBQUFBZ3dBQUFBTUJBQUFEQWdBQUF3UUFBQU1JQUFBREVBQUFBeUFBQUFOQUFBQURnQUFBQXdBQkFFSGdEd3RSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBVUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUVIRUVBdUxBUUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFTQUFBQUZBQUFBQllBQUFBWUFBQUFIQUFBQUNBQUFBQW9BQUFBTUFBQUFFQUFBQUNBQUFBQUFBRUFBQUFDQUFBQUJBQUFBQWdBQUFBUUFBQUFJQUFBQUVBQUFBQ0FBQUFBQUFFQVFaQVNDK1lFQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFCQUFBQUJBQUFBQWdBQUFBQUFBQUFBUUFCQVFZQUFBQUFBQUFFQUFBQUFCQUFBQVFBQUFBQUlBQUFCUUVBQUFBQUFBQUZBd0FBQUFBQUFBVUVBQUFBQUFBQUJRWUFBQUFBQUFBRkJ3QUFBQUFBQUFVSkFBQUFBQUFBQlFvQUFBQUFBQUFGREFBQUFBQUFBQVlPQUFBQUFBQUJCUkFBQUFBQUFBRUZGQUFBQUFBQUFRVVdBQUFBQUFBQ0JSd0FBQUFBQUFNRklBQUFBQUFBQkFVd0FBQUFJQUFHQlVBQUFBQUFBQWNGZ0FBQUFBQUFDQVlBQVFBQUFBQUtCZ0FFQUFBQUFBd0dBQkFBQUNBQUFBUUFBQUFBQUFBQUJBRUFBQUFBQUFBRkFnQUFBQ0FBQUFVRUFBQUFBQUFBQlFVQUFBQWdBQUFGQndBQUFBQUFBQVVJQUFBQUlBQUFCUW9BQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBSUFBQkJSQUFBQUFBQUFFRkVnQUFBQ0FBQVFVV0FBQUFBQUFDQlJnQUFBQWdBQU1GSUFBQUFBQUFBd1VvQUFBQUFBQUdCRUFBQUFBUUFBWUVRQUFBQUNBQUJ3V0FBQUFBQUFBSkJnQUNBQUFBQUFzR0FBZ0FBREFBQUFRQUFBQUFFQUFBQkFFQUFBQWdBQUFGQWdBQUFDQUFBQVVEQUFBQUlBQUFCUVVBQUFBZ0FBQUZCZ0FBQUNBQUFBVUlBQUFBSUFBQUJRa0FBQUFnQUFBRkN3QUFBQ0FBQUFVTUFBQUFBQUFBQmc4QUFBQWdBQUVGRWdBQUFDQUFBUVVVQUFBQUlBQUNCUmdBQUFBZ0FBSUZIQUFBQUNBQUF3VW9BQUFBSUFBRUJUQUFBQUFBQUJBR0FBQUJBQUFBRHdZQWdBQUFBQUFPQmdCQUFBQUFBQTBHQUNBQVFZQVhDNGNDQVFBQkFRVUFBQUFBQUFBRkFBQUFBQUFBQmdROUFBQUFBQUFKQmYwQkFBQUFBQThGL1g4QUFBQUFGUVg5L3g4QUFBQURCUVVBQUFBQUFBY0VmUUFBQUFBQURBWDlEd0FBQUFBU0JmMy9Bd0FBQUJjRi9mOS9BQUFBQlFVZEFBQUFBQUFJQlAwQUFBQUFBQTRGL1Q4QUFBQUFGQVg5L3c4QUFBQUNCUUVBQUFBUUFBY0VmUUFBQUFBQUN3WDlCd0FBQUFBUkJmMy9BUUFBQUJZRi9mOC9BQUFBQkFVTkFBQUFFQUFJQlAwQUFBQUFBQTBGL1I4QUFBQUFFd1g5L3djQUFBQUJCUUVBQUFBUUFBWUVQUUFBQUFBQUNnWDlBd0FBQUFBUUJmMy9BQUFBQUJ3Ri9mLy9Ed0FBR3dYOS8vOEhBQUFhQmYzLy93TUFBQmtGL2YvL0FRQUFHQVg5Ly84QVFaQVpDNFlFQVFBQkFRWUFBQUFBQUFBR0F3QUFBQUFBQUFRRUFBQUFJQUFBQlFVQUFBQUFBQUFGQmdBQUFBQUFBQVVJQUFBQUFBQUFCUWtBQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBQUFBQUJoQUFBQUFBQUFBR0V3QUFBQUFBQUFZV0FBQUFBQUFBQmhrQUFBQUFBQUFHSEFBQUFBQUFBQVlmQUFBQUFBQUFCaUlBQUFBQUFBRUdKUUFBQUFBQUFRWXBBQUFBQUFBQ0JpOEFBQUFBQUFNR093QUFBQUFBQkFaVEFBQUFBQUFIQm9NQUFBQUFBQWtHQXdJQUFCQUFBQVFFQUFBQUFBQUFCQVVBQUFBZ0FBQUZCZ0FBQUFBQUFBVUhBQUFBSUFBQUJRa0FBQUFBQUFBRkNnQUFBQUFBQUFZTUFBQUFBQUFBQmc4QUFBQUFBQUFHRWdBQUFBQUFBQVlWQUFBQUFBQUFCaGdBQUFBQUFBQUdHd0FBQUFBQUFBWWVBQUFBQUFBQUJpRUFBQUFBQUFFR0l3QUFBQUFBQVFZbkFBQUFBQUFDQmlzQUFBQUFBQU1HTXdBQUFBQUFCQVpEQUFBQUFBQUZCbU1BQUFBQUFBZ0dBd0VBQUNBQUFBUUVBQUFBTUFBQUJBUUFBQUFRQUFBRUJRQUFBQ0FBQUFVSEFBQUFJQUFBQlFnQUFBQWdBQUFGQ2dBQUFDQUFBQVVMQUFBQUFBQUFCZzRBQUFBQUFBQUdFUUFBQUFBQUFBWVVBQUFBQUFBQUJoY0FBQUFBQUFBR0dnQUFBQUFBQUFZZEFBQUFBQUFBQmlBQUFBQUFBQkFHQXdBQkFBQUFEd1lEZ0FBQUFBQU9CZ05BQUFBQUFBMEdBeUFBQUFBQURBWURFQUFBQUFBTEJnTUlBQUFBQUFvR0F3UUFRYVFkQzlrQkFRQUFBQU1BQUFBSEFBQUFEd0FBQUI4QUFBQS9BQUFBZndBQUFQOEFBQUQvQVFBQS93TUFBUDhIQUFEL0R3QUEveDhBQVA4L0FBRC9md0FBLy84QUFQLy9BUUQvL3dNQS8vOEhBUC8vRHdELy94OEEvLzgvQVAvL2Z3RC8vLzhBLy8vL0FmLy8vd1AvLy84SC8vLy9ELy8vL3gvLy8vOC8vLy8vZndBQUFBQUJBQUFBQWdBQUFBUUFBQUFBQUFBQUFnQUFBQVFBQUFBSUFBQUFBQUFBQUFFQUFBQUNBQUFBQVFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QkJnQjhMQTRBUkFRPT0iO3ZhciB5ZT1uZXcgUEEsbWU9ITE7YXN5bmMgZnVuY3Rpb24gQ3IoQSx0LGUpe2xldCBJPW51bGw7dHlwZW9mIEEhPSJzdHJpbmciP0k9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP0k9QTpJPWAke3R9LyR7QX1gLEkuZW5kc1dpdGgoIi5qcyIpJiYoST1JLnN1YnN0cmluZygwLEkubGVuZ3RoLTMpKSxJLmVuZHNXaXRoKCIud2FzbSIpJiYoST1JLnN1YnN0cmluZygwLEkubGVuZ3RoLTUpKSxJLmVuZHNXaXRoKCIud2FzbS56c3QiKSYmKEk9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC05KSk7bGV0IHI9YCR7SX0ud2FzbWAsZz1hd2FpdCB4QS5nZXQoYCR7cn0uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOmV9KTttZXx8KGF3YWl0IHllLmluaXQoKSxtZT0hMCk7bGV0IG49eWUuZGVjb2RlKG5ldyBVaW50OEFycmF5KGcuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke0l9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6bn0pfXZhciB3ZT1Dcjt2YXIgakE9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBCcihBLHQsZSl7bGV0IEk9QSxyPUEsZz1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihJPW5ldyBVUkwoQS5ocmVmKSxyPUkuaHJlZiksakEuaGFzKHIpP2c9YXdhaXQgakEuZ2V0KHIpOihqQS5zZXQocix3ZShJLHQsZSkpLGc9YXdhaXQgakEuZ2V0KHIpKSxnfXZhciBwZT1Ccjt2YXIgYXI9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsUG9pbnRTZXQ6IlBvaW50U2V0IixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLFRyYW5zZm9ybUxpc3Q6IlRyYW5zZm9ybUxpc3QiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LGQ9YXI7dmFyIFFyPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sVT1Rcjt2YXIgRXI9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFY9RXI7ZnVuY3Rpb24gY3IoQSx0KXtsZXQgZT1udWxsO3N3aXRjaChBKXtjYXNlIFUuVUludDg6e2U9bmV3IFVpbnQ4QXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDg6e2U9bmV3IEludDhBcnJheSh0KTticmVha31jYXNlIFUuVUludDE2OntlPW5ldyBVaW50MTZBcnJheSh0KTticmVha31jYXNlIFUuSW50MTY6e2U9bmV3IEludDE2QXJyYXkodCk7YnJlYWt9Y2FzZSBVLlVJbnQzMjp7ZT1uZXcgVWludDMyQXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDMyOntlPW5ldyBJbnQzMkFycmF5KHQpO2JyZWFrfWNhc2UgVS5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP2U9bmV3IEJpZ1VpbnQ2NEFycmF5KHQpOmU9bmV3IFVpbnQ4QXJyYXkodCk7YnJlYWt9Y2FzZSBVLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP2U9bmV3IEJpZ0ludDY0QXJyYXkodCk6ZT1uZXcgVWludDhBcnJheSh0KTticmVha31jYXNlIFYuRmxvYXQzMjp7ZT1uZXcgRmxvYXQzMkFycmF5KHQpO2JyZWFrfWNhc2UgVi5GbG9hdDY0OntlPW5ldyBGbG9hdDY0QXJyYXkodCk7YnJlYWt9Y2FzZSJudWxsIjp7ZT1udWxsO2JyZWFrfWNhc2UgbnVsbDp7ZT1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIGV9dmFyIHE9Y3I7dmFyIFJlPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLFNlPW5ldyBUZXh0RW5jb2RlcixGZT1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gZnIoQSx0KXtsZXQgZT17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxJPUEuZnNfb3Blbih0LGUuZmxhZ3MpLGc9QS5mc19zdGF0KHQpLnNpemUsbz1udWxsO1JlP289bmV3IFNoYXJlZEFycmF5QnVmZmVyKGcpOm89bmV3IEFycmF5QnVmZmVyKGcpO2xldCBuPW5ldyBVaW50OEFycmF5KG8pO3JldHVybiBBLmZzX3JlYWQoSSxuLDAsZywwKSxBLmZzX2Nsb3NlKEkpLG59ZnVuY3Rpb24gTmUoQSx0LGUpe2xldCBJPW51bGw7UmU/ST1uZXcgU2hhcmVkQXJyYXlCdWZmZXIoZSk6ST1uZXcgQXJyYXlCdWZmZXIoZSk7bGV0IHI9bmV3IFVpbnQ4QXJyYXkoSSksZz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsdCxlKTtyZXR1cm4gci5zZXQoZykscn1mdW5jdGlvbiB3KEEsdCxlLEkpe2xldCByPTA7cmV0dXJuIHQhPT1udWxsJiYocj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLEksdC5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheSh0LmJ1ZmZlcikscikpLHJ9ZnVuY3Rpb24geChBLHQsZSl7bGV0IEk9SlNPTi5zdHJpbmdpZnkodCkscj1BLmxlbmd0aEJ5dGVzVVRGOChJKSsxLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHJdKTtBLnN0cmluZ1RvVVRGOChJLGcscil9ZnVuY3Rpb24gUyhBLHQsZSxJKXtsZXQgcj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGVdKSxnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZV0pLG89TmUoQSxyLGcpO3JldHVybiBxKEksby5idWZmZXIpfWZ1bmN0aW9uIHVBKEEsdCl7bGV0IGU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCx0XSksST1BLlVURjhUb1N0cmluZyhlKTtyZXR1cm4gSlNPTi5wYXJzZShJKX1mdW5jdGlvbiBscihBLHQsZSxJKXtJIT1udWxsJiZJLmxlbmd0aD4wJiZJLmZvckVhY2goZnVuY3Rpb24oQixzKXtzd2l0Y2goQi50eXBlKXtjYXNlIGQuVGV4dFN0cmVhbTp7bGV0IEM9U2UuZW5jb2RlKEIuZGF0YS5kYXRhKSxsPXcoQSxDLHMsMCksYT17c2l6ZTpDLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWB9O3goQSxhLHMpO2JyZWFrfWNhc2UgZC5Kc29uQ29tcGF0aWJsZTp7bGV0IEM9U2UuZW5jb2RlKEpTT04uc3RyaW5naWZ5KEIuZGF0YSkpLGw9dyhBLEMscywwKSxhPXtzaXplOkMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YH07eChBLGEscyk7YnJlYWt9Y2FzZSBkLkJpbmFyeVN0cmVhbTp7bGV0IEM9Qi5kYXRhLmRhdGEsbD13KEEsQyxzLDApLGE9e3NpemU6Qy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gfTt4KEEsYSxzKTticmVha31jYXNlIGQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKEIuZGF0YS5wYXRoLEIuZGF0YS5kYXRhKTticmVha31jYXNlIGQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUoQi5kYXRhLnBhdGgsQi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgZC5JbWFnZTp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMuZGF0YSxzLDApLGE9dyhBLEMuZGlyZWN0aW9uLHMsMSksUT10eXBlb2YgQy5tZXRhZGF0YT8uZW50cmllczwidSI/QXJyYXkuZnJvbShDLm1ldGFkYXRhLmVudHJpZXMoKSk6W10sZj17aW1hZ2VUeXBlOkMuaW1hZ2VUeXBlLG5hbWU6Qy5uYW1lLG9yaWdpbjpDLm9yaWdpbixzcGFjaW5nOkMuc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHthfWAsc2l6ZTpDLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxtZXRhZGF0YTpRfTt4KEEsZixzKTticmVha31jYXNlIGQuTWVzaDp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMucG9pbnRzLHMsMCksYT13KEEsQy5jZWxscyxzLDEpLFE9dyhBLEMucG9pbnREYXRhLHMsMiksZj13KEEsQy5jZWxsRGF0YSxzLDMpLGM9e21lc2hUeXBlOkMubWVzaFR5cGUsbmFtZTpDLm5hbWUsbnVtYmVyT2ZQb2ludHM6Qy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWAsbnVtYmVyT2ZDZWxsczpDLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHthfWAsY2VsbEJ1ZmZlclNpemU6Qy5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOkMubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOkMubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTt4KEEsYyxzKTticmVha31jYXNlIGQuUG9pbnRTZXQ6e2xldCBDPUIuZGF0YSxsPXcoQSxDLnBvaW50cyxzLDApLGE9dyhBLEMucG9pbnREYXRhLHMsMSksUT17cG9pbnRTZXRUeXBlOkMucG9pbnRTZXRUeXBlLG5hbWU6Qy5uYW1lLG51bWJlck9mUG9pbnRzOkMubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gLG51bWJlck9mUG9pbnRQaXhlbHM6Qy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2F9YH07eChBLFEscyk7YnJlYWt9Y2FzZSBkLlRyYW5zZm9ybUxpc3Q6e2xldCBDPUIuZGF0YSxsPVtdLGE9MDtDLmZvckVhY2goUT0+e2xldCBmPSIiLGM9IiI7US50cmFuc2Zvcm1UeXBlLnRyYW5zZm9ybVBhcmFtZXRlcml6YXRpb24hPT0iQ29tcG9zaXRlIiYmKGY9YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt3KEEsUS5maXhlZFBhcmFtZXRlcnMscyxhKX1gLGErPTEsYz1gZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3coQSxRLnBhcmFtZXRlcnMscyxhKX1gLGErPTEpO2xldCBEPXt0cmFuc2Zvcm1UeXBlOlEudHJhbnNmb3JtVHlwZSxudW1iZXJPZkZpeGVkUGFyYW1ldGVyczpRLm51bWJlck9mRml4ZWRQYXJhbWV0ZXJzLG51bWJlck9mUGFyYW1ldGVyczpRLm51bWJlck9mUGFyYW1ldGVycyxuYW1lOlEubmFtZSxpbnB1dFNwYWNlTmFtZTpRLmlucHV0U3BhY2VOYW1lLG91dHB1dFNwYWNlTmFtZTpRLm91dHB1dFNwYWNlTmFtZSxwYXJhbWV0ZXJzOmMsZml4ZWRQYXJhbWV0ZXJzOmZ9O2wucHVzaChEKX0pLHgoQSxsLHMpO2JyZWFrfWNhc2UgZC5Qb2x5RGF0YTp7bGV0IEM9Qi5kYXRhLGw9dyhBLEMucG9pbnRzLHMsMCksYT13KEEsQy52ZXJ0aWNlcyxzLDEpLFE9dyhBLEMubGluZXMscywyKSxmPXcoQSxDLnBvbHlnb25zLHMsMyksYz13KEEsQy50cmlhbmdsZVN0cmlwcyxzLDQpLEQ9dyhBLEMucG9pbnREYXRhLHMsNSksRj13KEEsQy5wb2ludERhdGEscyw2KSx5PXtwb2x5RGF0YVR5cGU6Qy5wb2x5RGF0YVR5cGUsbmFtZTpDLm5hbWUsbnVtYmVyT2ZQb2ludHM6Qy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtsfWAsdmVydGljZXNCdWZmZXJTaXplOkMudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7YX1gLGxpbmVzQnVmZmVyU2l6ZTpDLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxwb2x5Z29uc0J1ZmZlclNpemU6Qy5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOkMudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mUG9pbnRQaXhlbHM6Qy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0R9YCxudW1iZXJPZkNlbGxQaXhlbHM6Qy5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtGfWB9O3goQSx5LHMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCByPUEuc3RhY2tTYXZlKCksZz0wO3RyeXtnPUEuY2FsbE1haW4odC5zbGljZSgpKX1jYXRjaChCKXt0aHJvdyB0eXBlb2YgQj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShCKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxCfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUocil9bGV0IG89QS5nZXRNb2R1bGVTdGRvdXQoKSxuPUEuZ2V0TW9kdWxlU3RkZXJyKCksRT1bXTtyZXR1cm4gZSE9bnVsbCYmZS5sZW5ndGg+MCYmZz09PTAmJmUuZm9yRWFjaChmdW5jdGlvbihCLHMpe2xldCBDPW51bGw7c3dpdGNoKEIudHlwZSl7Y2FzZSBkLlRleHRTdHJlYW06e2xldCBhPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksZj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsYSxRKTtDPXtkYXRhOkZlLmRlY29kZShmKX07YnJlYWt9Y2FzZSBkLkpzb25Db21wYXRpYmxlOntsZXQgYT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSxRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLGY9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGEsUSk7Qz1KU09OLnBhcnNlKEZlLmRlY29kZShmKSk7YnJlYWt9Y2FzZSBkLkJpbmFyeVN0cmVhbTp7bGV0IGE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKTtDPXtkYXRhOk5lKEEsYSxRKX07YnJlYWt9Y2FzZSBkLlRleHRGaWxlOntDPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShCLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgZC5CaW5hcnlGaWxlOntDPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6ZnIoQSxCLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgZC5JbWFnZTp7bGV0IGE9dUEoQSxzKTthLmRhdGE9UyhBLHMsMCxhLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxhLmRpcmVjdGlvbj1TKEEscywxLFYuRmxvYXQ2NCksYS5tZXRhZGF0YT1uZXcgTWFwKGEubWV0YWRhdGEpLEM9YTticmVha31jYXNlIGQuTWVzaDp7bGV0IGE9dUEoQSxzKTthLm51bWJlck9mUG9pbnRzPjA/YS5wb2ludHM9UyhBLHMsMCxhLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6YS5wb2ludHM9cShhLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGEubnVtYmVyT2ZDZWxscz4wP2EuY2VsbHM9UyhBLHMsMSxhLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTphLmNlbGxzPXEoYS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGEubnVtYmVyT2ZQb2ludFBpeGVscz4wP2EucG9pbnREYXRhPVMoQSxzLDIsYS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6YS5wb2ludERhdGE9cShhLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZkNlbGxQaXhlbHM+MD9hLmNlbGxEYXRhPVMoQSxzLDMsYS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTphLmNlbGxEYXRhPXEoYS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQz1hO2JyZWFrfWNhc2UgZC5Qb2ludFNldDp7bGV0IGE9dUEoQSxzKTthLm51bWJlck9mUG9pbnRzPjA/YS5wb2ludHM9UyhBLHMsMCxhLnBvaW50U2V0VHlwZS5wb2ludENvbXBvbmVudFR5cGUpOmEucG9pbnRzPXEoYS5wb2ludFNldFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/YS5wb2ludERhdGE9UyhBLHMsMSxhLnBvaW50U2V0VHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6YS5wb2ludERhdGE9cShhLnBvaW50U2V0VHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEM9YTticmVha31jYXNlIGQuVHJhbnNmb3JtTGlzdDp7bGV0IGE9dUEoQSxzKSxRPTA7YS5mb3JFYWNoKChmLGMpPT57Zi50cmFuc2Zvcm1UeXBlLnRyYW5zZm9ybVBhcmFtZXRlcml6YXRpb24hPT0iQ29tcG9zaXRlIiYmKGYubnVtYmVyT2ZGaXhlZFBhcmFtZXRlcnM+MCYmKGFbY10uZml4ZWRQYXJhbWV0ZXJzPVMoQSxzLFEsVi5GbG9hdDY0KSksUSs9MSxmLm51bWJlck9mUGFyYW1ldGVycz4wJiYoYVtjXS5wYXJhbWV0ZXJzPVMoQSxzLFEsZi50cmFuc2Zvcm1UeXBlLnBhcmFtZXRlcnNWYWx1ZVR5cGUpKSxRKz0xKX0pLEM9YTticmVha31jYXNlIGQuUG9seURhdGE6e2xldCBhPXVBKEEscyk7YS5udW1iZXJPZlBvaW50cz4wP2EucG9pbnRzPVMoQSxzLDAsVi5GbG9hdDMyKTphLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LGEudmVydGljZXNCdWZmZXJTaXplPjA/YS52ZXJ0aWNlcz1TKEEscywxLFUuVUludDMyKTphLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxhLmxpbmVzQnVmZmVyU2l6ZT4wP2EubGluZXM9UyhBLHMsMixVLlVJbnQzMik6YS5saW5lcz1uZXcgVWludDMyQXJyYXksYS5wb2x5Z29uc0J1ZmZlclNpemU+MD9hLnBvbHlnb25zPVMoQSxzLDMsVS5VSW50MzIpOmEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LGEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/YS50cmlhbmdsZVN0cmlwcz1TKEEscyw0LFUuVUludDMyKTphLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxhLm51bWJlck9mUG9pbnRQaXhlbHM+MD9hLnBvaW50RGF0YT1TKEEscyw1LGEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTphLnBvaW50RGF0YT1xKGEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYS5udW1iZXJPZkNlbGxQaXhlbHM+MD9hLmNlbGxEYXRhPVMoQSxzLDYsYS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6YS5jZWxsRGF0YT1xKGEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxDPWE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgbD17dHlwZTpCLnR5cGUsZGF0YTpDfTtFLnB1c2gobCl9KSx7cmV0dXJuVmFsdWU6ZyxzdGRvdXQ6byxzdGRlcnI6bixvdXRwdXRzOkV9fXZhciBVZT1scjt2YXIgdXI9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIGRyKEEsdCl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgZT1bXTtmb3IobGV0IEk9MDtJPEEubGVuZ3RoO0krKyl7bGV0IHI9RHIoQVtJXSx0KTtyIT09bnVsbCYmZS5wdXNoKHIpfXJldHVybiBlfWZ1bmN0aW9uIERyKEEsdCl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgZT1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD9lPUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKGU9QSksdXImJmUgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOnQ/ZTplLnNsaWNlKDApfXZhciBHZT1kcjtmdW5jdGlvbiBocihBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIga2U9aHI7ZnVuY3Rpb24geXIoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIExlPXlyO2Z1bmN0aW9uIG1yKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciBiZT1tcjthc3luYyBmdW5jdGlvbiB3cihBLHQsZSxJKXtsZXQgcj1VZShBLHQsZSxJKSxnPVtdO3JldHVybiByLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihvKXtpZihvLnR5cGU9PT1kLkJpbmFyeVN0cmVhbXx8by50eXBlPT09ZC5CaW5hcnlGaWxlKXtsZXQgbj1vLmRhdGE7Zy5wdXNoKG4pfWVsc2UgaWYoby50eXBlPT09ZC5JbWFnZSl7bGV0IG49by5kYXRhO2cucHVzaCguLi5rZShuKSl9ZWxzZSBpZihvLnR5cGU9PT1kLk1lc2gpe2xldCBuPW8uZGF0YTtnLnB1c2goLi4uTGUobikpfWVsc2UgaWYoby50eXBlPT09ZC5Qb2x5RGF0YSl7bGV0IG49by5kYXRhO2cucHVzaCguLi5iZShuKSl9fSksX0EocixHZShnLCEwKSl9dmFyIEplPXdyO3ZhciBwcj17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSx0LGUsSSxyLGcpe2xldCBvPWF3YWl0IHBlKEEsdCxnKTtyZXR1cm4gYXdhaXQgSmUobyxlLEkscil9fTtGQShwcik7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztBSSh0SSk7ZXhwb3J0e29nIGFzIGRvd25zYW1wbGUsZWcgYXMgZG93bnNhbXBsZUJpblNocmluayxJZyBhcyBkb3duc2FtcGxlTGFiZWxJbWFnZSxnZyBhcyBkb3duc2FtcGxlU2lnbWEsYWcgYXMgZ2F1c3NpYW5LZXJuZWxSYWRpdXMsVCBhcyBnZXREZWZhdWx0V2ViV29ya2VyLEcgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsTyBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLHFhIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsQUkgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsR2EgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCxlZSBhcyB2ZXJzaW9ufTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config) diff --git a/packages/downsample/python/itkwasm-downsample-wasi/itkwasm_downsample_wasi/_version.py b/packages/downsample/python/itkwasm-downsample-wasi/itkwasm_downsample_wasi/_version.py index 3c1e9cbd3..29654eec0 100644 --- a/packages/downsample/python/itkwasm-downsample-wasi/itkwasm_downsample_wasi/_version.py +++ b/packages/downsample/python/itkwasm-downsample-wasi/itkwasm_downsample_wasi/_version.py @@ -1 +1 @@ -__version__ = "1.7.1" +__version__ = "1.8.0" diff --git a/packages/downsample/python/itkwasm-downsample-wasi/test/test_downsample.py b/packages/downsample/python/itkwasm-downsample-wasi/test/test_downsample.py index b76b81571..7002444d9 100644 --- a/packages/downsample/python/itkwasm-downsample-wasi/test/test_downsample.py +++ b/packages/downsample/python/itkwasm-downsample-wasi/test/test_downsample.py @@ -2,6 +2,7 @@ from itkwasm_image_io import read_image, write_image from itkwasm_downsample_wasi import downsample +from itkwasm import PixelTypes from .common import test_input_path, test_baseline_path, test_output_path @@ -17,3 +18,17 @@ def test_downsample(): baseline = read_image(test_baseline_file_path) metrics, _, _ = compare_images(downsampled, [baseline,]) assert metrics['almostEqual'] + +def test_downsample_vector_image(): + test_input_file_path = test_input_path / 'apple.jpg' + test_output_file_path = test_output_path / 'downsample-test-apple.mha' + test_baseline_file_path = test_baseline_path / 'apple-downsample.mha' + + image = read_image(test_input_file_path) + image.imageType.pixelType = PixelTypes.VariableLengthVector + downsampled = downsample(image, shrink_factors=[2, 2]) + write_image(downsampled, test_output_file_path) + + baseline = read_image(test_baseline_file_path) + metrics, _, _ = compare_images(downsampled, [baseline,]) + assert metrics['almostEqual'] diff --git a/packages/downsample/python/itkwasm-downsample/itkwasm_downsample/_version.py b/packages/downsample/python/itkwasm-downsample/itkwasm_downsample/_version.py index 3c1e9cbd3..29654eec0 100644 --- a/packages/downsample/python/itkwasm-downsample/itkwasm_downsample/_version.py +++ b/packages/downsample/python/itkwasm-downsample/itkwasm_downsample/_version.py @@ -1 +1 @@ -__version__ = "1.7.1" +__version__ = "1.8.0" diff --git a/packages/downsample/typescript/package.json b/packages/downsample/typescript/package.json index a1d2a5622..a7e6e73e1 100644 --- a/packages/downsample/typescript/package.json +++ b/packages/downsample/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@itk-wasm/downsample", - "version": "1.7.1", + "version": "1.8.0", "description": "Pipelines for downsampling images.", "type": "module", "module": "./dist/index.js",